Una aplicación accede al bean de sesión remota adecuado mediante la
interfaz inicial del bean.
El bean de sesión puede ser el bean de sesión de BusinessFlowManager
para las aplicaciones de proceso o el bean de sesión HumanTaskManager para las
aplicaciones de tareas.
- Añada una referencia al bean de sesión remoto en el
descriptor de despliegue de la aplicación. Añada la referencia a
uno de los archivos siguientes:
- El archivo application-client.xml, para una aplicación de cliente
J2EE (Java 2
Platform, Enterprise Edition)
- El archivo web.xml para una aplicación Web
- El archivo ejb-jar.xml, para una aplicación Enterprise
JavaBeans (EJB)
La referencia a la interfaz inicial remota para aplicaciones de proceso
se muestra en el ejemplo siguiente:
<ejb-ref>
<ejb-ref-name>ejb/BusinessFlowManagerHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.ibm.bpe.api.BusinessFlowManagerHome</home>
<remote>com.ibm.bpe.api.BusinessFlowManager</remote>
</ejb-ref>
La referencia a la interfaz inicial remota para
aplicaciones de tarea se muestra en el ejemplo siguiente:
<ejb-ref>
<ejb-ref-name>ejb/HumanTaskManagerHome</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.ibm.task.api.HumanTaskManagerHome</home>
<remote>com.ibm.task.api.HumanTaskManager</remote>
</ejb-ref>
Si utiliza WebSphere Integration Developer para
añadir la referencia EJB al descriptor de despliegue, el enlace para la
referencia EJB se crea automáticamente cuando se despliega la aplicación.
Para obtener más información sobre cómo añadir referencias EJB, consulte la
documentación de WebSphere Integration Developer.
- Empaquete los módulos de programa generados con la aplicación.
Si la aplicación se ejeucta en una JVM (Java Virtual Machine) distinta de
aquélla en la que se ejecuta la aplicación BPEContainer o la aplicación
TaskContainer, realice las acciones siguientes:
- Para las aplicaciones de proceso, empaquete el archivo
<raíz_instalación>/ProcessChoreographer/client/bpe137650.jar
con el archivo EAR (Enterprise Archive) de la aplicación.
- Para las aplicaciones de tarea, empaquete el archivo
<raíz_instalación>/ProcessChoreographer/client/task137650.jar con el archivo EAR de la aplicación.
- Establezca el parámetro Class-Path en el
archivo de manifiesto del módulo de aplicación para incluir el archivo JAR. El módulo de aplicación puede ser una aplicación J2EE, una aplicación Web o una aplicación EJB.
- Con los mecanismos de búsqueda JNDI (Java Naming and Directory
Interface), haga que la interfaz inicial del bean de sesión esté disponible
para la aplicación. El ejemplo siguiente muestra este paso para una aplicación de proceso:
// Obtener el contexto inicial por omisión de JNDI
InitialContext initialContext = new InitialContext();
// Buscar la interfaz inicial remota del bean BusinessFlowManager
Object result =
initialContext.lookup("java:comp/env/ejb/BusinessFlowManagerHome");
// Convertir el resultado de búsqueda al tipo adecuado
BusinessFlowManagerHome processHome =
(BusinessFlowManagerHome)javax.rmi.PortableRemoteObject.narrow
(result,BusinessFlowManagerHome.class);
La interfaz inicial del bean de sesión contiene un método
create para objetos EJB. El método devuelve la interfaz remote del bean de sesión.
- Acceda a la interfaz remota del bean de sesión. El ejemplo siguiente muestra este paso para una aplicación de proceso:
BusinessFlowManager process = processHome.create();
- Llame a las funciones de empresa expuestas por la interfaz de
servicio. El ejemplo siguiente muestra este paso para una aplicación de proceso:
process.initiate("MyProcessModel",input);
Las llamadas procedentes de las aplicaciones se ejecutarán como transacciones. Se establece y finaliza una transacción de alguna de las formas
siguientes:- Automáticamente, por parte de WebSphere Application Server (el descriptor
de despliegue especifica TX_REQUIRED).
- Explícitamente, por parte de la aplicación. Puede empaquetar las llamadas de aplicación en una transacción:
// Obtener interfaz de transacción de usuario
UserTransaction transaction=
(UserTransaction)initialContext.lookup("jta/usertransaction");
// Iniciar una transacción
transaction.begin();
// Llamadas de aplicaciones ...
// Cuando se devuelva de forma satisfactoria, confirmar la transacción
transaction.commit();
Éste es un ejemplo de cómo los pasos 3 a 5 pueden buscar una
aplicación de tareas.
// Obtener el contexto inicial por omisión de JNDI
InitialContext initialContext = new InitialContext();
// Buscar la interfaz inicial remota del bean HumanTaskManager
Object result =
initialContext.lookup("java:comp/env/ejb/HumanTaskManagerHome");
// Convertir el resultado de búsqueda al tipo adecuado
HumanTaskManagerHome taskHome =
(HumanTaskManagerHome)javax.rmi.PortableRemoteObject.narrow
(result,HumanTaskManagerHome.class);
...
//Acceder a la interfaz remota del bean de sesión.
HumanTaskManager task = taskHome.create();
...
//Llamar a las funciones de empresa expuestas por la interfaz de servicio
task.callTask(tkiid,input);