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) 那么这时候的变量为流程变量(全局))

猜你喜欢

转载自www.cnblogs.com/caesar-the-great/p/13396321.html