Los puntos finales de Compute Grid 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. 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, el punto final de trabajo de larga duración (GEE) consulta al algoritmo de punto de control aplicado a ese paso si compromete la transacción global o no. Los métodos de retorno de llamada de los algoritmos de punto de control permiten a GEE que informe al algoritmo cuando se compromete o se inicia una transacción global. 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, GEE llama al método de retorno de llamada ShouldCheckpointBeExecuted del algoritmo para determinar si la transacción está comprometida. 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.
WebSphere Extended Deployment da soporte a dos algoritmos de punto de control: 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 compromete 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 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 predeterminado es de 10000.
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>