É possível construir um aplicativo em lote transacional como
uma tarefa e dividir a tarefa em tarefas subordinadas de forma que as tarefas
subordinadas possam ser executadas de maneira independente e em paralelo. Você
usa o gerenciador de tarefas paralelas para enviar e gerenciar as tarefas em lote
transacionais.
Antes de Iniciar
Para Usuários de Transição: Aplicativos de gerenciamento de tarefas paralelas construídos para versões anteriores do WebSphere Batch podem executar como em um
WebSphere Application Server Versão 8.5. Entretanto, siga o mesmo procedimento de ter dois arquivos
xJCl, um arquivo
xd.spi.properties e uma biblioteca compartilhada configurada para duas implementações SPI. Ao usar o aplicativo no estado em que se encontra, não execute as etapas do procedimento a seguir.
trns
Para Usuários de Transição: É possível migrar aplicativos de gerenciamento de tarefas paralelas para o
WebSphere Application Server Versão 8.5. Inclua as classes de implementação da API no aplicativo EAR. Recrie o xJCL conforme descrito no procedimento a seguir.
trns
Sobre Esta Tarefa
As tarefas subordinadas são desenvolvidas para sua tarefa para que as tarefas subordinadas possam ser executadas
de maneira independente e em paralelo. Primeiro desenvolva os critérios que dividem as tarefas em tarefas subordinadas.
Em
seguida, construa um aplicativo em lote simples e torne as partes do aplicativo paralelas. Finalmente, crie o xJCl para as
tarefas subordinadas para que em um outro procedimento você possa implementar o aplicativo após outro procedimento.
Procedimento
- Desenvolva os critérios que dividem as tarefas em tarefas subordinadas.
Por exemplo, divida as tarefas em tarefas subordinadas baseadas nas filiais do banco, com a tarefa subordinada para cada
filial baseada no local da filial. Para uma determinada filial do banco, faça com que a tarefa subordinada calcule o saldo
de cada conta no final do dia com base nas transações diárias para cada conta.
- Construa um aplicativo em lote simples para processar as informações como uma tarefa.
- Torne as partes do aplicativo paralelas.
Implemente a API do parâmetro para dividir a tarefa para o aplicativo em lote em diversas tarefas subordinadas.
- Opcional: Colete informações sobre uma tarefa subordinada que esteja em execução.
Use a API SubJobCollector para coletar as informações.
- Opcional: Analise as informações coletadas sobre a tarefa subordinada.
Use a API SubJobAnalyzer para analisar as informações.
- Crie o xJCL.
Inicie com o xJCL a partir da tarefa que você criou para o aplicativo em lote simples.
- Especifique o elemento de execução como um filho do elemento da tarefa.
- Configure o atributo de instâncias no elemento de execução como multiple.
- Configure o atributo da Java™ Virtual Machine (JVM) no elemento de execução como
single ou multiple.
Use o atributo single para executar todas as tarefas subordinadas
no mesmo JVM. Use o atributo multiple para executar as tarefas subordinadas em qualquer JVM válido.
<run instances="multiple" jvm="multiple">
É possível especificar o elemento de execução como um filho de uma etapa. Nesta situação, a etapa é executada como uma
tarefa paralela. O conteúdo da etapa do xJCL é usado para gerar uma tarefa subordinada da etapa xJCL.
- Especifique um elemento prop como um filho do elemento de execução para cada API PJM.
- Especifique a API PJM no atributo de nome.
As APIs a seguir são válidas para o PJM:
- com.ibm.websphere.batch.parallel.parameterizer
- com.ibm.websphere.batch.parallel.synchronization
- com.ibm.websphere.batch.parallel.subjobanalyzer
- com.ibm.websphere.batch.parallel.subjobcollector
- Configure o atributo de valor com um nome para a API.
- Inclua um elemento prop para especificar o nome da tarefa subordinada.
- Configure o atributo de nome como com.ibm.wsspi.batch.parallel.subjob.name.
- Configure o atributo de valor com o nome da tarefa.
- Opcional: Inclua um elemento prop para indicar a contagem de tarefas.
- Configure o atributo de nome como parallel.jobcount.
- Configure o atributo de valor com um valor para a contagem de tarefas.
- Especifique quaisquer outras propriedades no nível da tarefa.
<run instances="multiple" jvm="multiple">
<props>
<prop name="com.ibm.websphere.batch.parallel.parameterizer"
value="com.ibm.websphere.samples.spi.MailerParameterizer"/>
<prop name="com.ibm.websphere.batch.parallel.synchronization"
value="com.ibm.websphere.samples.spi.MailerTXSynchronization"/>
<prop name="com.ibm.websphere.batch.parallel.subjobanalyzer"
value="com.ibm.websphere.samples.spi.MailerSubJobAnalyzer"/>
<prop name="com.ibm.websphere.batch.parallel.subjobcollector"
value="com.ibm.websphere.samples.spi.MailerSubJobCollector"/>
<prop name="com.ibm.wsspi.batch.parallel.subjob.name"
value="MailerSampleSubJob" />
<!-- The count of parallel sub jobs to be submitted -->
<prop name="parallel.jobcount" value="3" />
</props>
</run>
- Inclua as mesmas três propriedades no nível da etapa em cada etapa no xJCL.
<prop name="com.ibm.wsspi.batch.parallel.jobname" value="${parallel.jobname}" />
<prop name="com.ibm.wsspi.batch.parallel.logicalTXID" value="${logicalTXID}" />
<prop name="com.ibm.wsspi.batch.parallel.jobmanager" value="${parallel.jobmanager}" />
Resultados
Você criou uma tarefa com tarefas subordinadas que podem ser executadas de forma independente e em paralelo.
O que Fazer Depois
Implemente o aplicativo como implementaria outros aplicativos em lote.