JBPM公文流转之会签

 

JBPM3.2实现会签,有两种方法:

实现方法一:利用pooled-actors,只创建一个任务实例,却指定多个参与者(pooled-actors),
   参与者使用findPooledTaskInstances来查找任务实例,其中任意参与者审批通过
   并提交之后,其它人将看不到这个任务实例

如:
<task-node name="领导会签">        
   <task name="领导会签">   
    <assignment pooled-actors="wxj,jx"/>        
   </task>
   <transition name="结束流程" to="完成"></transition>
   </task-node>

实现方法二:用一个task-node,并将其signal属性设置为first(表示只要有一个用户提交了,此任务就结束),
在此节点中创建多个任务,此时多个任务就有多个参与者,
只有一个参与者提交,就应该把其他参与者的任务提交(定义一个node-leave的处理类)

<task-node name="领导会签" signal="first">     
<task name="wxj审批">     
   <assignment actor-id="wxj"/>     
</task>     
<task name="jx审批">     
   <assignment actor-id="jx"/>     
</task>    
<event type="node-leave">     
   <action class="com.XXX.FinishTaskHandler"/>     
</event>
<transition name="结束流程" to="完成"></transition>
</task-node>

FinishTaskHandler代码:

public class FinishTaskHandler implements ActionHandler {

public void execute(ExecutionContext executionContext) throws Exception {
  
   //找到当前节点尚未结束的任务实例
   Collection tasks = executionContext.getTaskMgmtInstance().getUnfinishedTasks(executionContext.getToken());
   for (Iterator iterator = tasks.iterator(); iterator.hasNext();) {
    TaskInstance taskInstance = (TaskInstance) iterator.next();
    taskInstance.end();
   }
}

}

其中<event type="node-leave">     
   <action class="com.XXX.FinishTaskHandler"/>     
</event>

的功能,也可以用tasknode的属性实现:即

end-tasks="yes",其与signal="first"表示只要有一个人参与者
审批了之后,该任务结束了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值