ACTIVITI如何获取下一个节点?
列表& lt任务& gttasks = task service . createtaskquery()。processInstanceId(procInstanceId)。list();
2.然后根据当前任务获取当前流程的流程定义,再根据流程定义获取所有节点:
ProcessDefinitionEntity def =(ProcessDefinitionEntity)((RepositoryServiceImpl)RS)。getDeployedProcessDefinition(task . getprocessdefinitionid());
列表& ltActivityImpl & gtactivity list = def . get activities();//rs引用RepositoryService的实例。
3.根据任务获取当前流程执行标识、执行实例和当前流程节点标识:
string ex cid = task . getexecutionid();
execution entity execution =(execution entity)runtime service . createexecutionquery()。executionId(excId)。single result();
string activity id = execution . getactivityid();
4.然后循环activitiList并判断当前流程所在的节点,然后获取当前节点实例,根据节点实例获取从当前节点开始的所有路径,然后根据路径获取下一个节点实例:
for(activity impl activity impl:activity list){
string id = activity impl . getid();
if(activity id . equals(id)){
System.out.println("当前任务:"+activity impl . getproperty(" name "));//输出一个节点的一些属性。
列表& ltPvmTransition & gtout transitions = activity impl . getoutgoingtransitions();//获取从一个节点出来的所有行。
for(PVM transition tr:out transitions){
PVM activity AC = tr . get destination();//获取线路的终端节点
System.out.println("下一个任务:"+AC . getproperty(" name "));
}
打破;
}
}