业务流程的流转过程中,经常会有需要并发处理的过程,即流程流转到下一步,同时产生多个当前需要处理的过程,这些过程不分先后处理顺序,只要都处理完成了,最后汇聚到一起,再接着主流程运行,就可以了。例如:一份报销单,填写完成后,同时启动财务部门审核和本部门的审核,这两部分的审核不分先后顺序,只要都完成后,再将结果返回给报销单填写人,继续下面的流转。这种的并行处理的过程,就需要流程引擎支持分支和聚合。
分支又分为 静态的分支 和动态的分支。
静态的分支,即在业务流程建模之初,就能确定好有多少个分支,每个分支的具体流转,具体处理过程。
动态的分支,即在业务流程建模的时候,只能确定好一条分支的模版处理过程,在流程实例运行时,每流程实例根据自己的情况确定本次能产生多少个分支,然后依据分支模版的处理过程,复制出n个并发的分支线路,每分支线路的运行轨迹根据动态分支参数的设置而不尽相同。
聚合也分为 静态聚合 和 动态聚合
静态聚合,和静态分支匹配,当有静态的分支并发流转发生后,需要用静态聚合来汇聚并发的线路。
动态聚合,和动态分支匹配,当有动态的分支并发流转发生后,需要用动态聚合来汇聚并发的线路。
静态分支模式:
动态分支模式:
静态分支里面可以嵌套 静态分支:
动态分支里面也可以嵌套 动态分支:
静态分支里面可以嵌套 动态分支 (暂未做示例)
动态分支里面也可以嵌套 静态分支:
注意:静态分支,必须用静态聚合来汇聚, 动态分支必须用动态聚合来汇聚。
为了 方便 设置汇聚条件,分支嵌套的时候,避免 内层聚合--到--外层聚合 的 这种流程建模方式,如果业务流程中,确实是内层聚合--到--外层聚合 的流转,那就增加一个 自动步骤的 节点。即 内层聚合--自动步骤--外层聚合。此自动步骤,带有自动执行的方法,当流程流转到这里时,会自动完成此步骤。
静态分支后产生的并发流程,在流程建模时候,和普通的流程节点一样设计。
动态分支后产生的并发流程,有些参数需要在流程实例运行时设置,如动态分支的个数,每分支的步骤执行人等等。
动态分支节点,在流程建模时,先定义好需要那些参数,在分支模版节点中,引入这些参数。流程实例运行时,各流程实例根据实际情况给参数赋值,分支节点中遇到参数表达式,解释并得到参数值,参与到流程的流转中。
参见 web工作流管理系统开发之二十 动态创建流程多分支节点
http://www.cnblogs.com/webreport/archive/2010/05/30/1747537.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!