jbpm4中为TASK指定角色用户

在JBPM4中,为TASK指定某个角色的用户,是十分常见的需求,本文针对这个大概讲解下思路。 
   如有填写申请--审批两个流程,分别由申请岗和审批岗两个岗位的人去执行, 可以设计流程文件如下:

<task  g="513,209,92,52" name="确认到帐"> 
<assignment-handler class="AssignTask"/>  
      <transition g="-71,-17" name="to 审核" to="审核"/> 
   </task> 
   
   <task  g="533,439,92,52" name="审核"> 
<assignment-handler class="AssignTask"/>  
      <transition g="-83,-17" name="非其他选项" to="exclusive1"/> 
   </task>

 

可以看到,这里每个TASK中,都使用了assignment-handler,这里没个task的name,设定为跟角色的名称一样,则在每个AssignTask中,可以这样写: 

 

public class AssignTask  extends BaseBiz implements AssignmentHandler {    
ProcessEngine processEngine=Configuration.getProcessEngine();      
 TaskService taskService=processEngine.getTaskService();      
  
public void assign(Assignable arg0, OpenExecution execution) throws Exception {    
  
    
    List<String> list_user=new ArrayList();    
     String pid=execution.getProcessInstance().getId();      
     TaskImpl taskImpl = (TaskImpl)arg0;      
     ExecutionImpl executionImpl = (ExecutionImpl)execution;     
   String activityname=executionImpl.getActivityName();    
  
  
  
         
//如果当前结点为确认到帐,则为其分配qr,qr1两个用户,这两个用户可以从数据库中,根据角色读取    
      if (activityname.equals("确认到帐")) {    
         list_user.add("qr"); 
         list_user.add("qr1");    
      }    
  
     //最后使用addCandidateUser把用户都加进去   
        for (String user : list_user) {    
            arg0.addCandidateUser(user);    
        }   

 

public class AssignTask  extends BaseBiz implements AssignmentHandler {   
ProcessEngine processEngine=Configuration.getProcessEngine();     
 TaskService taskService=processEngine.getTaskService();     
  
public void assign(Assignable arg0, OpenExecution execution) throws Exception {   
  
   
    List<String> list_user=new ArrayList();   
     String pid=execution.getProcessInstance().getId();     
     TaskImpl taskImpl = (TaskImpl)arg0;     
     ExecutionImpl executionImpl = (ExecutionImpl)execution;    
   String activityname=executionImpl.getActivityName();   
  
  
  
        
//如果当前结点为确认到帐,则为其分配qr,qr1两个用户,这两个用户可以从数据库中,根据角色读取   
      if (activityname.equals("确认到帐")) { 
         list_user.add("qr");  
         list_user.add("qr1");   
      }   
  
     //最后使用addCandidateUser把用户都加进去  
        for (String user : list_user) {   
          arg0.addCandidateUser(user);   
        }   

 

    可以看到,在实际应用中,应该把比如“确认到帐”这样的角色的用户加载进来,放到list_user中去。 
   最后要注意的是,如果遇到FORK-JOIN的话,必须用JBPM 4.4,用4.3的话,会遇到BUG的,开始还以为我的这个方法不行,其实是JBPM4.3的一个BUG,换成4.4都OK了 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值