O LREE (Long-running Execution Environment) utiliza os algoritmos de ponto de verificação para determinar quando consolidar as transações globais sob as quais as etapas de batch são chamadas. Esses algoritmos são aplicados a uma tarefa do batch através da definição xJCL. 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 de batch. 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 de etapa de batch do método processJobStep, o LREE consulta o algoritmo de ponto de verificação aplicado a essa etapa, se tiver que confirmar a transação global ou não. Os métodos de retorno de chamada nos algoritmos de ponto de verificação permitem que o LREE informe ao algoritmo quando uma transação global é confirmada ou iniciada. Isso permite que o algoritmo acompanhe o ciclo de vida da transação global. Em cada iteração do método processJobStep, o LREE chama o método de retorno de chamada ShouldCheckpointBeExecuted no algoritmo para determinar se a transação deve ser confirmada e através desse método o algoritmo controla o intervalo do ponto de verificação.
Consulte a API de batch para o SPI do algoritmo de ponto de verificação, localizado na seção Referência Infocenter, para o SPI do algoritmo de ponto de verificação que pode ser utilizado para criar algoritmos de ponto de verificação customizados. O nome da classe é com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
Dois algoritmos de ponto de verificação são fornecidos com esse produto; o algoritmo baseado em tempo e o algoritmo baseado em 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 de batch. Cada chamada ao método processJobStep é tratada como iterada através de um registro. Observe que o processJobStep pode recuperar vários registros de um fluxo de dados de batch em cada chamada mas, para esse algoritmo de ponto de verificação ,um registro é equivalente a uma chamada para 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. Vários algoritmos de ponto de verificação podem ser declarados no xJCL e um diferente pode ser aplicado a cada etapa de batch. Não pode ser aplicado mais de um algoritmo de ponto de verificação a uma etapa de batch.
A seguir encontra-se um exemplo de como aplicar os 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>
Related concepts
O Modelo
de Programação em Batch