Usando la API de Oracle BPEL PM

En muchas ocasiones nos preguntan al PTS colombiano, al mexicano o bien a un servidor cómo se utiliza la API de Oracle BPEL PM, sobre todo para iniciar procesos desde una aplicación web (servlet o jsp). Aquí un pedazo de código que les puede servir para hacer pruebas simples:

//Estos son los imports
package rolando.ejemplos;

import java.util.Properties;
import java.util.Map;
import javax.naming.InitialContext;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.collaxa.xml.XMLHelper;
import com.oracle.bpel.client.ClientDefs;
import com.oracle.bpel.client.Locator;
import com.oracle.bpel.client.NormalizedMessage;
import com.oracle.bpel.client.delivery.IDeliveryService;

try{
String nombre= "rolando";
System.out.println("Nombre " + nombre);

Properties props = new java.util.Properties();
props.load(new FileInputStream("c:/context.properties")); //Declarar el properties con los datos de conectividad hacia el application server, mas abajo pongo un ejemplo del archivo
System.out.println(props);
// Revisar el namespace del mensaje de entrada al proceso
String xml = "" + nombre+ "";

Locator locator = new Locator("default","bpel",props);

IDeliveryService deliveryService = (IDeliveryService)locator.lookupService(IDeliveryService.SERVICE_NAME );

NormalizedMessage nm = new NormalizedMessage( );
nm.addPart("payload", xml );

NormalizedMessage res = deliveryService.request("HelloService", "process", nm);

Map payload = res.getPayload();

System.out.println( "El proceso se ha iniciado!
" );
Element partEl = (Element) payload.get("payload");
System.out.println( "RESPUESTA" + XMLHelper.toXML(partEl) );
}catch(Exception e)
{
e.printStackTrace();
}

==============
Ejemplo del context.properties:

orabpel.platform=ias_10g
java.naming.factory.initial=com.evermind.server.rmi.RMIInitialContextFactory
java.naming.provider.url=opmn:ormi://rcarras-lap2:6003:oc4j_soa/orabpel
java.naming.security.principal=oc4jadmin
java.naming.security.credentials=welcome1

El puerto es el del opmn (lo encuentran eh $OH/opmn/conf) en el elemento "request", "oc4j_soa" es el nombre del container en donde tienen publicado a BPEL PM y orabpel es la aplicación. Esta es una URL de un container manejado por un midtier, en caso que sea un standalone sería: ormi://localhost/orabpel.

En el siguiente post pondremos cómo conectarse a través de la API al servicio de Workflow Humano de Oracle BPEL PM.


4 Responses to Usando la API de Oracle BPEL PM

Nathaly dijo...

Hola, gracias por el tutorial sólo tengo una duda, cada vez que quiero ejecutar una clase main con el código que indicas, orientado a mi proceso me sale este error

java.lang.Exception: Fallo al crear el bean "ejb/collaxa/system/DeliveryBean"; la excepción mostrada es: "javax.naming.NameNotFoundException: ejb/collaxa/system/DeliveryBean not found
at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:52)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:279)
at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250)
at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:83)
at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:53)
at project3.PruebaLoader.main(PruebaLoader.java:42)
".
at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:293)
at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250)
at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:83)
at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:53)
at project3.PruebaLoader.main(PruebaLoader.java:42)


la verdad no comprendo que me falta . Agradecería me des una manito

Saludos

Francisco dijo...

Hi. I'm having the same problem. Do you have an idea what is the problem? Gracias.
Francisco

Rolando Carrasco - Brimful of Asha... dijo...

Hola. En realidad ese error es porque no encuentra al EJB de BPEL para iniciar el proceso. Se puede deber a que te estés conectando a un container que no es en donde está corriendo bpel process manager. Podrías verificar cuál es tu container? También verifica el puerto del opmn. Pásame igualmente tu url de conexión.

Antonio dijo...

Hola, solo tengo una duda. Estoy usando toda la plataforma de Oracle. ¿qué librerias .jar tengo que importar y de donde las tengo que coger para que funcione? Los import me dan error.

Gracias.