读书人

宏天工作流平台Jbpm4中的会签设计及兑

发布时间: 2012-12-20 09:53:21 作者: rapoo

宏天工作流平台Jbpm4中的会签设计及实现

会签任务是工作流里一个比较觉见的任务方式,意思是一个处理任务需要多个人同时处理,然后汇总多个人的意见,决定流程下一步该如何执行。在JBPM4里,并没有会签这个概念,其只有并行任务的处理方式,如下所示:

?

宏天工作流平台Jbpm4中的会签设计及兑现

?

?

????? 这种方式会签的任务数量是固定的,并且任务名称也不一样,不能由用户来动态决定有多少人参与会签的任务。当然我们可以让中间那部分只有一个节点,然后根据用户在后台设置了多少人参与或在流程运行过程中,动态知道有多少人参与这个任务,动态创建并发的任务(不过这样实现上有一点困难,需要扩展jbpm的api相对多一些)

而另一种相对比较完善的解决方案是可以用一个任务来代表会签任务,而在流程运行至该任务节点的时候,根据当前有多少人参与这流程,动态生成该任务下的会签子任务,这样可以使得每个会签的参与人都可以在待办事项中看到该任务。这种办法实现上相对容易得多,因为jbpm4本身对子任务的动态创建支持得比较好。

?

joffice2就是基于这种方式来解决会签的配置及处理。那么,如何汇总会签任务的投票意见呢?我们知道,日常的会签常见的方式有:一票否决,一票通过,全票通过,半数通过等。其实现无非是分为两种,按投票数的绝对票数,另一种是按投票占的百份比数,投票决策又分为两种:通过或拒绝(反对),投票过程中会有通过,反对或弃权的动作。因此,在后台上我们设置某个节点若为会签时,其会签的投票决策方式信息包括如下:

?

宏天工作流平台Jbpm4中的会签设计及兑现

?

并且我们希望在执行会签任务的时候,会签的参与人员均可以填写意见及选择投票的类型(如同意,反对,弃权),如:

?

宏天工作流平台Jbpm4中的会签设计及兑现

?

那么投票的情况如何处理,以下为投票的决策处理方式:

?

宏天工作流平台Jbpm4中的会签设计及兑现

为什么要在后面加上流程变量decisionType呢,这里就是为了下一任务可以根据上一任务的会签结果来决定如何往下执行的,我们可以在后续的任务或条件结点中,通过这个变量的值,来决定其如何往下执行。若该变量的值为“pass"表示上一步会签的结果是同意,否则为反对。

?

如我们有一流程:

?

宏天工作流平台Jbpm4中的会签设计及兑现

?

?

那么在分支节点上,我们插入我们需要流程执行的分支决定代码,并且根据这个分支决定代码决定往下一步时执行的路径。于是我们在分支上加上干预的代码如下所示:

宏天工作流平台Jbpm4中的会签设计及兑现

?

根据上面的逻辑判断,我们把完成会签任务的代码展示部分如下:

?

?宏天工作流平台Jbpm4中的会签设计及兑现

?

?

产生会签的任务代码如下:

?

?宏天工作流平台Jbpm4中的会签设计及兑现

?

其最终的实现效果如下flash演示。

?

http://bbs.jee-soft.cn/swf/signTask.html

?

http://bbs.jee-soft.cn/posts/list/288.page

读书人网 >编程

热点推荐