activiti 학습 자료 (다음 노드 가져오기)

activiti 다음 노드를 가져오는 방법


ACTIV ITI는 JB PM에 비해 젊고 사용하는 사람이 적으며 중국어 관련 자료가 적습니다. 저는 인터넷에서 찾아본 자료와 공식 문서를 보고 코드를 정리했는데 쉽지 않았습니다.잔말 말고 코드로 바로 올라가세요.
먼저 프로세스 ID를 기반으로 현재 작업을 가져옵니다.
List<Task> tasks = taskService.createTaskQuery().processInstanceId(procInstanceId).list();

그런 다음 현재 작업에 따라 현재 프로세스의 프로세스 정의를 가져오고 프로세스 정의에 따라 모든 노드를 가져옵니다.
ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl)rs).getDeployedProcessDefinition(task.getProcessDefinitionId());List<ActivityImpl> activitiList = def.getActivities(); //rs  RepositoryService   

작업에 따라 현재 프로세스 실행 ID, 실행 인스턴스 및 현재 프로세스 노드의 ID를 가져옵니다.
String excId = task.getExecutionId();ExecutionEntity execution = (ExecutionEntity) runtimeService.createExecutionQuery().executionId(excId).singleResult();String activitiId = execution.getActivityId();

그리고 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-explorer 소스 다운로드 주소:https://github.com/HSSC/activiti-explorer

좋은 웹페이지 즐겨찾기