activiti task怎么区别类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activiti task怎么区别类型相关的知识,希望对你有一定的参考价值。
参考技术A 1、首先是根据流程ID获取当前任务:List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInstanceId).list();
2、然后根据当前任务获取当前流程的流程定义,然后根据流程定义获得所有的节点:
ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)rs).getDeployedProcessDefinition(task.getProcessDefinitionId());
List<ActivityImpl> activitiList = def.getActivities(); //rs是指RepositoryService的实例
3、根据任务获取当前流程执行ID,执行实例以及当前流程节点的ID:
String excId = task.getExecutionId();
ExecutionEntity execution = (ExecutionEntity) runtimeService.createExecutionQuery().executionId(excId).singleResult();
String activitiId = execution.getActivityId();
4、然后循环activitiList 并判断出当前流程所处节点,然后得到当前节点实例,根据节点实例获取所有从当前节点出发的路径,然后根据路径获得下一个节点实例:
for(ActivityImpl activityImpl:activitiList)
String id = activityImpl.getId();
if(activitiId.equals(id))
System.out.println("当前任务:"+activityImpl.getProperty("name")); //输出某个节点的某种属性
List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions();//获取从某个节点出来的所有线路
for(PvmTransition tr:outTransitions)
PvmActivity ac = tr.getDestination(); //获取线路的终点节点
System.out.println("下一步任务任务:"+ac.getProperty("name"));
break;
本回答被提问者采纳
以上是关于activiti task怎么区别类型的主要内容,如果未能解决你的问题,请参考以下文章
Intent.FLAG_ACTIVITY_CLEAR_TASK 和 Intent.FLAG_ACTIVITY_TASK_ON_HOME 的区别
Activiti 流程部署方式 activi 动态部署(高级源代码篇)
android 的Service里面多次启动一个Activity只能用FLAG_ACTIVITY_NEW_TASK,那么怎么才能只启动一次呢?