Uma etapa em lote genérico tolerante a erro funciona com exatamente um fluxo de entrada, um fluxo de saída e um fluxo de erro. Essa etapa, durante cada iteração do loop do lote, lê uma única entrada do fluxo de entrada de Batch Data Stream (BDS) e transmite-a ao BatchRecordProcessor para processamento.
Antes de Começar
O BatchRecordProcessor pode retornar um objeto de dados válidos ou um valor nulo no caso de um erro tolerável. Se o valor retornado for nulo, a leitura do registro no inputStream será registrada no fluxo de erro e o método
invalidRecordEncountered será invocado no ThresholdPolicy. O política de limite determina se o limite de tolerância ao erro foi atingido. Se foi assim, ele retorna STEP_CONTINUE_FORCE_CHECKPOINT_BEFORE_PROCESSING_CANCEL, o que força um ponto de verificação e coloca a tarefa no estado reiniciável. Caso contrário, a tarefa continuará normal. Se os dados retornados pelo BatchRecordProcessor.processRecord forem válidos, eles serão transmitidos ao Fluxo de saída de BDS.
Sobre Esta Tarefa
Tabela 1. Propriedades Obrigatórias
Nome da Propriedade |
Valor |
Descrição |
threshold_policy
|
nome da classe Java
|
Classe que implementa a interface com.ibm.websphere.batch.devframework.thresholdpolicies.ThresholdPolicy
|
BATCHRECORDPROCESSOR
|
nome da classe Java
|
Classe que implementa a interface BatchRecordProcessor
|
Tabela 2. Propriedades Opcionais
Propriedade |
Valor |
Descrição |
debug
|
verdadeiro ou falso (o valor padrão é falso)
|
Ativar o rastreio e a depuração na etapa
|
EnablePerformanceMeasurement
|
verdadeiro ou falso (o valor padrão é falso)
|
Medir o tempo gasto dentro da etapa
|
Procedimento
-
Implemente a interface com.ibm.websphere.batch.devframework.steps.technologyadapters.BatchRecordProcessor para fornecer a lógica de negócios para a etapa. O xJCL para a etapa deve declarar uma propriedade BATCHRECORDPROCESSOR com o valor configurado como a implementação da interface. Exemplo
...
<props>
<prop name="BATCHRECORDPROCESSOR" value="com.ibm.websphere.batch.samples.tests.steps.InfrastructureVerificationTest"/>
</props>
...
-
Implemente a interface com.ibm.websphere.batch.devframework.thresholdpolicies.ThresholdPolicy para fornecer a política de limite para a etapa. Também é possível usar as implementações do produto, como com.ibm.websphere.batch.devframework.thresholdpolicies.PercentageBasedThresholdPolicy ou
com.ibm.websphere.batch.devframework.thresholdpolicies.RecordBasedThresholdPolicy.
Declare a ThresholdPolicy para usar no xJCL, conforme mostrado no seguinte trecho de código:
...
<props>
<prop name="threshold_policy" value="com.ibm.websphere.batch.devframework.thresholdpolicies.PercentageBasedThresholdPolicy"/>
</props>
...
-
Configure o nome lógico do fluxo de entrada de BDS como inputStream e um nome lógico do fluxo de saída de BDS como outputStream e o fluxo de saída de BDS de erros como errorStream. Os nomes lógicos são declarados no xJCL. Exemplo
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
....
</bds>
<bds>
<logical-name>outputStream</logical-name>
<props>
...
</bds>
<bds>
<logical-name>errorStream</logical-name>
<props>
...
</bds>
</batch-data-streams>
-
Ao usar o BatchPackager para empacotamento, o aplicativo jobstepclass deverá ser configurado como com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep.
Exemplo
ejbname.1=IVTStep1
jndiname.1=ejb/MyThresholdBatchStep
jobstepclass.1=com.ibm.websphere.batch.devframework.steps.technologyadapters.ThresholdBatchStep