2023年8月1日发(作者:)
.NET⼯作流:Slickflow开源⼯作流引擎快速⼊门之⼆:简单并⾏分⽀流程代码编写⽰例前⾔:对于急切想了解引擎功能的开发⼈员,在下载版本后,就想尝试编写代码,完成⼀个流程的开发和测试。本⽂试图从⼀个最简单的并⾏分⽀流程来⽰例说明,如何快速了解引擎代码的编写。版本:.NET Core2.11. 创建分⽀流程图形 分⽀流程是常见的决策类的流程,本⽂中以⼀个汽车订单流程为例演⽰并⾏分⽀流程的流程过程。并⾏分⽀通常适⽤于多部门可以同时执⾏⼯作任务的场景,每个单独的分⽀也可以看做为⼀个串⾏序列⽚段。多个分⽀最终通过汇聚节点再合并在⼀起。 var pmb = Process("LargeOrderProcess", "LargeOrderProcessCode"); var process = ("Start") .Task("Large Order Received", "LOR001") .AndSplit("AndSplit") .Parallels( () => ( () => ("Engineering Review", "ER001") ) ,() => ( () => ("Design Review", "DR001") ) ) .AndJoin("AndJoin") .Task("Management Approve", "MA001") .End("End") .Store(); 上述代码创建了⼀个并⾏分⽀流程,有两个分⽀,⽽且分⽀是并⾏分⽀(AndSplit-AndJoin),图中的⽹关节点的属性类型,是在代码直接赋值设置的。流程图⽰例如下: 2. 流程启动和运⾏ 流程的启动和运⾏是最为常⽤的两个API接⼝。2.1 流程启动 启动需要处理的是流程实例的创建,还有开始节点和开始节点之后任务节点的创建,⽰例代码如下: IWorkflowService wfService = new WorkflowService(); var wfResult = Runner("10", "jack") .UseApp("PS-100", "Large-Car-Order", "PS-100-LX") .UseProcess("LargeOrderProcessCode") .Start(); 活动实例记录表如下:
2.2 流程运⾏ 流程运⾏是由当前待办任务开始办理,并且运⾏到下⼀步的过程。并⾏分⽀表⽰多个分⽀被同时触发执⾏,如上图中的流程图⽰例:设计部审查(Design Review)和⼯程部审查(Engineering Review)被并⾏⽹关节点(AndSplit)同时触发,所以在活动实例表中,⼀次⽣成了新的两条活动记录。 IWorkflowService wfService = new WorkflowService(); var wfResult = Runner("10", "jack") .UseApp("PS-100", "Large-Car-Order", "PS-100-LX") .UseProcess("LargeOrderProcessCode") .OnTask(8033) .NextStepInt("20", "Alice") .Run(); 活动实例记录表如下: 3. 流程的撤销和退回
3.1 流程撤销 如果⽤户在完成⾃⼰的待办任务,并且发出给下⼀步办理⼈时,发现有错误信息,需要撤销时,可以由⾃⼰发起,将当前流程撤销回来。当对并⾏分⽀撤销时候,两个并⾏分⽀也会被同时设置为退回和撤销状态,表⽰分⽀是强关联类型的两个活动。 IWorkflowService wfService = new WorkflowService(); var wfResult = Runner("10", "Jack") .UseApp("PS-100", "Large-Car-Order", "PS-100-LX") .UseProcess("LargeOrderProcessCode") .OnTask(8033) //TaskID .Withdraw(); 活动实例记录表如下: 3.2 流程退回 流程退回是由当前待办任务的办理⼈发起,退回到流程的上⼀步。假如对并⾏分⽀中的其中⼀个分⽀进⾏退回处理,这个时候,默认只退回当前分⽀到⽹关之前的任务节点,并不会影响另外⼀个分⽀。 IWorkflowService wfService = new WorkflowService(); var wfResult = Runner("20", "Alice") .UseApp("PS-100", "Large-Car-Order", "PS-100-LX") .UseProcess("LargeOrderProcessCode") .PrevStepInt() .OnTask(8038) //TaskID .SendBack(); 活动实例记录表如下: 并⾏分⽀的撤销和退回因为要考虑相邻分⽀的处理,所以在引擎内部的处理也是⽐较特殊。此处,只描述退回后的结果记录,退回的内部处理逻辑今后也会安排另外的⽂章专门再去介绍。4. 辅助开发⼯具1) Slickflow 流程设计器2) Slickflow Web测试⼯具5. 开源项⽬地址6. 总结1) 以上代码,可以帮助开发⼈员快速熟悉引擎组件的接⼝和简单或分⽀的实⽤功能,完整功能需要在企业版以上版本获取;2) 辅助开发⼯具中的流程设计器以及Web测试⼯具,给⽤户直观的体验操作,⽽且也适合不同类型的业务⽤户;3) 代码⽅式创建流程和测试流程⽅便开发⼈员快速学习和上⼿,是⼀种提升⼯作效率的⾼效⽅法。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690875371a452471.html
评论列表(0条)