bpmn给userTask分配用户

项目中整合bpmn.js做流程设计器,如果流程设计器是专业人员使用,哪ok,没问题;如果要求普通用户也能使用流程设计器做一些常用流程,这里就会有问题,如图:

这里是角色编码,对于普通用户而言不可能知道表中部门经理的编码是多少,这样的话流程设计器就无用,如何解决?我的方案如下

  1. 设计一张表保存每个userTask的审核人,key表示哪个流程,act_id表示哪个活动

  1. 页面对这个表做操作:选中某个userTask,然后分配用户

  1. 给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;
         }
     }
    }

    从而比较完美解决,更多操作可以访问 82.157.68.9/ 操作详情见 www.bilibili.com/video/BV1184y1q7g...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
0
喜欢
0
收藏
0
排名:3549
访问:25
私信
所有博文
社区赞助商