ACTIVITI如何获取下一个节点?

1.首先,根据进程ID获取当前任务:

列表& 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 "));

}

打破;

}

}