Implementando um Aplicativo em Lote OSGi
É possível compactar um aplicativo existente em lote como um aplicativo OSGi. Em seguida, você implementa o pacote para que possa expor artefatos em lote como serviços, tornando esses artefatos visíveis no contêiner de lote.
Sobre Esta Tarefa
Empacote um aplicativo em lote OSGi, modifique o arquivo xml do blueprint para descrever artefatos em lote como serviços e exporte o aplicativo em lote OSGi como um archive de pacotes configuráveis corporativos (EBA). Em seguida, crie o xJCL. Finalmente, implemente o aplicativo em lote OSGi.
Procedimento
- Empacote um aplicativo em lote OSGi.
O aplicativo em lote OSGi é empacotado como um EBA. O EBA contém pelo menos seu pacote configurável em lote, que é um pacote configurável do blueprint. O pacote configurável da API e os pacotes configuráveis do dispatcher são instalados uma vez no repositório interno de pacotes configuráveis.
Leia o tópico sobre como criar um pacote configurável do cliente e siga as etapas para empacotar seu aplicativo OSGi.
- Crie o xml do blueprint.
Você deve declarar as etapas da tarefa e os fluxos de dados em lote como serviços para que o planejador possa chamá-los. Se o seu aplicativo em lote OSGi implementar um algoritmo de política de ponto de verificação ou um algoritmo de resultados, você também deverá declarar como um serviço cada algoritmo que o aplicativo implementar.
- Declare cada etapa da tarefa como um serviço do blueprint.
- Configure o atributo da interface.
- Se a etapa for uma etapa com cálculo intenso, configure o atributo como com.ibm.websphere.ci.CIWork.
- Se a etapa for uma etapa em lote transacional, configure o atributo como com.ibm.websphere.batch.BatchJobStepInterface.
- Configure o atributo ref com o ID do bean que declara o bean da etapa.
- Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java™ que implementa a etapa.
- Declare um bean para a classe Java que implementa a etapa.
- Configure o atributo de escopo como prototype.
Exemplo de etapa de cálculo intenso:
<bean id="IVTStep1" class="com.ibm.websphere.batch.samples.tests.steps.GenerateDataStep" scope="prototype"/> <service ref="IVTStep1" interface="com.ibm.websphere.ci.CIWork" id="step1"> <service-properties> <entry key="xjcl:classname" value="com.ibm.websphere.batch.samples.tests.steps.GenerateDataStep"/> </service-properties> </service>
Exemplo de etapa em lote transacional:
<bean id="EchoStep2" class="com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep" scope="prototype"/> <service ref="EchoStep2" interface="com.ibm.websphere.batch.BatchJobStepInterface" id="echostep1"> <service-properties> <entry key="xjcl:classname" value="com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep"/> </service-properties> </service>
- Configure o atributo da interface.
- Declare cada fluxo de dados em lote como um serviço do blueprint.
- Configure o atributo de interface como com.ibm.websphere.batch.BatchDataStream.
- Configure o atributo ref com o ID de bean que declara o bean do fluxo de dados em lote.
- Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java que implementa o fluxo de dados em lote.
- Declare um bean para a classe Java que implementa o fluxo de dados em lote.
- Configure o atributo de escopo como prototype.
Exemplo de fluxo de dados em lote:
<bean id="output" class="com.ibm.websphere.batch.samples.tests.bds.TestOutputBatchDataStream" scope="prototype"/> <service ref="output" interface="com.ibm.websphere.batch.BatchDataStream" id="out1"> <service-properties> <entry key="xjcl:impl-class" value="com.ibm.websphere.batch.samples.tests.bds.TestOutputBatchDataStream"/> </service-properties> </service>
- Declare o algoritmo da política de ponto de verificação como um serviço do blueprint.
Se o seu aplicativo em lote OSGi implementar um algoritmo de política de ponto de verificação, declare o algoritmo como um serviço do blueprint. Caso contrário, ignore esta etapa.
- Configure o atributo de interface como com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
- Configure o atributo ref para o ID do bean que declara o bean do ponto de verificação.
- Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java que implementa o algoritmo da política do ponto de verificação.
- Declare um bean para a classe Java que implemente o algoritmo de política de ponto de verificação.
- Configure o atributo de escopo como prototype.
Exemplo de algoritmo de política de ponto de verificação:
<bean id="chkpt" class="com.ibm.websphere.batch.samples.MyCheckpointAlgorithm" scope="prototype"/> <service ref="chkpt" interface="com.ibm.wsspi.batch.CheckpointPolicyAlgorithm" id="ck1"> <service-properties> <entry key="xjcl:impl-class" value="com.ibm.websphere.batch.samples.MyCheckpointAlgorithm"/> </service-properties> </service>
- Declare o algoritmo de resultados como um serviço do blueprint.
Se o seu aplicativo em lote OSGi implementar um algoritmo de resultados, declare o algoritmo como um serviço do blueprint. Caso contrário, ignore esta etapa.
- Configure o atributo da interface como com.ibm.wsspi.batch.ResultsAlgorithm.
- Configure o atributo ref com o ID do bean que declara o bean do algoritmo de resultados.
- Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java que implementa o algoritmo de resultados.
- Declare um bean para a classe Java que implemente o algoritmo de resultados.
- Configure o atributo de escopo como prototype.
Exemplo de algoritmo de resultados:
<bean id="myres" class="com.ibm.websphere.batch.samples.MyResultsAlgorithm" scope="prototype"/> <service ref="myres" interface="com.ibm.wsspi.batch.ResultsAlgorithm" id="r1"> <service-properties> <entry key="xjcl:impl-class" value="com.ibm.websphere.batch.samples.MyResultsAlgorithm"/> </service-properties> </service>
- Declare cada etapa da tarefa como um serviço do blueprint.
- Exporte o aplicativo em lote OSGi como um EBA.
- Crie o xJCL. Crie o xJCL como você faria para outros aplicativos em lote, com algumas poucas diferenças:
- Torne o atributo application-name na etapa da tarefa o nome do ativo implementado. O ativo implementado é uma unidade de composição.
- Torne o subelemento classname correspondência de etapa na propriedade xjcl:classname do serviço da etapa.O exemplo a seguir usa a propriedade xjcl:classname de com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep do exemplo da etapa em lote transacional listada anteriormente nesse procedimento.
<step id=”step1”> <classname> com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep</classname> </step>
- Implemente o aplicativo em lote OSGi.
Leia o tópico sobre como implementar um aplicativo OSGi como um aplicativo em nível de negócios e siga as etapas.
Resultados
Você empacotou um aplicativo em lote OSGi, modificou o xml do blueprint para descrever artefatos em lote como serviços e exportou o aplicativo em lote OSGi como um archive de pacotes configuráveis corporativos (EBA). Em seguida, criou o xJCL. Finalmente, implementou o aplicativo em lote OSGi.
Subtópicos
OSGi batch applications
OSGI batch applications are batch applications that you can package and deploy as OSGI applications so that you can expose batch artifacts as services.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_cgbatchosgi
Nome do arquivo: tgrid_cgbatchosgi.html