Activiti 프로 세 스 파일 배치 프로 세 스 분석

bpmn 규범 으로 프로 세 스 정의 파일 을 정의 한 후 이 파일 을 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);
    }
  }
총화
본 고 는 프로 세 스 정의 파일 을 어떻게 배치 하 는 지,그리고 배치 후 생 성 된 배치 정보 와 프로 세 스 정의 정보 에 대한 관 리 를 소개 한다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기