• 驰骋工作流引擎JFlow与activiti的对比之4种包含多实例的模式


    1. 无同步的多实例(MIwithout)

    在流程中,一个活动可以激活多个实例,每个实例相互独立,并不需要在后面进行同步。

    例子:比如用户购买了N本书,于是后续的支付账单、更新客户可以以本书为单位各自执行。

    clip_image002

    ACTIVITI 中的支持情况:

    支持这种模式,但是不允许在后面进行结束动作。

    clip_image004

    JFLOW中的支持情况:

    分合流与父子流程支持这种模式,分合流上面已经讲过,下面说下父子流程。

    第一种情况:发起子流程后,等所有的子流程执行完成后,父流程继续下一步骤或者结束。

    第二种情况:发起子流程后,无论子流程是否执行完成,都执行到下一步或者结束。

    clip_image006

    父流程:

    clip_image008

    2. 设计时确定的多实例(MIwith a Priori Design Time Knoledge)

    在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候就已经知晓率。

    clip_image010

    ACTIVITI 中的支持情况:

    对于设计时已经知道实例数量的,最简单的就是使用多个Task节点来实现多个实例。

    JFLOW中的支持情况:

    合流节点处理各个子线程的任务比率。

    完成率 = 子线程上已经完成的数据/所有子线程数量*100%

    该节点对于合流节点与分合流节点有效,当子线程的完成率达到该值的时候,该节点的待办才能显示出来,否则该节点的人员不能处理待办。如果合流节点的处理人能够看到待办,他就可以对该流程进行操作,比如:发送、删除、退回、删除子线程等等。

    3. 运行时确定的多实例(MI with a Priori RunTime Knoledge)

    在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,只有在运行时根据条件来决定需要激活多少个实例。

    clip_image012

    ACTIVITI 中的支持情况:

    对于运行时可以知晓实例数量的,可以通过设置JOIN节点的multipliclty来实现。

    clip_image014

    JFLOW中的支持情况:

    同表单分合流配合节点访问规则可以实现这个功能。

    clip_image016

    4. 运行时无法确定的多个实例(MI without a Priori RunTime Knoledge)

    在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,该模式与上一个模式的区别就是,在产生的实例执行时或者已经执行完时,仍然有新的实例产生。

    例子:比如要采购100台电脑,涉及到多个供应商,但是每个供应商供应多少台电脑是不知道的,因此供应商的数量也是不确定的,但是每次供应商送货来后,就会将所拥有的电脑数量和所需的100台进行比较,来决定是否要下一个供应商进行供应。

    ACTIVITI 中的支持:与运行时确定的多个实例的实现方式一样。

    clip_image018

    JFLOW中的支持:

    这种方式属于JFlow的父子流程来实现,开始节点启动一个任务,需要采购100台电脑,需要发起n此的选择供应商采购的子流程,每个子流程完成后,就访问父流程节点信息,进行相关的业务处理(就是是否启动下一个子流程,如果满足100,就不启动子流程了,直接完成父流程的任务,结束主流程.)。

  • 相关阅读:
    【Layui】11 滑块 Slider
    【Layui】10 颜色选择器 ColorPicker
    【Layui】09 动画 Anim
    【Layui】08 时间线 Timeline
    【Layui】07 徽章 Badge
    【Layui】06 面板 Panel
    【Layui】05 进度条 Progress
    【Layui】05 选项卡 Tabs
    【Layui】04 导航 Nav
    【Layui】03 按钮 Button
  • 原文地址:https://www.cnblogs.com/mengjuan/p/10148809.html
Copyright © 2020-2023  润新知