작업은 xJCL(XML Job Control Language)이라고 하는 XML(Extensible Markup Language) 언어를 사용하여 표시합니다. xJCL은 일부 요소가 연산 집약적 작업이나 일괄처리 작업에만 적용 가능하지만 연산 집약적 및 일괄처리 작업 둘 다에 필요한 모든 정보를 표시하는 구성을 가지고 있습니다. xJCL에 대한 자세한 정보는 샘플 응용프로그램과 함께 제공되는 xJCL, xJCL 테이블 및 xJCL XSD 스키마 문서를 참조하십시오. 작업의 xJCL 정의는 장기간 실행 응용프로그램의 일부가 아닙니다. 정의는 별도로 구성된 후에 실행을 위해 장기간 실행 스케줄러에 제출됩니다. 장기간 실행 스케줄러는 xJCL의 정보를 사용하여 작업을 실행해야 하는 위치 및 시기를 판별합니다.
다음 표에서는 xJCL 요소를 요약합니다.
요소 | 연산 집약적 | 일괄처리 | 하위 요소 | 속성 | 설명 |
---|---|---|---|---|---|
job | Y | Y | 일괄처리 작업 설명의 범위입니다. | ||
Y | Y | name | 작업의 이름입니다. 이 이름은 장기간 실행 응용프로그램의 이름과 일치해야 합니다. | ||
Y | Y | jndi-name | 장기간 실행 응용프로그램이 WebSphere Application Server에 전개될 때 작업 제어기 Stateless 세션 Bean에 지정되는 JNDI 이름입니다. | ||
Y | Y | step-scheduling-criteria | step-scheduling-criteria 요소 참조 | ||
N | Y | checkpoint-algorithm | checkpoint-algorithm 요소 참조 | ||
Y | Y | job-step | job-step 요소 참조 | ||
job-step | |||||
Y* | Y | name | 단계의 이름입니다. 이 정보는 조작 명령에 대해 리턴됩니다. | ||
N | Y | step-scheduling | step-scheduling 요소 참조 | 일괄처리 단계의 호출 여부를 판별하는 단계의 리턴 코드에 따라 조건부 논리에 허용됩니다. | |
N | Y | checkpoint-algorithm-ref | checkpoint-algorithm-ref 요소 참조 | 일괄처리 작업 단계에 사용할 체크포인트 알고리즘을 지정합니다. | |
Y | N | classname | 연산 집약적 작업을 구현하는 클래스의 완전한 이름입니다. | ||
N | Y | JNDI-name | 일괄처리 실행 환경에서 일괄처리 작업 단계를 로드할 때 함께 사용하는 엔티티 Bean(일괄처리 단계 Bean)에 대한 홈의 논리 JNDI 이름입니다. | ||
props | props 요소 참조 | 단계에 전달할 이름-값 특성 | |||
N | Y | batch-data-streams | batch-data-streams 요소 참조 | bds 요소의 순서입니다. 각 bds는 일괄처리 데이터 스트림을 작성하는 데 필요한 구성 정보입니다. | |
prop | Y | Y | 특성으로 제공되는 이름/값 쌍의 단일 인스턴스입니다. | ||
name | 특성의 이름입니다. | ||||
value | 특성의 값입니다. | ||||
props | Y | Y | 이름-값 쌍 특성을 단계, bds, 체크포인트 알고리즘 및 결과 알고리즘에 전달할 때 사용하는 일련의 prop 요소입니다. | ||
prop | prop 요소 참조 | ||||
bds | N | Y | 사용할 일괄처리 작업에서 사용 가능한 일괄처리 데이터 스트림 구현의 단일 인스턴스입니다. | ||
logical-name | logical-name은 일괄처리 단계에서 일괄처리 실행 환경에 특정 일괄처리 데이터 스트림 인스턴스를 요청할 때 사용하는 일괄처리 단계에 임베드된 문자열입니다. | ||||
impl-class | 일괄처리 데이터 스트림 구현 클래스의 완전한 클래스 이름입니다. | ||||
props | Props 요소 참조 | 일괄처리 데이터 스트림 구현 클래스에 전달되는 특성 목록입니다. | |||
batch-data-streams | N | Y | 일련의 bds 요소입니다. | ||
bds | bds 요소 참조 | ||||
step-scheduling | N | Y | 일괄처리 작업에 대해 리턴 코드 기반 조건부 플로우를 작성하기 위해 작업 단계에 적용할 수 있습니다. 일괄처리 작업에 정의된 리턴 코드의 값을 비교하여 일괄처리 작업을 처리하는 동안 단계를 호출해야 하는지 여부를 결정할 수 있습니다. 리턴 코드의 값은 returncode-expression 요소를 사용하여 비교합니다. | ||
returncode- expression | returncode-expression 참조 | 평가할 returncode-expression입니다. | |||
condition | step-scheduling 요소에 둘 이상의 returncode-expression 요소가 있는 경우 조건부 연산자를 해당 요소에 적용할 수 있습니다. 지원되는 조건부 연산자는 AND, OR입니다. | ||||
returncode-expression | N | Y | 다른 작업 단계의 리턴 코드를 기초로 일괄처리 작업 단계를 실행해야 하는지 여부를 결정하기 위해 step-scheduling 태그에서 사용됩니다. | ||
step | 이 표현식에서 리턴 코드를 비교할 단계의 이름입니다. | ||||
operator | 리턴 코드 표현식에서 사용할 연산자입니다. 지원되는 연산자는 eq(같음), lt(미만), gt(초과), le(이하), ge(이상)입니다. | ||||
value | 리턴 코드를 비교할 값입니다. | ||||
step-scheduling-criteria | N | Y | 작업 단계를 처리하는 순서를 설명합니다. 현재 순차적 스케줄링이 지원됩니다. 즉, xJCL에 나타나는 순서대로 단계를 호출합니다. | ||
scheduling-mode | 단계를 호출할 순서. 현재 sequential 값만 사용 가능합니다. | ||||
checkpoint-algorithm | N | Y | 일괄처리 작업 단계에 사용할 수 있는 체크포인트 알고리즘을 선언합니다. | ||
name | 알고리즘 이름입니다. | ||||
classname | 이 알고리즘을 구현하는 클래스입니다. | ||||
props | props 요소 참조 | 체크포인트 알고리즘에서 prop 요소의 순서입니다. | |||
checkpoint-algorithm-ref | N | Y | 체크포인트 알고리즘 요소에 대한 참조입니다. | ||
name | 참조할 체크포인트 알고리즘의 이름입니다. | ||||
props | props 요소 참조 | 체크포인트 알고리즘에서 prop 요소의 순서입니다. |
* 단일 단계 연산 집약적 작업만 지원됩니다.
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="classname" type="xsd:string" /> <xsd:element name="impl-class" type="xsd:string" /> <xsd:element name="jndi-name" type="xsd:string" /> <xsd:element name="logical-name" type="xsd:string" /> <xsd:element name="scheduling-mode" type="xsd:string" /> <xsd:element name="batch-data-streams"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="bds"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="bds"> <xsd:complexType> <xsd:sequence> <xsd:element ref="logical-name" minOccurs="1" maxOccurs="1"/ > <xsd:element ref="impl-class" minOccurs="1" maxOccurs="1"/ > <xsd:element ref="props" minOccurs="0" maxOccurs="1"/ > </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="checkpoint-algorithm"> <xsd:complexType> <xsd:sequence> <xsd:element ref="classname" minOccurs="1" maxOccurs="1"/> <xsd:element ref="props" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="checkpoint-algorithm-ref"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="results-algorithm"> <xsd:complexType> <xsd:sequence> <xsd:element ref="classname" minOccurs="1" maxOccurs="1"/> <xsd:element ref="props" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="results-algorithms"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="results- algorithm" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="results-ref"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="job"> <xsd:complexType> <xsd:sequence> <xsd:element ref="jndi-name" minOccurs="1" maxOccurs="1"/> <xsd:element ref="step-scheduling-criteria" minOccurs="1" maxOccurs="1"/> <xsd:element ref="checkpoint-algorithm" maxOccurs="unbounded" <minOccurs="1"/> <xsd:element ref="results-algorithms" maxOccurs="1" minOccurs="0"/> <xsd:element ref="job-step" maxOccurs="unbounded" minOccurs="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="job-step"> <xsd:complexType> <xsd:sequence> <xsd:choice> <!-- jndi-name for batch jobs --> <xsd:element ref="jndi-name" minOccurs="1" maxOccurs="1"/> <!-- classname for compute intensive jobs --> <xsd:element ref="classname" minOccurs="1" maxOccurs="1"/> </xsd:choice> <xsd:element ref="step-scheduling" minOccurs="0" maxOccurs="1"/> <xsd:element ref="checkpoint-algorithm-ref" minOccurs="0" maxOccurs="1"/> <xsd:element ref="batch-data-streams" minOccurs="0" maxOccurs="1"/> <xsd:element ref="props" minOccurs="0" maxOccurs="1"/> <xsd:element ref="results-ref" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="optional" /> </xsd:complexType> </xsd:element> <xsd:element name="prop"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="value" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="props"> <xsd:complexType> <xsd:sequence> <xsd:element ref="prop" maxOccurs="unbounded" minOccurs="1"/> </xsd:sequence> </xsd:complexType> /xsd:element <xsd:element name="returncode-expression"> <xsd:complexType> <xsd:attribute name="step" type="xsd:string" use="required" /> <xsd:attribute name="operator" type="xsd:string" use="required" /> <xsd:attribute name="value" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="step-scheduling"> <xsd:complexType> <xsd:sequence> <xsd:element ref="returncode-expression" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="condition" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> <xsd:element name="step-scheduling-criteria"> <xsd:complexType> <xsd:sequence> <xsd:element ref="scheduling-mode" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <job name="SampleEar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <jndi-name>ejb/com/ibm/websphere/samples/PostingsJob</jndi-name> <step-scheduling-criteria> <scheduling-mode>sequential</scheduling-mode> </step-scheduling-criteria> <checkpoint-algorithm name="timebased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname> <props> <prop name="interval" value="15" /> </props> </checkpoint-algorithm> <results-algorithms> <results-algorithm name="jobsum"> <classname>com.ibm.wsspi.batch.resultsalgorithms.jobsum</classname> </results-algorithm> </results-algorithms> <job-step name="Step1"> <jndi-name>ejb/DataCreationBean</jndi-name> <checkpoint-algorithm-ref name="timebased" /> <results-ref name="jobsum"/> <batch-data-streams> <bds> <logical-name>myoutput</logical-name> <impl-class>com.ibm.websphere.samples.PostingOutputStream</impl-class> <props> <prop name="FILENAME" value="somefile”/> </props> </bds> </batch-data-streams> <props> <prop name="wsbatch.count" value="5000" /> </props> </job-step> <job-step name="Step2"> <step-scheduling condition="OR"> <returncode-expression step="Step1" operator="eq" value="0" /> <returncode-expression step="Step1" operator="eq" value="1" /> </step-scheduling> <jndi-name>ejb/PostingAccountData</jndi-name> <checkpoint-algorithm-ref name="timebased" / > <results-ref name="jobsum"/> <batch-data-streams> <bds> <logical-name>myinput</logical-name> <impl-class>com.ibm.websphere.samples.PostingStream</impl-class> <props> <prop name="FILENAME" value="somefile" /> </props> </bds> </batch-data-streams> </job-step> </job>
<?xml version="1.0" encoding="UTF-8"?> <job name="SimpleCIEar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <jndi-name>ejb/com/ibm/ws/ci/SimpleCIEJB</jndi-name> <job-step name="Step1"> <classname>com.ibm.websphere.ci.samples.SimpleCIWork</classname> <props> <prop name="calculationTimeInSecs" value="30" /> <prop name="outputFileName" value="SimpleCI_output_file" /> </props> </job-step> </job>
Related concepts
xJCL용 XML 스키마