WebSphere Extended Deployment Compute Grid, Version 6.1.1
             Sistemas Operacionais: AIX,, HP-UX, Linux, Solaris, Windows


Modelo de Programação POJO

Um aplicativo em lote no WebSphere Extended Deployment Versão 6.1 é implementado como um POJO (Plain Old Java Object) simples e compactado como módulos EJB (Enterprise JavaBeans) em arquivos EAR (Enterprise Archive) para implementação. A construção de um aplicativo em lote baseado em POJO é o método preferido para se construir um aplicativo em lote.

As seções a seguir descrevem os componentes de um aplicativo em lote.

Etapa da tarefa em lote

Um aplicativo em lote pode ser composto por uma ou mais etapas em lote. Cada etapa em lote é um POJO, que implementa a interface com.ibm.websphere.batch.BatchJobStepInterface. A implementação dessa interface fornece a lógica de negócios da etapa em lote que o tempo de execução do lote chama para executar o aplicativo em lote.

Durante a compactação de um aplicativo em lote, cada etapa em lote é declarada um bean de entidade CMP e a lógica de negócios no POJO é associada ao bean utilizando-se uma Entrada de Ambiente no descritor de implementação EJB. O bean de entidade CMP age como um wrapper da etapa da tarefa em lote. Sua implementação é fornecida pelo tempo de execução do WebSphere Extended Deployment. Portanto, esse bean é declarado no descritor de implementação EJB e não é realmente compactado. São definidas várias etapas em um único aplicativo em lote

Bean do Controlador de Lote

Um aplicativo em lote também inclui um bean de sessão sem preservação de estado que é fornecido pelo tempo de execução do WebSphere Extended Deployment que age como um controlador de etapa da tarefa. Como o bean de entidade CMP da etapa, o bean de sessão sem preservação de estado do controlador é declarado no descritor de implementação do aplicativo. Declare o bean do controlador uma vez por aplicativo em lote.

Fluxos de Dados em Lote

Cada etapa em lote pode utilizar zero ou mais fluxos de dados em lote para a entrada e saída de dados. Um fluxo de dados em lote é um POJO que implementa a interface com.ibm.websphere.batch.BatchDataStream.

Algoritmos de Ponto de Verificação

Os algoritmos de ponto de verificação ajudam o tempo de execução do lote a decidir com que freqüência confirmar a transação global sob a qual as etapas em lote serão chamadas. Os algoritmos de ponto de verificação são construídos como POJOs pela implementação da interface com.ibm.wsspi.batch.CheckpointAlgorithm. O tempo de execução do lote também fornece algoritmos de ponto de verificação baseados em tempo e em registro prontos para uso.

Algoritmos de Resultados

Um recurso opcional do modelo de programação em lote, algoritmos de resultados, é utilizado para manipular os códigos de retorno de tarefas em lote. O tempo de execução do lote fornece um algoritmo de resultados simples que retorna o valor de código de retorno numérico mais alto de todas as etapas da tarefa.

Componentes de um Aplicativo em Lote

Tabela 1. Componentes de um Aplicativo em Lote Fornecidos pelo Desenvolvedor de Aplicativos em Lote
Componente Tipo Implementação Provedor
Etapa da tarefa em lote POJO com.ibm.websphere.BatchJobStepInterface Aplicativo em lote
Fluxo de dados em lote POJO com.ibm.websphere.batchDataStream Aplicativo em lote
Algoritmo de ponto de verificação POJO com.ibm.wsspi.batchCheckpointAlgorithm Aplicativo em lote (pode utilizar a implementação fornecida pelo tempo de execução no lugar)
Algoritmo de resultados POJO com.ibm.wsspi.batchResultsAlgorithm Aplicativo em lote (pode utilizar a implementação fornecida pelo tempo de execução no lugar)
Tabela 2. Componentes de um Aplicativo em Lote Fornecidos pelo Tempo de Execução do Lote
Componente Tipo Implementação Provedor
Controlador de tarefas em lote Bean de sessão   Tempo de execução do lote
Wrapper da etapa da tarefa em lote Bean de entidade CMP   Tempo de execução do lote
Algoritmo de ponto de verificação POJO   Tempo de execução do lote (os aplicativos podem fornecer os seus próprios)
Algoritmo de resultados POJO   Tempo de execução do lote (os aplicativos podem fornecer os seus próprios)

Exemplo

Descritor de Implementação EJB:

