项目中整合bpmn.js做流程设计器,如果流程设计器是专业人员使用,哪ok,没问题;如果客户要求也能使用流程设计器做一些常用流程,这里就会有问题,如图
这里是角色编码,对于客户而言不可能知道表中部门经理的编码是多少,那么这样的话流程设计器就无用,如何解决?我的解决方案如下
1.设计一张表,类似:
key:流程id,act_id是活动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
标签:case,flowService,String,delegateTask,bpmn,流程,用户,userTask,break From: https://www.cnblogs.com/oasis-deng/p/16861780.html