• .NET 开源工作流: Slickflow流程引擎基础介绍(七) -- 并行分支多实例模式实现


    前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现。默认的分支类型是静态定义好的。本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关,便于用户业务流程的审批过程实现。

     1. 业务过程描述

            并行评审需求是在多个部门同时发生,此时会有多个并行分支的实例【员工填表->组长审批】。各个分支序列独立执行,直到所有并行分支序列全部执行完毕后才达到汇合条件。然后流程经过汇合网关继续向下执行流程。

    并行评审的实例数据:

    A部门:员工填表-->组长审批

    B部门:员工填表-->组长审批

    C部门:员工填表-->组长审批

    ...

            在Split网关阶段,根据员工填表节点上定义的角色数据,获取人员列表,然后动态产生并行分支数据。即同时产生多个员工填表的实例数据,以此实现多实例模式。分支的数目就是选取员工填表节点上的人员数目。

    2. 模式说明

    模式名称:并行分支多实例

    1) 与分支(多实例):AndSplitMI 

    表示可以产生多实例的并行分支数据。

    2) 与合并(多实例):AndJoinMI

    表示需要合并并行多实例分支数据。

    属性定义:在网关属性页面完成分支和合并节点的类型定义。

     

     3. 程序开发实践

        增加NodeMediator的子类型,用于实现并行分支网关的业务逻辑。程序架构设计类图如下:

    4. 总结

        Slickflow 引擎产品遵循工作流模式架构设计的原则,编码实践始终保持产品新功能的可控开发,这样实践的好处是:产品功能扩展逻辑清晰,现有代码重构目标明确,降低引擎功能扩展带来的程序复杂性。

  • 相关阅读:
    HDU 1698 Just a Hook (区间更新+延迟标记)
    HDU 1754 I Hate It 线段树
    HDU 1847 Good Luck in CET-4 Everybody! (sg函数)
    博弈汇总
    Codeforces cf 713A Sonya and Queries
    hihoCoder 1082 : 然而沼跃鱼早就看穿了一切
    hihoCoder 1298 : 数论五·欧拉函数
    hdu 5821 Ball
    hdu 5818 Joint Stacks(栈的模拟)
    hdu 5802 Windows 10
  • 原文地址:https://www.cnblogs.com/slickflow/p/7649970.html
Copyright © 2020-2023  润新知