需求描述: 用户提出会签之后,需要等所有的会签任务完成之后,再根据用户意见来判断是同意还是拒绝,所以,原来的那种方式还是无法实现这个需求。就在原来方案上做了部门修改,于这个星期一终于完成了会签。
下面就跟大家分享一下我的实现方法。
流程配置
xml 代码
- <task-node name="060-Cosigning" create-tasks="false" signal="never" end-tasks="false">
- <task swimlane="cosigner"></task>
- <event type="node-enter">
- <action name="createInstance"
- class="com.ivo.bpm.action.CreateCosignTaskAction">
- </action>
- </event>
- <transition name="submit" to="980-Finished"></transition>
- </task-node>
signal=“never”,这样在这个task node下所有的任务都完成之后,token不会移到下一个node,这个时候就可以根据用户提交的意见情况来进行判断,然后根据判断结果再将token移到相应的node。
下面是逻辑判断
java 代码
- // cosign transition
- cosignFlag = (String)objTaskInstance.getVariable("CosignFlag");
- if ( cosignFlag !=null && cosignFlag.equals("true") &&
- objTaskMgmtInstance.getUnfinishedTasks( objTaskInstance.getToken() ).size() == 0 ) {
- objProcessInstance = objTaskInstance.getTaskMgmtInstance().getProcessInstance();
- String cosignTransition = (String)objTaskInstance.getVariable("CosignTransition");
- if ( cosignTransition!=null && cosignTransition.equals("reject") )
- objProcessInstance.signal( "reject" );
- else objProcessInstance.signal( "submit" );
- }
首先判断是否进入会签node,在进入会签node之前,会把设置一个会签标记;然后在判断会签任务是否全部结束,如果全部结束,就根据会签意见(CosignTransition)来做迁移。在never时,需要用processInstance.signal来移动token。
这样就完成了以上的需求。
剩下还有一个更复杂的,就是二次会签,主要是签核日志有点复杂,哈哈哈,继续努力ing