Spring activiti 笔记2 - 任务分发&处理
任务分发
委派
是将任务节点分给其他人处理,等其他人处理好之后,委派任务会自动回到委派人的任务中
OWNER_(委托人):受理人委托其他人操作该TASK的时候,受理人就成了委托人OWNER_,其他人就成了受理人ASSIGNEE_
owner字段就是用于受理人委托别人操作的时候运用的字段
Task task=taskService.createTaskQuery().singleResult();
//委托 userId:被委派人id
taskService.delegateTask(task.getId(), "cc");
logger.info(taskService.createTaskQuery().singleResult().getOwner());
logger.info(taskService.createTaskQuery().singleResult().getAssignee());
//结果:owner是Billy,assignee是cc
//被委派人办理任务
taskService.resolveTask(taskId,variables);
//正在运行的委派任务:
public ListmytaskChangeOtherList1(String userId){
List<Task>list = taskService.createTaskQuery().taskOwner(userId)
.orderByTaskCreateTime().desc().list();
returnlist;
}
//已经办结的委派任务:(同理)
认领
你领了这只狗狗,你就是她的主人啦~
ASSIGNEE_(受理人)代表task任务的受理人,没有值的时候,可以使用签收功能去指定受理人,就是候选组里面谁签收谁就成了受理人
//认领
taskService.claim(task.getId(),
"billy"
);
logger.info(taskService.createTaskQuery().singleResult().getAssignee());
//结果:billy
转办
直接把益达给别人,拥有它的人不再是你!
直接将办理人assignee 换成别人,这时任务的拥有着不再是转办人,而是为空,相当与将任务转出。
//转他人处理
public void mytaskChangeOther(String taskId,String userId){
taskService.setAssignee(taskId,userId);
}
如果要查询转给他人处理的任务:
可以同时将OWNER进行设置(正在运行的任务表和历史任务表都要进行设置),这样在查询的时候方便根据字段进行查询:以下是正在进行的任务表例子
taskService.setOwner(taskId, userId);
任务处理
完成任务:
taskService.complete
官方提供了3种重载:
1.complete(String taskId)
参数:taskId
作用:直接完成此次正在运行的任务,对用ac_ru_task表 - 走完发起的整个审批流程
2.complete(String taskId, Map<String,Object> variables)
参数:taskId(对应act_ru_task中的id_),variables(下一次任务所需要的参数)
作用:完成这一次任务,并且下一步任务需要流程变量的
3.complete(String taskId, Map<String,Object> variables, boolean localScope)
参数:taskId(对应act_ru_task中的id_),variables(下一次任务所需要的参数),localScope(存储范围:本任务)
作用:同第二个,加上存储范围的设置
localScope官方解释:如果为true,通过的变量将会随着本任务存亡(本任务结束,变量删除,称之为任务变量(局部)),
默认为false,即为complete(String,Map) 那么这时候的变量为流程变量(全局))