场景如下:
- 员工 A,新建出库单,选择了某个库存为 10 的库存设备,新建出库明细,出库 6。此时,他因其他事情,没点提交记录按钮!
- 员工 B,在员工 A 没点提交按钮的情况下,也新建出库单,选择了同一个库存为 10 的库存设备,新建出库明细,出库 10。点了提交记录的按钮!
问题就就很明显了,员工 B 触发了出库流程,流程走完,那个库存设备库存 0 了,但此时员工 A 已经新建了出库明细,他可以点提交记录按钮,但点了库存要么为负,要么就报错。
问题就是如何解决多人同步操作某一条记录导致的数据冲突?
这个问题我就不展开说了,知识还是有点价值的。问 ai 也只能得到给表单加锁的地步。
法理逻辑是,先确立谁拥有使用权,再让 TA 决定如何处理该资源。
如何争夺使用权,要定一套公开的机制,比如先来后到,又比如领导优先。
技术方案只是这套逻辑在系统中的映射,而且在功能实现之前,要确保相关人已经认可这个争夺机制。
把明道云的表单当做无状态的数据库表,用工作流硬给他装上有状态的锁
同问怎么解决的
同问,请赐教
是怎么解决得呢。能否分享下
已经解决了,还是设计问题。不过明道云平台底座功能确实扎实就是了。换个平台不见得能解决。
这个问题其实不是系统的问题,其实是人机协作时遇到的问题,但是人不认为是人的问题,认为应该是机器应该帮我考虑到的问题
1.你的场景本身就会遇到这种同时点击出库的场景,但是库存就是不够的,你要想的是库存不够了,应该怎么办,至于是拿一个单的库存不够,你应该给先打开表单的 A,还是先提交表单的 B,这个都能配置。情况不是同时提交,而是,提交了,没有抓到库存,应该怎么办的问题,业务流上应该怎么办,
要点是,提交了,没有抓到库存,你的业务上要怎么办,而不是,要不要让他们两个人,或者更更多的人受到影响,不让他们提交的问题。
你的业务逻辑有这个解决办法了,再到系统上来实现
就是并发和锁的问题而已,要么乐观锁,要么悲观锁,你选
高并发 × 低延迟 × 一致性,是个不可能三角,勿追求完美。
所以高频次的类似出库场景就要遇到这个问题,提交后靠工作流来检查,体验也不好。
发生这个问题,更常见的情况是,表单上有另一个必填字段,用户一时半会儿不知道该填啥,要找人问,此时想保存也没法保存。
解决方案就是,「保存」依赖的必填字段尽量少,改由「提交」工作流来检查字段值的合理性。
老问题了。
标准解决方案:设备未出库,但把它锁住,绑定那个没提交的出库单。即只有这张出库单能解锁,或执行实际出库。
界面上要告诉用户,你可以忘了提交,但不能忘了保存。(自动保存貌似做不到)