LREE (long-running execution environment) utilizza gli algoritmi dei punti di controllo per determinare quando eseguire il commit delle transazioni globali dalle quali vengono richiamate le operazioni batch. Tali algoritmi vengono applicati a un processo batch mediante la definizione xJCL. Le proprietà specificate per gli algoritmi dei punti di controllo in xJCL consentono la personalizzazione del funzionamento del punto di controllo, come i timeout della transazioni e gli intervalli dei punti di controllo, per le operazioni batch. WebSphere Extended Deployment fornisce sia un algoritmo del punto di controllo basato sugli orari che uno basato sui record e definisce una SPI (service provider interface) per la creazione di algoritmi personalizzati aggiuntivi.
Per ogni iterazione dell'operazione batch del metodo processJobStep, LREE verifica chel'algoritmo del punto di controllo applicato all'operazione sia in grado di eseguire il commit della transazione globale. I metodi di richiamata sugli algoritmi dei punti di controllo consentono a LREE di informare l'algoritmo quando viene eseguito il commit o quando viene avviata una transazione globale. Ciò consente all'algoritmo di tenere traccia del ciclo della transazione globale. Per ogni iterazione del metodo processJobStep, LREE richiama il metodo di richiamata ShouldCheckpointBeExecuted sull'algoritmo per determinare se deve essere eseguito il commit della transazione e se è mediante questo metodo che l'algoritmo controlla l'intervallo del punto di controllo.
Fare riferimento all'API batch per la SPI dell'algoritmo del punto di controllo ubicata nella sezione Riferimenti all'Infocenter per la SPI che può essere utilizzata per creare gli algoritmi dei punti di controllo personalizzati. Il nome della classe è com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
Con questo prodotto sono rilasciati due algoritmi dei punti di controllo, uno basato sugli orari e uno basato sui record. Entrambi questi algoritmi vengono descritti nelle sezioni seguenti.
<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>
Le unità dell'intervallo e delle proprietà TransactionTimeOut nell'esempio precedente sono espresse in secondi.
L'algoritmo del punto di controllo basato sui record esegue il commit delle transazioni globali a un numero specificato di iterazioni del metodo processJobStep dell'operazione batch. Ogni chiamata al metodo processJobStep viene trattata come iterazione su un record. Il metodo processJobStep può richiamare più record da un flusso di dati batch per ogni chiamata ma per questo algoritmo un record è equivalente a una chiamata 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>
L'unità della proprietà TransactionTimeOut nell'esempio precedente è espressa in secondi.
Se non viene specificato in xJCL, il valore di timeout della transazione predefinito è 60 secondi e il numero di record predefinito è 10000.
Gli algoritmi dei punti di controllo vengono applicati a un processo batch mediante xJCL. È possibile dichiarare più algoritmi in xJCL ed è possibile applicare un algoritmo differente a ogni operazione batch. Non è possibile applicare più più di un algoritmo a un'operazione batch.
Di seguito è riportato un esempio di come applicare un algoritmo dei punti di controllo in 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
Modello di programmazione batch