jbpm4中为TASK指定角色用户
在JBPM4中,为TASK指定某个角色的用户,是十分常见的需求,本文针对这个大概讲解下思路。
如有填写申请--审批两个流程,分别由申请岗和审批岗两个岗位的人去执行, 可以设计流程文件如下:
<task g="513,209,92,52" name="确认到帐">
<assignment-handler name="to 审核" to="审核"/>
</task>
<task g="533,439,92,52" name="审核">
<assignment-handler 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); }