Activiti 프로 세 스 파일 배치 프로 세 스 분석
activiti 와 프로 세 스 정의 와 관련 된 작업 은 모두 Repository Service 라 는 서비스 구성 요 소 를 사용 하여 진행 해 야 합 니 다.
activiti 의 모든 서비스 구성 요 소 는 프로 세 스 엔진 대상 을 통 해 가 져 와 야 합 니 다.
1.Repository 서비스 구성 요소
이 구성 요소 에 서 는 일련의 관리 프로 세 스 정의 와 프로 세 스 배 치 를 위 한 api 를 제공 합 니 다.이 구성 요소 의 api 를 사용 하여 프로 세 스 를 배치 할 수 있 습 니 다.
1.1 Repository Service 인 스 턴 스 대상 가 져 오기
프로 세 스 엔진 대상 의 인 스 턴 스 방법 을 사용 하여 processEngine.getRepository Service();Repository Service 가 져 오기
@Test
public void test1() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
System.out.println(repositoryService);
}
2.절차 배치 정보 에 대한 설명,Deployment 대상프로 세 스 를 어떻게 배치 하 는 지 설명 하기 전에 activiti 가 프로 세 스 의 배치 정 보 를 어떻게 설명 하 는 지 알 아 보 겠 습 니 다.activiti 는 Deployment 라 는 인터페이스 로 프로 세 스 의 배치 정 보 를 설명 하고 실현 클래스 를 제공 합 니 다.activiti 데이터베이스 에 대응 하 는 표 ACTRE_DEPLOYMENT
3.절차 의 배치
activiti 는 Deployment Builder 와 같은 대상 을 사용 하여 프로 세 스 를 배치 합 니 다.이러한 이름 에서 그 기능 을 볼 수 있 습 니 다.하나의 프로 세 스 를 배치 하고 이번 배치 정 보 를 설명 하 는 대상 을 되 돌려 줍 니 다.
Repository Service 서비스 구성 요소 의 대상 을 사용 하여 Deployment Builder 대상 을 가 져 옵 니 다.
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
그리고 이 deployment Builder 에 배치 할 프로 세 스 파일 의 위 치 를 추가 합 니 다.deploymentBuilder.addClasspathResource("process/process.bpmn");
resources 디 렉 터 리 에 process/process.bpmn 프로 세 스 정의 파일 을 만 들 었 기 때문에 이 경 로 를 추가 하 였 습 니 다.이번 배치 에 이름과 분 류 를 추가 할 수 있 습 니 다.
deploymentBuilder.name("vacation-test").category("test");
최종 실행 배치Deployment deploy = deploymentBuilder.deploy();
관찰 데이터베이스 ACTRE_DEPLOYMENT 표 는 배치 기록 이 하나 더 있 는 것 을 발견 할 수 있 습 니 다.전체 코드
@Test
public void test1() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
deploymentBuilder.addClasspathResource("process/process.bpmn");
deploymentBuilder.name("vacation-test").category("test");
Deployment deploy = deploymentBuilder.deploy();
System.out.println(deploy);
}
기본적으로 같은 프로 세 스 그림 을 여러 번 배치 하면 표 에 여러 개의 기록 이 생 길 수 있 으 며,배치 시간 필드 로 구분 할 수 있 습 니 다.3.1 중복 배치 문 제 를 걸 러 낸다
자원 에 변화 가 없 는 것 을 방지 하기 위해 배치 방법 에 따 른 중복 배 치 를 다시 실행 할 수 있 습 니 다.Deployment Builder 의 enableDuplicate Filtering()방법 을 호출 할 수 있 습 니 다.이 여과 방식 은 배치 표를 먼저 조회 하고 표 에 있 는 배치 대상 을 집합 시 키 는 것 입 니 다.기 존 배치 기록 이 배치 할 대상 과 같 으 면 중복 배 치 를 하지 않 습 니 다.따라서 배치 할 때 설정 한 name,category,자원 이름과 내용 은 하나 만 다 르 면 걸 러 지지 않 습 니 다.
deploymentBuilder.enableDuplicateFiltering();//
4.배치 정보의 관리activiti 는 Deployment Query 라 는 인터페이스 에 배치 정 보 를 관리 하 는 api 를 패키지 하고 실현 류 를 제공 하 며 reposcory Service 서비스 구성 요 소 를 통 해 실제 대상 을 얻 습 니 다.
DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();
4.1 배치 정보 조회
@Test
public void test2() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();
// deploymentId
String deploymentId="4201";
Deployment singleResult = deploymentQuery.deploymentId(deploymentId)
.deploymentName("vacation-test").singleResult();
System.out.println(singleResult);
}
검색 할 때 deployment Query 대상 에 게 검색 조건 을 연결 합 니 다.여 기 는 체인 프로 그래 밍 을 지원 합 니 다.먼저 하나의 연결 조회 조건,마지막 으로 이것 을 지원 합 니 다.singleResult()방법 으로 조 회 를 실행 하고 결 과 를 되 돌려 줍 니 다.설 정 된 조건 에 따라 여러 결 과 를 되 돌려 주면 singleResult()를 호출 하면 이상 이 발생 합 니 다.이 때 는 여러 결 과 를 되 돌려 주 는 조회 방법 list()를 호출 해 야 합 니 다.
4.2 배치 정보 삭제
배치 정보 표 는 다른 표 와 외부 키 가 연결 되 어 있 기 때문에 배치 표 의 데 이 터 를 직접 삭제 하 는 것 은 삭제 할 수 없습니다.Repository Service 의 삭제 방법 으로 삭제 해 야 합 니 다.
@Test
public void test3() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
String deploymentId="4201";
boolean cascade=true;
repositoryService.deleteDeployment(deploymentId, cascade);
}
그 중에서 두 번 째 매개 변 수 는 캐 스 케 이 드 가 다른 표 의 데 이 터 를 삭제 할 지 여 부 를 표시 하고 트 루 에 게 직접 주면 됩 니 다.5.절차 정의 및 관리
5.1 프로 세 스 정의 정보 에 대한 설명
하나의 프로 세 스 파일 배치 가 성공 하면 배치 표 에 배치 정 보 를 기록 할 뿐만 아니 라 프로 세 스 정의 표 actre_procdef 에 프로 세 스 정의 정 보 를 추가 하여 배 치 된 프로 세 스 파일 이 정의 하 는 프로 세 스 를 설명 합 니 다.
그 중 에 이 키 를 조심 하 세 요필드 에 대응 하 는 것 은 프로 세 스 정의 파일 의 프로 세 스 노드 id 입 니 다.activiti 가 프로 세 스 를 열 때 이 필드 를 사용 해 야 합 니 다.
<process id="process" isExecutable="true">
<startEvent id="sid-26F630F1-0761-4247-8383-F63F913A310E"></startEvent>
<userTask id="usertask1" name="apply vecation" activiti:assignee="kermit"></userTask>
<sequenceFlow id="sid-85398367-B674-473A-B7AC-268635F0DF5D" sourceRef="sid-26F630F1-0761-4247-8383-F63F913A310E" targetRef="usertask1"></sequenceFlow>
<userTask id="usertask2" name="manager agree" activiti:assignee="kermit"></userTask>
<sequenceFlow id="sid-5372C6B1-7359-40AB-B0A4-3FF06F20790E" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
<endEvent id="sid-F621C8EF-13A5-4A49-BD5B-708BFB066576"></endEvent>
<sequenceFlow id="sid-BCF9087D-36F4-4EDE-BD88-013AC74AB93A" sourceRef="usertask2" targetRef="sid-F621C8EF-13A5-4A49-BD5B-708BFB066576"></sequenceFlow>
</process>
배치 정보 와 마찬가지 로 activiti 도 이 표 의 정 보 를 묘사 하 는 인터페이스 가 있 습 니 다.ProcessDefinition 은 스스로 실현 류 를 제공 합 니 다.5.2 프로 세 스 정의 정보 관리
activiti 는 ProcessDefinitionQuery 라 는 인 터 페 이 스 를 제공 하고 프로 세 스 정의 정보 조회 와 관련 된 api 를 패키지 합 니 다.검색 대상 의 가 져 오기 와 사용 은 Deployment Query 와 유사 합 니 다.
@Test
public void test1() {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
String processDefinitionKey="process";
List<ProcessDefinition> list = processDefinitionQuery.processDefinitionKey(processDefinitionKey).list();
for (ProcessDefinition processDefinition : list) {
System.out.println(processDefinition);
}
}
총화본 고 는 프로 세 스 정의 파일 을 어떻게 배치 하 는 지,그리고 배치 후 생 성 된 배치 정보 와 프로 세 스 정의 정보 에 대한 관 리 를 소개 한다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activiti 처리 오류activiti5.22.0, 작업 중 오류, taskService.complete(taskId); 오류 정보: [11-21 14:45:52] ERROR CommandContext [main]: Error while ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.