<ejb-jar id="ejb-jar_ID">
   <display-name>POJOSampleEJBs</display-name>
   <enterprise-beans>
      <!--Bean do Controlador de Tarefa em Lote-->
      <session id="POJOJob">
         <ejb-name>POJOJob</ejb-name>
         <home>com.ibm.ws.batch.BatchJobControllerHome</home>
         <remote>com.ibm.ws.batch.BatchJobController</remote>
         <ejb-class>com.ibm.ws.batch.BatchJobControllerBean</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Bean</transaction-type>
         <ejb-local-ref id="EJBLocalRef_1168709876999">
            <ejb-ref-name>ejb/POJOStep1</ejb-ref-name>
            <ejb-ref-type>Entity</ejb-ref-type>
            <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home>
             <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local>
            <ejb-link>POJOStep1</ejb-link>
         					</ejb-local-ref>
         <ejb-local-ref id="EJBLocalRef_1127247535990">
            <ejb-ref-name>ejb/POJOStep2</ejb-ref-name>
            <ejb-ref-type>Entity</ejb-ref-type>
            <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface</local-home>
            <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local>
           <ejb-link>POJOStep2</ejb-link>
         					</ejb-local-ref>
         <resource-ref id="ResourceRef_1168711637701">
            <!-- Gerenciador de Trabalho padrão para Tarefas em Lote -->
            <res-ref-name>wm/BatchWorkManager</res-ref-name>
            <res-type>commonj.work.WorkManager</res-type>
            <res-auth>Container</res-auth>
            <res-sharing-scope>Shareable</res-sharing-scope>
         </resource-ref>
      </session>

      <!-- Etapa da Tarefa em Lote # 1 -->
      <entity id="POJOStep1">
         <ejb-name>POJOStep1</ejb-name>
         <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home>
         <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local>
         <!-- Wrapper da Etapa da Tarefa em Lote -->
         <ejb-class>com.ibm.ws.batch.DefaultBatchJobStepBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>com.ibm.websphere.batch.BatchJobStepKey </prim-key-class>
         <reentrant>False</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>POJOStep1</abstract-schema-name>
         <cmp-field id="CMPAttribute_1168709093522">
            <field-name>jobID</field-name>
         </cmp-field>
         <cmp-field id="CMPAttribute_1168709093542">
            <field-name>stepID</field-name>
         </cmp-field>
         <!-- Entrada do Ambiente associando a Etapa POJO ao Wrapper -->
         <env-entry>
            <description>nome da classe POJO da etapa do lote</description>
            <env-entry-name>POJOclass</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <!-- Implementação da Etapa da Tarefa POJO -->
            <env-entry-value>com.ibm.websphere.samples.POJOStep1</env-entry-value>
         			</env-entry>
      </entity>

      <!-- Etapa da Tarefa em Lote # 2 -->
      <entity id="POJOStep2">
         <ejb-name>POJOStep2</ejb-name>
         <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home>
         <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local>
         <!-- Wrapper da Etapa da Tarefa em Lote -->
         <ejb-class>com.ibm.ws.batch.DefaultBatchJobStepBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>com.ibm.websphere.batch.BatchJobStepKey</prim-key-class>
         <reentrant>False</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>POJOStep2</abstract-schema-name>
         <cmp-field id="CMPAttribute_1127248451496">
            <field-name>jobID</field-name>
         </cmp-field>
         <cmp-field id="CMPAttribute_1127248451497">
            <field-name>stepID</field-name>
         </cmp-field>
         <!-- Entrada do Ambiente associando a Etapa POJO ao Wrapper -->
         <env-entry>
            <description>nome da classe POJO da etapa do lote</description>
            <env-entry-name>POJOclass</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <!-- Implementação da Etapa da Tarefa POJO -->
            <env-entry-value>com.ibm.websphere.samples.POJOStep2</env-entry-value>
         			</env-entry>
      </entity>
   </enterprise-beans>

   <assembly-descriptor id="AssemblyDescriptor_1168711087550">
      <container-transaction>
              <method>
            <ejb-name>POJOStep1</ejb-name>
            <method-name>*</method-name>
              </method>
              <method>
            <ejb-name>POJOStep2</ejb-name>
            <method-name>*</method-name>
              </method>
         <!-- TX NECESSÁRIO-->
         <trans-attribute>necessário</trans-attribute>
      </container-transaction>
   </assembly-descriptor>
</ejb-jar>



Conceitos relacionados
O Modelo de Programação em Lote
Tarefas relacionadas
Desenvolvendo um Aplicativo em Batch Simples
Construindo um Aplicativo em Lote Utilizando POJO
Tópico de Conceito    

Termos de Uso | Feedback

Última atualização: 24/09/2009 14h24min35s EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1m1/index.jsp?topic=/com.ibm.websphere.gridmgr.doc/info/scheduler/ccgpojomodel.html