Los trabajos se expresan con un dialecto de XML (Extensible Markup Language) denominado xJCL (Lenguaje de control de trabajos XML). xJCL tiene construcciones para expresar toda la información necesaria para los trabajos por lotes o los trabajos con una actividad de proceso intensiva. Consulte el xJCL que se proporciona con las aplicaciones de ejemplo, el documento de esquema XSD de xJCL y la tabla xJCL para obtener más información sobre xJCL. Tenga en cuenta que la definición xJCL de un trabajo no forma parte de la aplicación de larga ejecución. Se construye separadamente y se somete al Scheduler de larga ejecución para su ejecución. El Scheduler de larga ejecución utiliza la información de xJCL para determinar dónde y cuándo se debe ejecutar el trabajo.
La siguiente tabla resume los elementos xJCL:
Elemento | Cálculo intensivo | Por lotes | Subelemento | Atributos | Descripción |
---|---|---|---|---|---|
job | S | S | Ámbito de la descripción de un trabajo por lotes. | ||
S | S | name | Nombre del trabajo. Tiene que coincidir con el nombre de la aplicación de larga ejecución | ||
S | S | jndi-name | Nombre JNDI que se asigna al bean de sesión sin estado del controlador de trabajos cuando la aplicación de larga ejecución se despliega en WebSphere Application Server. | ||
S | S | step-scheduling-criteria | Consulte el elemento step-scheduling-criteria | ||
N | S | checkpoint-algorithm | Consulte el elemento checkpoint-algorithm | ||
S | S | job-step | Consulte el elemento job-step | ||
job-step | |||||
S* | S | name | Nombre del paso. Esta información se devuelve en los mandatos operativos. | ||
N | S | step-scheduling | Consulte el elemento step-scheduling | Permite la lógica condicional basada en los códigos de retorno de los pasos, la cual determina si los pasos por lotes deben invocarse o no | |
N | S | checkpoint-algorithm-ref | Consulte el elemento checkpoint-algorithm-ref | Especifica el algoritmo de punto de control que se va a utilizar para el paso de trabajo por lotes. | |
S | N | classname | Nombre plenamente cualificado de la clase que implementa el trabajo con una actividad de proceso intensiva. | ||
N | S | JNDI-name | Nombre JNDI lógico de la factoría del bean de entidad (bean de paso por lotes) con el que el entorno de ejecución por lotes cargará el paso de trabajo por lotes. | ||
props | Consulte el elemento props | Propiedades nombre-valor que se van a pasar al paso | |||
N | S | batch-data-streams | Consulte el elemento batch-data-streams | Secuencia de elementos bds. Cada bds contiene la información de configuración necesaria para crear una secuencia de datos por lotes. | |
prop | S | S | Instancia única de un par de nombre y valor que sirve de propiedad. | ||
name | Nombre de la propiedad. | ||||
value | Valor de la propiedad. | ||||
props | S | S | Serie de elementos prop que se utilizan para pasar propiedades de pares de nombre y valor a los pasos, bds, algoritmos de punto de control y algoritmos de resultados. | ||
prop | Consulte el elemento prop | ||||
bds | N | S | Instancia única de implementación de una secuencia de datos por lotes a la que puede acceder el trabajo por lotes para utilizarla. | ||
logical-name | logical-name es una serie incorporada en el paso por lotes que éste utiliza para pedir al entorno de ejecución por lotes una instancia específica de secuencia de datos por lotes. | ||||
impl-class | Nombre de clase plenamente cualificado de la clase de implementación de la secuencia de datos por lotes. | ||||
props | Consulte el elemento Props | Lista de propiedades que se pasan a la clase de implementación de la secuencia de datos por lotes. | |||
batch-data-streams | N | S | Serie de elementos bds | ||
bds | Consulte el elemento bds | ||||
step-scheduling | N | S | Puede aplicarse al elemento job-steps para crear flujos condicionales según el código de retorno para un trabajo por lotes. Puede comparar los valores de códigos de retorno definidos para este trabajo por lotes para determinar si un paso debe invocarse o no durante el proceso de un trabajo por lotes. Los valores de códigos de retorno se comparan utilizando el elemento returncode-expression. | ||
returncode- expression | Consulte returncode-expression | Returncode- expression que se va a evaluar. | |||
condition | Si hay más de un elemento returncode-expression en el elemento step-scheduling, los operadores condicionales pueden aplicarse a éstos. Los operadores condicionales son: AND, OR. | ||||
returncode-expression | N | S | Se utiliza bajo los códigos de step-scheduling para decidir si un paso de trabajo por lotes va a ejecutarse en función de los códigos de retorno de otros pasos de trabajo. | ||
step | Nombre de paso cuyo código de retorno se va a comparar en esta expresión. | ||||
operator | Operador que se va a utilizar para la expresión de código de retorno. Los operadores admitidos son: eq (igual a), lt (menor que), gt (mayor que), le (menor o igual que), ge (mayor o igual que). | ||||
value | El valor con el que se va a comparar el código de retorno. | ||||
step-scheduling-criteria | N | S | Describe la secuencia en la que se procesarán los pasos de trabajo. Actualmente, se da soporte a la planificación secuencial, es decir, los pasos se invocan en el orden en el que aparecen en xJCL. | ||
scheduling-mode | Secuencia en la que deben invocarse los pasos, siendo secuencial el único valor posible en estos momentos. | ||||
checkpoint-algorithm | N | S | Declara un algoritmo de punto de control que puede utilizarse para un paso de trabajo por lotes. | ||
name | Nombre de algoritmo. | ||||
classname | Clase que implementa este algoritmo. | ||||
props | Consulte el elemento props | Secuencia de elementos prop para el algoritmo de punto de control. | |||
checkpoint-algorithm-ref | N | S | Referencia al elemento de un algoritmo de punto de control. | ||
name | Nombre del algoritmo de punto de control al que se hace referencia. | ||||
props | Consulte el elemento props | Secuencia de elementos prop para el algoritmo de punto de control. |
* Sólo se da soporte a los trabajos con una actividad de proceso intensiva y de un único paso.
<?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
Esquema XML para xJCL