以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]并联审批流程  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135049)

--  作者:chnfo
--  发布时间:2019/5/15 21:09:00
--  [求助]并联审批流程
帮助里有OPENQQ关于审批流程的示例。
如果是并联审批流程,例如
第一步:发起者A
第二步:审批者B和C,只有B和C都审核通过才能下一步,实际在审核的时候,有可能是B先看到先审,也可能是C先看到先审。但互不妨碍,B和C并不会独占编辑权。比如建设项目的审批过程中,有一步施工图审核,需要消防部门和气象部门(审防雷设计)并联审批,消防部门审核人与气象部门审核人都可以对图纸设计发表意见,但互不妨碍。
第三步:D

这样的话,示例中的做法就有点问题了。

因为消防和气象部门审核后,都会发送消息
QQClient.Send("@i" & Tables("表A").Current("_Identify") & "i@"
但无论是B或C的审核,都不能直接将这项业务的流程状态改为2;只有识别到B和C都已经审核之后才能将其状态改为2,并触发第三步的审核,而要做这个判断,正常情况下,在服务器端处理应当更合适一些。
这里面有一个关键点,就是B和C可能是并发的,也就是“几乎”同时完成审核并提交。




该如何解决这样的并联审批的问题呢?
[此贴子已经被作者于2019/5/15 21:33:42编辑过]

--  作者:有点甜
--  发布时间:2019/5/16 9:19:00
--  

 

为什么审核后就直接发送信息?不是应该有一个【所需审批人员列】么,以及【已经审批人员列】么?当两者相等的时候,才应该发送审核成功的信息。

 

 


--  作者:chnfo
--  发布时间:2019/5/16 15:54:00
--  
因为BC可能同时操作,同时提交。 那么B提交时,应提交人是BC,实提交人是B C提交时,应提交人是BC,实提交人是C。 如果是串联审批或独占编辑,你说的没问题 但如果是并联而且不能独占编辑,在B或C客户端判断应提交人和实提交人是否一致,这样可能会导致流程就停在那不动了
--  作者:chnfo
--  发布时间:2019/5/16 15:56:00
--  
所以我觉得应当B或C只要处理完,就交给服务器去判断
--  作者:有点甜
--  发布时间:2019/5/16 16:05:00
--  
以下是引用chnfo在2019/5/16 15:56:00的发言:
所以我觉得应当B或C只要处理完,就交给服务器去判断

 

处理完以后,发送信息给服务器,让服务器完成逻辑校验以及给下一个步骤发提示。


--  作者:chnfo
--  发布时间:2019/5/22 21:03:00
--  
但这样又可能导致另一个问题出现:就是服务器处理的时候,要排队。
但如果用多线程,就会导致另一个问题出现,比如B和C并联审批同一个业务并同时提交的时候,那这一个业务的两个接收信息就必须要排队而不能同时启用线程。

又该如何解决?



--  作者:有点甜
--  发布时间:2019/5/22 21:08:00
--  

 

排队很正常。接收信息,处理信息很快的。