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


Modelo de programación POJO

Una aplicación de proceso por lotes en WebSphere Extended Deployment Versión 6.1 se implementa como un POJO (Plain Old Java Object) y se empaqueta como módulos de EJB (Enterprise JavaBeans) en archivos EAR (archivador empresarial) para su despliegue. El método preferido para crear una aplicación de proceso por lotes es crear una aplicación de proceso por lotes basada en POJO.

En las secciones siguientes se describen los componentes de una aplicación de proceso por lotes.

Paso de trabajo por lotes

Una aplicación de proceso por lotes puede constar de uno o más pasos por lotes. Cada paso por lotes es un POJO, que implementa la interfaz com.ibm.websphere.batch.BatchJobStepInterface. La implementación de esta interfaz proporciona la lógica empresarial del paso por lotes que el tiempo de ejecución del proceso por lotes invoca para ejecutar la aplicación de proceso por lotes.

Durante el empaquetado de una aplicación de proceso por lotes, cada paso por lotes se declara como un bean de entidad CMP y la lógica empresarial en el POJO se asocia con el bean utilizando una entrada de entorno en el descriptor de despliegue de EJB. El bean de entidad CMP actúa como un derivador de paso de trabajo por lotes. El tiempo de ejecución de WebSphere Extended Deployment proporciona su implementación. Por lo tanto, este bean se declara en el descriptor de despliegue de EJB y no se empaqueta. Se definen varios pasos en una aplicación de proceso por lotes individual

Bean de controlador por lotes

Una aplicación por lotes también incluye un bean de sesión sin estado proporcionado por el tiempo de ejecución de WebSphere Extended Deployment que actúa como un controlador de paso por lotes. Como el bean de entidad CMP del paso, el bean de sesión sin estado del controlador se declara en el descriptor de despliegue de la aplicación. Declare el bean de controlador una vez por aplicación de proceso por lotes.

Secuencias de datos por lotes

Cada paso por lotes puede utilizar cero o más secuencias de datos por lotes para la entrada y salida de datos. Una secuencia de datos por lotes es un POJO que implementa la interfaz com.ibm.websphere.batch.BatchDataStream.

Algoritmos de punto de control

Los algoritmos de puntos de control permiten que el tiempo de ejecución por lotes decida con qué frecuencia se va a comprometer la transacción global en la que se invocan los pasos por lotes. Los algoritmos de puntos de control se crean como los POJO, implementando la interfaz com.ibm.wsspi.batch.CheckpointAlgorithm. El tiempo de ejecución por lotes también proporciona algoritmos de punto de control basados en el tiempo y basados en el registro, listos para su uso.

Algoritmos de resultados

Una característica opcional del modelo de programación por lotes, los algoritmos de resultados, se utiliza para manipular los códigos de retorno de los trabajos por lotes. El tiempo de ejecución por lotes proporciona un algoritmo de resultados sencillo que devuelve el valor máximo de código de retorno numérico de todos los pasos de trabajo.

Componentes de una aplicación por lotes

Tabla 1. Los componentes de una aplicación por lotes que proporciona el desarrollador de aplicaciones por lotes
Componente Tipo Implementación Proveedor
Paso de trabajo por lotes POJO com.ibm.websphere.BatchJobStepInterface Aplicación de proceso por lotes
Secuencia de datos por lotes POJO com.ibm.websphere.batchDataStream Aplicación de proceso por lotes
Algoritmo de punto de control POJO com.ibm.wsspi.batchCheckpointAlgorithm Aplicación de proceso por lotes (puede utilizar la implementación proporcionada por el tiempo de ejecución en su lugar)
Algoritmo de resultados POJO com.ibm.wsspi.batchResultsAlgorithm Aplicación de proceso por lotes (puede utilizar la implementación proporcionada por el tiempo de ejecución en su lugar)
Tabla 2. Los componentes de una aplicación por lotes que proporciona el tiempo de ejecución por lotes
Componente Tipo Implementación Proveedor
Controlador de trabajos por lotes Bean de sesión   Tiempo de ejecución por lotes
Derivador del paso de trabajo por lotes Bean de entidad CMP   Tiempo de ejecución por lotes
Algoritmo de punto de control POJO   Tiempo de ejecución por lotes (las aplicaciones pueden proporcionar el suyo propio)
Algoritmo de resultados POJO   Tiempo de ejecución por lotes (las aplicaciones pueden proporcionar el suyo propio)

Ejemplo

Descriptor de despliegue de EJB:

<ejb-jar id="ejb-jar_ID">
   <display-name>POJOSampleEJBs</display-name>
   <enterprise-beans>
      <!--Bean de controlador de trabajo por lotes -->
      <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">
            <!-- Gestor de trabajo predeterminado de trabajos por lotes -->
            <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>

      <!-- Paso # 1 del trabajo por lotes -->
      <entity id="POJOStep1">
         <ejb-name>POJOStep1</ejb-name>
         <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home>
         <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local>
         <!-- Derivador de paso de trabajo por lotes -->
         <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 de entorno que asocia el paso POJO con el derivador -->
         <env-entry>
            <description>POJO class name for the batch step</description>
            <env-entry-name>POJOclass</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <!-- Implementación del paso de trabajo de POJO -->
            <env-entry-value>com.ibm.websphere.samples.POJOStep1</env-entry-value>
         			</env-entry>
      </entity>

      <!-- Paso # 2 del trabajo por lotes -->
      <entity id="POJOStep2">
         <ejb-name>POJOStep2</ejb-name>
         <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home>
         <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local>
         <!-- Derivador de paso de trabajo por lotes -->
         <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 de entorno que asocia el paso POJO con el derivador -->
         <env-entry>
            <description>POJO class name for the batch step</description>
            <env-entry-name>POJOclass</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <!-- Implementación del paso de trabajo de 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>
         <!-- SE NECESITA TX -->
         <trans-attribute>Required</trans-attribute>
      </container-transaction>
   </assembly-descriptor>
</ejb-jar>



Conceptos relacionados
Modelo de programación por lotes
Tareas relacionadas
Desarrollo de una aplicación de proceso por lotes sencilla
Creación de una aplicación de proceso por lotes utilizando POJO
Tema de concepto    

Condiciones de uso | Comentarios

Última actualización: 22-sep-2009 09H47' EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1m1/index.jsp?topic=/com.ibm.websphere.gridmgr.doc/info/scheduler/ccgpojomodel.html