1、根据用户名获得待办任务ID,包括直接指定和通过角色、组指定的待办任务
TaskQuery twoQuery = taskService.createTaskQuery().taskCandidateOrAssigned(userId).active().orderByProcessInstanceId().desc();
2、将任务委托给其他人办理
Task task=taskService.createTaskQuery().singleResult(); //委托 taskService.delegateTask(task.getId(), "cc");
其中,cc为被委托人
或者根据命令模式进行委托处理:
如managementService.executeCommand(new DelegateTaskCmd(taskId, "2c908aa34877c0a0014877f3ab5700f8"))
3、被委托人处理任务
taskService.resolveTask(task.getId());
或者使用命令模式ResolveTaskCmd
如 managementService.executeCommand(new ResolveTaskCmd(taskId, variables));
被委托人执行完毕后,任务工具又回到委托人名下,即A委托B处理,B处理完后,任务又回到A名下。
4、业务流程信息
List<HistoricActivityInstance> actList = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId).finished()
.taskAssignee(userId)
.orderByHistoricActivityInstanceStartTime().desc().list();
for(HistoricActivityInstance aaa : actList){
System.out.println("*******"+aaa.getAssignee());
System.out.println("*******"+aaa.getProcessInstanceId());
System.out.println("*******"+aaa.getTaskId());
}
根据流程实例id和用户id,获得该业务流程中已完成节点且是指定用户处理的节点的相关信息,即是act_hi_taskinst表中的信息。
5、activiti历史任务相关功能记录
activiti的历史任务是单独的表来储存,表之间没有任何外间关联,这些表包括:
ACT_HI_ACTINST 历史流程的运行状况记录
ACT_HI_ATTACHMENT
ACT_HI_COMMENT 流程评论
ACT_HI_DETAIL流程明细
ACT_HI_IDENTITYLINK 流程身份关系
ACT_HI_PROCINST 历史流程概况
ACT_HI_TASKINST 历史任务概况
ACT_HI_VARINST 历史流程中的参数
historyService服务是用于查询历史数据表,有:
historyService.createHistoricActivityInstanceQuery(); //查询ACT_HI_ACTINST表
historyService.createHistoricDetailQuery(); //查询ACT_HI_DETAIL表
historyService.createHistoricProcessInstanceQuery(); //查询ACT_HI_PROCINST表
historyService.createHistoricTaskInstanceQuery(); //查询ACT_HI_TASKINST表
historyService.createHistoricVariableInstanceQuery(); //查询ACT_HI_VARINST表
7、查询流程是否结束
String id=historyService.createHistoricProcessInstanceQuery()
.finished().singleResult().getId().toString();//finished()查出完成的流程,在数据库中,end_act_id出现值,说明该流程结束。