bpmn给userTask分配用户
项目中整合bpmn.js做流程设计器,如果流程设计器是专业人员使用,哪ok,没问题;如果客户要求也能使用流程设计器做一些常用流程,这里就会有问题,如图:
这里是角色编码,对于客户而言不可能知道表中部门经理的编码是多少,这样的话流程设计器就无用,如何解决?我的方案如下
1.设计一张表
key:那个流程 act_id: 那个活动
2. 页面可以对这个表做操作
3. 给userTask配置一个create类型的任务监听器
/**
* 用户任务配审核人
*
* @author dengry
*/
@Component
public class UserAssignListerner implements TaskListener {
private final FlowService flowService;
public UserAssignListerner(FlowService flowService) {
this.flowService = flowService;
}
@Override
public void notify(DelegateTask delegateTask) {
String actId = delegateTask.getTaskDefinitionKey();
String processDefinitionId = delegateTask.getProcessDefinitionId();
String key = processDefinitionId.split(":")[0];
UserAssignment userAssignment = flowService.getUserAssignmentByKeyAndActId(key, actId);
String type = userAssignment.getType();
String val = userAssignment.getVal();
switch (type) {
case "Candidate groups":
String[] groups = val.split(",");
for (String group : groups) {
delegateTask.addCandidateGroup(group);
}
break;
case "Candidate users":
String[] users = val.split(",");
for (String user : users) {
delegateTask.addCandidateUser(user);
}
break;
case "Assignee":
String applyUserId = (String) delegateTask.getVariable("applyUserId");
delegateTask.setAssignee(applyUserId);
break;
}
}
}
从而完美解决,更多操作可以访问 http://82.157.68.9/ 操作方法见 https://www.bilibili.com/video/BV1184y1q7g9