El entorno de larga ejecución (LREE) utiliza 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 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. WebSphere Extended Deployment proporciona un algoritmo de punto de control basado en el tiempo y un algoritmo basado en el registro, y define una Interfaz de proveedor 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, LREE consulta al algoritmo de punto de control aplicado a ese paso si debe cometer la transacción global o no. Los métodos de retorno de llamada de los algoritmos de punto de control permiten a LREE que informe al algoritmo cuando se comete o se inicia una transacción global. Esto permite que el algoritmo haga un seguimiento del ciclo de vida de la transacción global. En todas las iteraciones del método processJobStep, LREE llama al método de retorno de llamada ShouldCheckpointBeExecuted del algoritmo para determinar si debería cometerse la transacción y es a través de este método que el algoritmo controla el intervalo de punto de control.
Para obtener la SPI de algoritmos de punto de control que puede utilizarse para crear algoritmos de punto de control personalizados, consulte la API por lotes para la SPI de algoritmos de punto de control, que se encuentra en la sección de referencia de Centro de información. El nombre de clase es com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
Dos algoritmos de punto de control se facilitan con este producto: el algoritmo basado en el tiempo y el algoritmo basado en el registro. Ambos se describen en las siguientes secciones.
<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.
El algoritmo de punto de control basado en el registro comete 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. Tenga en cuenta que processJobStep puede recuperar varios registros de una secuencia de datos por lotes por cada llamada pero para este algoritmo de punto de control un registro equivale a una llamada a 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 empresa 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 por omisión es de 10000.
Los algoritmos de punto de control se aplican a un trabajo por lotes mediante xJCL. Aunque varios algoritmos de punto de control pueden declararse en xJCL, sólo uno distinto puede aplicarse a cada paso por lotes. No se puede aplicar más de un algoritmo de punto de control a un paso por lotes.
A continuación aparece un ejemplo de cómo aplicar 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>
Related concepts
Modelo
de programación por lotes