需求描述: 用户提出会签之后,需要等所有的会签任务完成之后,再根据用户意见来判断是同意还是拒绝,所以,原来的那种方式还是无法实现这个需求。就在原来方案上做了部门修改,于这个星期一终于完成了会签。

下面就跟大家分享一下我的实现方法。

流程配置

xml 代码
  1. <task-node name="060-Cosigning" create-tasks="false" signal="never" end-tasks="false">  
  2.     <task swimlane="cosigner"></task>  
  3.     <event type="node-enter">  
  4.         <action name="createInstance"  
  5.             class="com.ivo.bpm.action.CreateCosignTaskAction">  
  6.         </action>  
  7.     </event>  
  8.     <transition name="submit" to="980-Finished"></transition>  
  9. </task-node>  

signal=“never”,这样在这个task node下所有的任务都完成之后,token不会移到下一个node,这个时候就可以根据用户提交的意见情况来进行判断,然后根据判断结果再将token移到相应的node。

下面是逻辑判断

java 代码
  1. // cosign transition   
  2. cosignFlag = (String)objTaskInstance.getVariable("CosignFlag");   
  3.            
  4.  if ( cosignFlag !=null && cosignFlag.equals("true") &&    
  5.                 objTaskMgmtInstance.getUnfinishedTasks( objTaskInstance.getToken() ).size() == 0  ) {   
  6.         objProcessInstance = objTaskInstance.getTaskMgmtInstance().getProcessInstance();   
  7.         String cosignTransition = (String)objTaskInstance.getVariable("CosignTransition");   
  8.         if ( cosignTransition!=null && cosignTransition.equals("reject") )   
  9.             objProcessInstance.signal( "reject" );   
  10.         else objProcessInstance.signal( "submit" );   
  11. }  

首先判断是否进入会签node,在进入会签node之前,会把设置一个会签标记;然后在判断会签任务是否全部结束,如果全部结束,就根据会签意见(CosignTransition)来做迁移。在never时,需要用processInstance.signal来移动token。

这样就完成了以上的需求。

剩下还有一个更复杂的,就是二次会签,主要是签核日志有点复杂,哈哈哈,继续努力ing

评论
发表评论

您还没有登录,请登录后发表评论

wuxufeng8080
搜索本博客
最近加入圈子
存档
最新评论