webreport

博客园 首页 新随笔 联系 订阅 管理

      在工作流管理系统的实际应用中,经常有这样的需求,当一个流程流转到分支的时候,需要产生几个分支不是在流程定义的时候预先能确定好的,而是在每个流程实例流转的时候,根据实际的需要动态的产生的。

例如,当一个申请单填写完成后,交个下一步骤去审批,需要几组,需要根据申请单中申请的项目数来决定,
  如果申请单中有2个明细项,就需要2组人审批;
  如果申请单中有3个明细项,就需要3组人审批。

这样的需求适合用动态分支来实现,产生多少个分支根据申请单中用户填写的明细项来决定,当有3项,就做3个动态分支,有2项,就做2个,有n项,做n个分支,每个流程实例是不一样的,在流程定义的时候,无法确定分支的个数,因此只能做动态分支,在流程实例运行的时候,再根据实际的需要来产生分支的个数。

在动态分支--....--动态合并  这之间的节点,在流程定义的时候,只能做一个节点来定义,即步骤的执行人等,只能是一次性的定义。当需要在每个动态分支中有不同的执行人的时候,则需要在动态分支节点上设置动态分支参数,分支后的节点参数人,选择设置的动态分支参数。在进入动态分支之前给这些参数赋值好相应的执行人,按每个分支来分配,这样就能达到各个分支不同了。

如上面的示例中,申请单明细中,如果有A项目,则需要A项目组的上级来审批。
               如果有B项目,则需要B项目组的上级来审批。
   这时候,就可以在动态分支节点上,先定义一个动态分支参数,在进入分支之前,根据申请单明细项目,找到项目组的上级,赋值给分支变量,分分支来分配变量值。
   也可以在进入分支后,核对资质,或项目评估的步骤中,再按项目组找上级,赋值给分支变量,当到达审批节点的时候,就已经分配好了步骤的执行人了。
   
   动态分支在工作流的实际应用中,经常会遇到,需要根据实际情况来确定。动态分支中在流程实例运行的时候,每个分支会产生一个分支实例id,每个节点在运行的时候,也会有运行轨迹id,都会记录到流程的运行轨迹中。根据动态分支实例id或运行轨迹id,和业务表关联,也能定位到每个节点上办理的业务数据,在流程的跟踪和监控上,分支实例id和轨迹id都可以发挥出作用。
   
   有些审批步骤,可以参与审批的人数不定,但是只是一个审批节点的,这种用会签型的任务节点,就可以了,不需要用动态分支,动态分支通常是分支和合并之间还有一序列的处理过程,并且每流程实例在运行时产生的分支个数不一样,这种类型的需求才适合用动态分支。

posted on 2012-07-11 11:26  web报表  阅读(3033)  评论(1编辑  收藏  举报