병렬 작업 관리자(PJM)
병렬 작업 관리자(PJM)는 독립된 병렬 종속 작업의 통합 콜렉션으로 실행되는 트랜잭션 일괄처리 작업을 제출하고 관리하는 기능 및 프레임워크를 제공합니다.
PJM 기본
- 병렬 작업 관리자는 별도의 시스템 애플리케이션이 아니라 일괄처리 컨테이너에 있습니다.
- 한 개의 xJCL 파일만 필요합니다. xJCL은 최상위 레벨 작업 xJCL의 컨텐츠를 종속 작업 xJCL의 컨텐츠와 결합합니다.
- 별도의 데이터베이스를 작성할 필요가 없습니다.
- PJM이 일괄처리 컨테이너의 파트이기 때문에 PJM을 설치하고 구성할 필요가 없습니다.
- PJM API는 유틸리티 JAR(Java™ archive)로 일괄처리 애플리케이션에 패키지합니다. 공유 라이브러리는 필요하지 않습니다.
- xd.spi.properties 파일의 컨텐츠는 xJCL의 파트입니다. xd.spi.properties 파일이 필요하지 않습니다.
API의 PJM 조작 및 호출
다음 두 이미지는 PJM 아키텍처와 병렬 작업의 시퀀스를 설명합니다. 우선, xJCL은 작업 스케줄러에 제출됩니다. 작업 스케줄러는 xJCL을 xJCL이 참조하는 애플리케이션을 실행하는 엔드포인트로 디스패치합니다. 일괄처리 컨테이너는 작업이 xJCL에서 작업의 실행 특성을 검사하여 종속 작업이 병렬로 실행되어야 하는지를 판별합니다. 일괄처리 컨테이너는 실행을 PJM 하위 컴포넌트로 위임합니다. PJM은 parameterizer API를 호출하고 xJCL의 정보를 사용하여 작업을 종속 작업으로 분할할 수 있습니다. 그러면 PJM은 LogicalTX 동기화 API를 호출하여 논리 트랜잭션 시작을 표시합니다. PJM은 종속 작업 xJCL을 생성하고 종속 작업을 작업 스케줄러에 제출합니다. 작업 스케줄러는 종속 작업을 일괄처리 컨테이너 엔드포인트로 디스패치하여 다시 실행될 수 있도록 합니다. 일괄처리 컨테이너는 종속 작업을 실행합니다. 체크포인트가 사용되면 종속 작업 콜렉터 API가 호출됩니다. 이 API는 종속 작업에 대한 관련 상태 정보를 수집합니다. 이 데이터는 해석을 위해 종속 작업 분석기 API로 전송됩니다. 모든 종속 작업이 최종 상태에 도달한 후 beforeCompletion 및 afterCompletion 동기화 API가 호출됩니다. 분석기 API도 작업의 리턴 코드를 계산하기 위해 호출됩니다.
논리 트랜잭션은 병렬 작업 실행 전반에 사용되는 작업 경계 단위입니다. 해당 라이프사이클은 병렬 작업의 종속 작업에 대해 결합된 라이프사이클에 해당합니다. 확장 메커니즘으로 인해 애플리케이션 관리 자원을 사용자 정의할 수 있으며 이를 통해 커미트 및 롤백을 위한 이 작업 범위 단위로 제어 가능합니다.
PJM 아키텍처 및 프로그래밍 모델
다음 이미지는 PJM 아키텍처를 요약하며 이는 API가 호출되는 위치를 보여줍니다.

병렬 작업 순서
다음 이미지는 병렬 작업의 이벤트 순서를 보여줍니다.

PJM 작업 관리
- 모든 종속 작업이 종료됨 상태로 완료되면, 즉, 성공적으로 완료되는 경우 최상위 레벨 작업은 종료됨 상태로 완료됩니다.
- 종속 작업이 다시 사용 가능 상태로 완료되고 실패 상태로 종료된 종속 작업은 없는 경우 최상위 레벨 작업은 다시 시작 가능 상태로 완료됩니다.
- 실패 상태로 완료된 종속 작업이 있는 경우 최상위 레벨 작업은 실패 상태로 완료됩니다.
- 최상위 레벨 작업 및 종속 작업이 다시 시작 가능 상태인 경우 최상위 레벨 작업만 다시 시작하십시오. 수동으로 다시 시작된 종속 작업이 있는 경우, 최상위 레벨 작업은 논리 트랜잭션을 제대로 처리하지 않습니다.