Algoritmos de punto de control
Los puntos finales de trabajos de larga duración utilizan algoritmos de punto de control para determinar cuándo comprometer transacciones globales bajo las cuales se invocan los pasos por lotes. Estos algoritmos se aplican a un trabajo por lotes a través de la definición de lenguaje de control de trabajos XML (xJCL). Las propiedades especificadas para los algoritmos de punto de control en xJCL permiten que se personalice, para los pasos por lotes, el comportamiento de los puntos de control como, por ejemplo, los tiempos de espera excedido de transacción y los intervalos de puntos de control. El producto proporciona un algoritmo de punto de control basado en tiempo y un algoritmo basado en registro, y define una interfaz de programación de servicio (SPI) para crear algoritmos de punto de control personalizados adicionales.
En todas las repeticiones de un paso por lotes del método processJobStep, el contenedor de proceso por lotes común consulta al algoritmo de un punto de control aplicado a este paso si se confirma la transacción global o no. Los métodos de devolución de llamada de los algoritmos de punto de control permiten que un contenedor de proceso por lotes común informe al algoritmo cuando se confirma o se inicia la transacción. Este comportamiento permite que el algoritmo haga un seguimiento del ciclo de vida de la transacción global. En todas las repeticiones del método processJobStep, el contenedor de proceso por lotes común llama al método de devolución de llamada ShouldCheckpointBeExecuted del algoritmo para determinar si se ha confirmado la transacción. El algoritmo controla el intervalo de punto de control utilizando este método.
Para obtener la SPI de algoritmos de punto de control que puede utilizar para crear algoritmos de punto de control personalizados, revise la API por lotes para la SPI de algoritmos de punto de control, que se encuentra en la sección de referencia del Information Center. El nombre de clase es com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
El producto soporta dos algoritmos de punto de control: el algoritmo basado en tiempo y el algoritmo basado en registro. Ambos se describen en las siguientes secciones.
Algoritmo basado en el tiempo
<checkpoint-algorithm name="timebased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname>
<props>
<prop name="interval" value="15" />
<prop name="TransactionTimeOut" value="30" />
</props>
</checkpoint-algorithm>
Las unidades de intervalo y de las propiedades TransactionTimeOut del ejemplo anterior se expresan en segundos.
Algoritmo basado en el registro
El algoritmo de punto de control basado en el registro confirma transacciones globales en función de un número específico de iteración del método processJobStep de un paso por lotes. Todas las llamadas al método processJobStep son tratadas con iteraciones a través de un registro. El método processJobStep puede recuperar varios registros de una secuencia de datos por lotes en cada llamada. No obstante, para este algoritmo de punto de control un registro equivale a una llamada a al método processJobStep.
<checkpoint-algorithm name="recordbased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname>
<props>
<prop name="recordcount" value="1000" />
<prop name="TransactionTimeOut" value="60" />
</props>
</checkpoint-algorithm>
La unidad de la propiedad TransactionTimeOut del ejemplo anterior se expresa en segundos.
Si no se especifica en xJCL, el tiempo de espera excedido de transacción es de 60 segundos y el recuento de registros predeterminado es de 10000.
Aplicación de un algoritmo de punto de control a un paso por lotes
Los algoritmos de punto de control se aplican a un trabajo por lotes mediante xJCL. Puede declarar varios algoritmos de punto de control en xJCL y puede aplicar un algoritmo diferente a cada paso por lotes. No puede aplicar más de un algoritmo de punto de control a un paso por lotes.
El siguiente ejemplo aplica algoritmos de punto de control en xJCL:
<job name="PostingsSampleEar">
<checkpoint-algorithm name="timebased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname>
<props>
<prop name="interval" value="15" />
<prop name=" TransactionTimeOut" value="30" />
</props>
</checkpoint-algorithm>
<checkpoint-algorithm name="recordbased">
<classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname>
<props>
<prop name="recordcount" value="1000" />
<prop name="TransactionTimeOut" value="60" />
</props>
</checkpoint-algorithm>
<job-step name="Step1">
<checkpoint-algorithm-ref name="timebased" />
</job-step>
<job-step name="Step2">
<checkpoint-algorithm-ref name="recordbased" />
</job-step></job>