Foxtable(狐表)用户栏目专家坐堂 → [求助]流程审批并发处理


  共有4836人关注过本帖树形打印复制链接

主题:[求助]流程审批并发处理

帅哥,在线噢!
cd_tdh
  11楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2022/3/25 16:38:00 [只看该作者]

张三、李四、王五三个人可以同时审核同一订单的同一个流程?必须三个人都同意????还是只是其中一个人同意就到下一个流程?

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2216 积分:18225 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2022/3/25 16:44:00 [只看该作者]

这个流程是例如这个样子的。
客户端审核完成以后,由客户端往数据库里写审核流水也没有问题,把审核的详细信息通过消息发给服务器,由服务器往数据库里写审核流水也可以。

如图的X必须三个黄色的环节都审核同意才可以执行

但是判断下一步能不能执行,肯定是交给服务器来执行的。
图片点击可在新窗口打开查看此主题相关图片如下:流程.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/3/25 16:45:23编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2216 积分:18225 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2022/3/25 16:50:00 [只看该作者]

说了半天,客户端审核不是直接写数据库?而是就发了个消息给服务端?---是的,我的想法是让服务器统一处理写数据库(客户端写了以后实时往数据库里存也可以)

消息处理确实是需要排队的,这种情况只能把接收的客户端审核数据保存到数据库里,然后在调用异步函数里通过查询数据库的时候数据是否完整来决定下一步
---因为流程审核可能会被退回再审,也就是同一个环节可能会走多次。比如某个环节审核不同意,退回去重新处理,再走到这个环节的时候,还不同意,又退回,又又又……

所以,我的想法是,如果是同一个业务ID(比如3月份给供应商甲的供货对账),如果有多人同时审,就排队处理这个业务ID的审核流水;如果不是同一个业务ID(比如3月份审供应商甲的对账、供应商乙的对账、……)就开启多线程处理。一个业务ID开启一个线程
[此贴子已经被作者于2022/3/25 16:53:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2216 积分:18225 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2022/3/25 16:57:00 [只看该作者]

就象上面的图示,如果B、M(或N)都已经审完且同意了,但环节K如果不同意,会打回到环节U,U处理以后,所有后续环节全部都要再审的(也就是B、M或N已经审过也废了,得重审)

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107661 积分:547620 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/25 17:02:00 [只看该作者]

还是通过写数据库,然后查询数据库数据判断吧

 回到顶部
帅哥,在线噢!
cd_tdh
  16楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2022/3/25 17:04:00 [只看该作者]

X执行的时候判断KPQ都同意了,执行就行了啊,有一个没同意就不执行哇,个人认为用不用异步都不影响,反正审核结果都写数据库,在数据库查找同一个订单,有这三个人审核是否都同意就行了。
[此贴子已经被作者于2022/3/25 17:06:55编辑过]

 回到顶部
帅哥,在线噢!
cd_tdh
  17楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2022/3/25 17:05:00 [只看该作者]

不过你这个流程要一个审核流程进度估计就不太好实事项


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2216 积分:18225 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2022/3/25 17:09:00 [只看该作者]

因为如果K环节不同意,系统需要将U、B、M(或N)、P、Q的审核状态标记为未完成,这样,X就不能执行了。

如果没有上面这个处理过程。K打回U,U环节改了数据,再走到下一步(要K、B再审),K同意了,如果这时候BM(或N)不再审,数据库直接判断说K、P、Q都通过了,就直接往下走,这肯定是不行的。

所以,审核流水信息虽然重要(但它只是记录性质的),更重要的是下面这一点

我想要知道的是:服务器如何把客户端传来的审核流水信息,每个业务ID分别异步处理,同一个业务ID中如果有多条流水做排队处理



[此贴子已经被作者于2022/3/25 17:11:21编辑过]

 回到顶部
帅哥,在线噢!
cd_tdh
  19楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3106 积分:20733 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2022/3/25 17:13:00 [只看该作者]

就是判断问题,你这个逻辑是不太好判断,开始PQ同意了,K不同意,修改后K同意了,之前PQ同意了,所以,查出来3个都同意了,会直接执行X,所以把所有都写同一个数据表里面不好实现。

要不就这样,只要三个人中一个人不同意,就把另外两个人的审核意见删除,需要重新审核,我想到的唯一办法了,但是这样就不能保留整个审核流程的审核信息了

还有一个办法就是增加一个标记列,如果K不同意,把PQ同意的做个标记来解决

[此贴子已经被作者于2022/3/25 17:16:19编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107661 积分:547620 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/25 17:14:00 [只看该作者]

这是流程设计问题,和异步没有什么关系。

K打回U,如果其它环节需要重审,那么就同时把其它环节之前的审核撤销

 回到顶部
总数 24 上一页 1 2 3 下一页