Activiti 가 어떻게 프로 세 스 맵 을 동적 으로 가 져 오 는 지 상세 하 게 설명 합 니 다.
1.제도 원리
activiti 에 서 는 프로 세 스 그림 을 그 릴 수 있 는 클래스 Default ProcessDiagramGenerator 를 제공 합 니 다.이 종 류 는 5.2.0 이상 버 전에 있 습 니 다.
단독 jar 패키지 로 제공 되 므 로 의존 도 를 도입 해 야 합 니 다.
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-image-generator</artifactId>
<version>5.22.0</version>
</dependency>
사용 할 때 이 종류의 대상 을 먼저 만 들 고,
// 5.22.0
DefaultProcessDiagramGenerator diagramGenerator=new DefaultProcessDiagramGenerator();
그리고 그림 그리 기 방법 을 사용 합 니 다.diagramGenerator.generateDiagram(bpmnModel, imageType, highLightedActivities);
그 중의 몇 가지 인자:bpmnModel:현재 프로 세 스에 대응 하 는 프로 세 스 모델 은 reposcory Service.getBpmnModel(processDefinitionId)을 통 해 얻 을 수 있 습 니 다.
image Type:그림 종류,jpg,png 등
하 이 라이트 Activities:하 이 라이트 가 필요 한 노드 의 id
2.절차 에 따라 id 그림 그리 기
프로 세 스 정의 표 actre_procdef 의 메 인 키 id 그림 을 그 릴 수 있 습 니 다.이 때 는 절차 가 없 을 수 있 습 니 다.절차 그림 이 성공 적 으로 배치 되면 act 가 발생 합 니 다.re_procdef 표 의 기록.그래서 노드 의 하 이 라이트 문제 도 존재 하지 않 습 니 다.이 그림 은 절차 인 스 턴 스 와 무관 하기 때 문 입 니 다.
@Test
public void test1() throws Exception {
// id BpmnModel
String processDefinitionId="process:2:4304";
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
// 5.22.0
DefaultProcessDiagramGenerator diagramGenerator=new DefaultProcessDiagramGenerator();
// bpmnModel
InputStream inputStream = diagramGenerator.generateDiagram(bpmnModel, "png", new ArrayList<String>());
FileOutputStream output=new FileOutputStream(new File("d:/test.png"));
IOUtils.copy(inputStream, output);
System.out.println(" ");
}
generateDiagram()방법의 세 번 째 매개 변 수 는 빈 list 를 전 달 했 습 니 다.이 list 는 하 이 라이트 로 표시 할 노드 의 id 집합 을 표시 합 니 다.즉,프로 세 스 맵 의 모든 작업 id 입 니 다.3.절차 인 스 턴 스 id 에 따라 그림 그리 기
3.1 기본 원리
프로 세 스 DefinitionId 에 따라 그림 을 그 렸 습 니 다.processInstanceId 에 따라 그림 을 그 릴 때,사실은 processInstanceId 에 따라 해당 하 는 프로 세 스 인 스 턴 스 대상 ProcessInstance 를 조회 합 니 다.
그리고 프로 세 스 실례 대상 을 통 해 프로 세 스 DefinitionId 를 가 져 옵 니 다.그 중의 get 방법 을 사용 하여 프로 세 스 Instance.getProcessDefinitionId()
하 이 라이트 디 스 플레이 가 필요 한 노드 의 id:현재 노드+지나 간 노드 를 얻 을 수 있 습 니 다.
3.2 현재 노드 의 획득
runtime Service 서비스 구성 요 소 를 가 져 오 는 방법
String executionId=processInstance.getId();
List<String> activeActivityIds = runtimeService.getActiveActivityIds(executionId);
activeActivity Ids 라 는 list 는 현재 노드 의 id 집합 입 니 다.병렬 프로 세 스 라면 여러 개가 있 고 다른 경 우 는 하나 입 니 다.3.3 지나 간 노드 의 획득
지나 간 노드 는 activiti 의 역사 행동 표 acthi_actist 에서 가 져 옵 니 다.프로 세 스 의 행위 데 이 터 는 이 표 에 기록 되 어 있 으 며,프로 세 스 가 한 노드 에 이 르 렀 을 때,이 표 에는 프로 세 스 노드 의 정보 가 기록 되 어 있 으 며,노드 id,명칭 등 을 포함한다.그 중 에 ACT 가 있어 요.ID_프로 세 스 맵 에 대응 하 는 노드 의 id 를 대표 합 니 다.
하 이 라이트 가 필요 한 노드 id
그래서 우리 가 해 야 할 일 은 이 표 에서 이 데 이 터 를 조회 하 는 것 이다.activiti 는 이 표를 조회 하 는 api 를 제 공 했 습 니 다.history Service 라 는 서비스 구성 요 소 를 통 해 가 져 올 수 있 습 니 다.
// id
HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery();
List<HistoricActivityInstance> historicActivityInstanceList = historicActivityInstanceQuery.processInstanceId(processInstanceId).list();
for(HistoricActivityInstance hi:historicActivityInstanceList) {
String taskKey=hi.getActivityId();
activeActivityIds.add(taskKey);
}
이상 코드 는 먼저 ACT 를 조회 합 니 다.ID_,하 이 라이트 가 필요 한 집합 activeActivity Ids 에 추가 합 니 다.3.4 그림 그리 기
DefaultProcessDiagramGenerator defaultProcessDiagramGenerator=new DefaultProcessDiagramGenerator();
//
InputStream inputStream = defaultProcessDiagramGenerator.generateDiagram(bpmnModel, "png", activeActivityIds);
//
IOUtils.copy(inputStream, new FileOutputStream(new File("d:/test2.png")));
System.out.println(" ");
이렇게 그 려 진 프로 세 스 그림 에 지나 간 노드 가 하 이 라이트 로 표 시 됩 니 다.총화
프로 세 스 그림 을 그 리 는 원 리 는 Default ProcessDiagramGenerator 클래스 의 방법 을 사용 하 는 것 입 니 다.
이 종 류 는 단독 jar 에서 제공 되 며,새로운 의존 도 를 추가 해 야 합 니 다.
일부 노드 를 강조 하려 면 그림 그리 기 방법 에 노드 id 의 집합 을 전달 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activiti6.0 새 노드, 하나의activiti 5 공유.12 6.0.0의 새로운 노드 코드를 변경하고 사용하실 분 있으면 스스로 조정하세요.activiti의 새로운 노드를 실현하고 5.12버전을 6.0.0버전으로 변경합니다 버전 5.12 코드 참조:https://blog.csdn.net/hj7jay/article/details/50848292 GITHU...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.