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

  1. 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.

  2. 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.

    1. Declare cada etapa da tarefa como um serviço do blueprint.
      1. Configure o atributo da interface.
        1. Se a etapa for uma etapa com cálculo intenso, configure o atributo como com.ibm.websphere.ci.CIWork.
        2. Se a etapa for uma etapa em lote transacional, configure o atributo como com.ibm.websphere.batch.BatchJobStepInterface.
      2. Configure o atributo ref com o ID do bean que declara o bean da etapa.
      3. Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java™ que implementa a etapa.
      4. Declare um bean para a classe Java que implementa a etapa.
      5. 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> 
    2. Declare cada fluxo de dados em lote como um serviço do blueprint.
      1. Configure o atributo de interface como com.ibm.websphere.batch.BatchDataStream.
      2. Configure o atributo ref com o ID de bean que declara o bean do fluxo de dados em lote.
      3. Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java que implementa o fluxo de dados em lote.
      4. Declare um bean para a classe Java que implementa o fluxo de dados em lote.
      5. 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>  
    3. 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.

      1. Configure o atributo de interface como com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
      2. Configure o atributo ref para o ID do bean que declara o bean do ponto de verificação.
      3. 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.
      4. Declare um bean para a classe Java que implemente o algoritmo de política de ponto de verificação.
      5. 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>    
    4. 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.

      1. Configure o atributo da interface como com.ibm.wsspi.batch.ResultsAlgorithm.
      2. Configure o atributo ref com o ID do bean que declara o bean do algoritmo de resultados.
      3. Declare uma propriedade com a chave xjcl:classname e um valor que seja a classe Java que implementa o algoritmo de resultados.
      4. Declare um bean para a classe Java que implemente o algoritmo de resultados.
      5. 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>    
  3. Exporte o aplicativo em lote OSGi como um EBA.
  4. 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>
  5. 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.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_cgbatchosgi
Nome do arquivo: tgrid_cgbatchosgi.html