最全activiti5.22设置流程节点办理人方法

1、直接设置单个人办理
在这里插入图片描述
2、设置多个人办理
2.1多个人用逗号分隔

2.2添加多个人
在这里插入图片描述
3、设置群组办理
和设置多个人类似,可以设置一个或多个群组办理
在这里插入图片描述
说明:
第一种:指定办理人模式,即设置办理人,就是设置Assignee。Assignee 受让人; 受托人,代理人; 被指定人;办理人只能指定一个人,不能使用逗号分隔。默认执行签收操作taskService.claim(taskId, currentUserId);在ACT_HI_TASKINST和ACT_RU_TASK会产生数据,这两个表里面的Assignee_字段就是设置的办理人姓名或者对象的ID
第二种:设置候选用户,候选用户设置办理人不是很多的情况下使用,而且需要签收,也就是说我们常说的抢件模式,Candidate users 候选用户,设置候选组的前提是没有指定Assignee,(即没有执行签收操作)。设置候选组需要主动签taskService.claim(taskId, currentUserId);
第三种:这只候选组,这个就是这只办理角色或者办理岗位,适合使用在办理人比较多的情况下,而且涉及到几个部门的情形。Candidate groups 候选组

候选组与候选用户类似,只是要获取候选用户,需要根据候选组找到对应的用户。

涉及API:
taskService.createTaskQuery().taskAssignee(param);
根据用户来查询任务(待办任务)
taskService.createTaskQuery().taskCandidateUser(param);
根据候选用户查询任务(待签收任务)
taskService.createTaskQuery().taskCandidateGroup(param);
候选组查询任务(待签收任务)
TaskService().setAssignee(taskId,userId);
设置办理人
taskService().addCandidateGroup(taskId, groupid);
这只候选组,可以添加多个,每次一个addCandidateGroup添加一个
taskService().addCandidateUser(taskId,userid);
这只候选用户,可以添加多个,每次一个addCandidateUser添加一个
taskService.claim(taskId, currentUserId);
签收操作。

4、任务派遣处不设置代办人,通过节点任务监听器设置代办人
在这里插入图片描述
MyTaskListener 类代码:

    public class MyTaskListener implements TaskListener {
	    @Override
	    public void notify(DelegateTask delegateTask) {
	        delegateTask.setAssignee("张三");
	    }
    }

分配多人办理或用户组办理,可使用如下方法:
在这里插入图片描述

5、使用方法动态获取代办人
在这里插入图片描述
类上用注解@Component,在任务派遣配置中${taskNodeUtil.setCandidateUsersByHandler(execution) }类名首字母应该小写,其中execution为授权实例对象,可取取出流程变量等信息。

@Component
public class TaskNodeUtil{
    	public String setCandidateUsersByHandler(DelegateExecution execution)  {
            String assignees ="";
            Object handler = execution.getVariable("handler");//上报角色,直接包含此角色参数
            if(null != handler){
                assignees = handler.toString();
            }
            return  assignees;
        }
}

方法中还可以接收流程中的变量,根据流程中的变量,筛选用户,例如${taskNodeUtil.setCandidateUsersByConditionIntersectionProjectWeight(execution,projectCode,roleCode,weight) }其中projectCode,roleCode,weight,必须为流程中的变量,流程变量添加方法,可参照第六点。
6、通过EL表达式直接获取,使用流程变量指定代办人
在这里插入图片描述
其中assigneeUserId,candidateUsers,candidateGroups为流程中的变量,必须要在工单流转过程中传入方法。
启动流程时传入方法:

Map<String, Object> variables = new HashMap<String, Object>();
//设置办理人、候选人、候选组
variables.put("assigneeUserId", "admin");
variables.put("candidateUsers", "test1,test2");
variables.put("candidateGroups", "group1,group2");
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables);// 发起流程

流转流程时传入方法:

Map<String, Object> variables = new HashMap<String, Object>();
//设置办理人、候选人、候选组
variables.put("assigneeUserId", "admin");
variables.put("candidateUsers", "test1,test2");
variables.put("candidateGroups", "group1,group2");
taskService.setVariables(taskId, variables);
taskService.complete(taskId);
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值