Os terminais de Compute Grid utilizam os algoritmos de ponto de verificação para determinar quando confirmar as transações globais sob as quais as etapas em lote são chamadas. Esses algoritmos são aplicados a uma tarefa em lote por meio da definição xJCL (XML Job Control Language). As propriedades especificadas para os algoritmos de ponto de verificação no xJCL permitem que o comportamento do ponto de verificação, como tempos limites da transação e intervalos do ponto de verificação, seja customizado para etapas em lote. O WebSphere Extended Deployment fornece um algoritmo de ponto de verificação baseado em tempo e um algoritmo baseado em registro e define a SPI (Interface do Provedor de Serviço) para construir algoritmos de ponto de verificação customizados adicionais.
Em cada iteração da etapa em lote do método processJobStep, o GEE (Grid Endpoint) consultará o algoritmo de ponto de verificação aplicado a essa etapa, confirmando ou não a transação global. Os métodos de retorno de chamada nos algoritmos de ponto de verificação permitem que o GEE informe ao algoritmo quando uma transação global é confirmada ou iniciada. Esse comportamento permite que o algoritmo acompanhe o ciclo de vida da transação global. Em cada iteração do método processJobStep, o GEE chama o método de retorno de chamada ShouldCheckpointBeExecuted no algoritmo para determinar se a transação foi confirmada. O algoritmo controla o intervalo de ponto de verificação por meio desse método.
Revise na API em lote o SPI do algoritmo de ponto de verificação, localizado na seção de referência do Centro de Informações, que pode ser utilizado para criar algoritmos de ponto de verificação customizados. O nome da classe é com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
O WebSphere Extended Deployment suporta dois algoritmos de ponto de verificação: o algoritmo baseado no tempo e o algoritmo baseado no registro. Ambos são explicados nas seções a seguir.
<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>
As unidades de intervalo e propriedades TransactionTimeOut no exemplo anterior são expressas em segundos.
O algoritmo de ponto de verificação baseado em registro confirma as transações globais em um número especificado de iterações do método processJobStep da etapa em lote. Cada chamada ao método processJobStep é tratada como sendo iterada através de um registro. O método processJobStep pode recuperar vários registros de um fluxo de dados em lote em cada chamada. No entanto, para esse algoritmo de ponto de verificação ,um registro é o equivalente a uma chamada para o 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>
A unidade da propriedade TransactionTimeOut no exemplo anterior é expressa em segundos.
Se não for especificado em xJCL, o tempo limite de transação padrão será de 60 segundos e a contagem de registro padrão será 10000.
Os algoritmos de ponto de verificação são aplicados a uma tarefa do batch através do xJCL. Você pode declarar vários algoritmos de ponto de verificação no xJCL e pode aplicar um algoritmo diferente para cada etapa em lote. Não é possível aplicar mais de um algoritmo de ponto de verificação a uma etapa em lote.
O exemplo a seguir aplica algoritmos de ponto de verificação no 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>