Archivo de la etiqueta: BPEL

Database Adapter bpel 11g

Después de batallar un rato logré hacer una inserción en mi db con bpel 11g.

Digo batallar por que me tope con un par de errores que me dieron lata por un ratillo. (Los menciono al final)

Crear una nueva aplicación

2. En el proyecto siguiente crearemos el esquema:

Creamos un esquema sencillo de 3 campos de tipo stringAhora creamos un proyecto de Tipo SOA con composite BPEL

En la ventana de BPEL buscamos nuestro esquema creado anteriormente com Input y como Salida

En el bpel agregamos un assign con los valores de Input y output

Ahora viene la parte del negocio:

En mi navegador de Db tengo una base de datos con 1 tabla que voy a utilizar: TEMP_REPORTBPEL con 3 campos como se ve en la imagen:

Regresando al BPEL agrego un database adapter y busco mi conexión mencionada. Al seleccionarla me especifica el JNDI.

En el tipo de operación selecciono INSERT or UPDATE y selecciono los campos

Ahora agregamos un invoke  y lo vinculamos con el partner link que acabamos de agregar

El proyecto debe de verse de esta forma:

Ahora agregamosun transform entre el assign y el invoke. En el target seleccionamos la variable del Invoke y creamos un mapper file.

Y quedamos así:

Guardamos nuestro proyecto y queda listo.

Ahora tenemos que hacer unas configuraciones en el Weblogic.

Creamos un datasource.

Nos vamos a la consola de Weblogic -JDBC -Data sources y creamos una nueva.

El JNDI name debe ser el sufijo de la conexion de nuestro database adapter en la parte de JNDI.

El driver de conexion debe de ser XA y colocar una propiedad de TIME OUT como se muestra en la imagen

Una ves que se creó el JDBC ahora vamos a agregar unas propiedades a nuesttro database adapter.

Vamos a Deployments, y búscamos el DBAdapter

Damos click en configurations y luego en Outbound Connection pools y creamos una nueva instancia con los siguientes parametros

Aqui vinculamos el JDBC que creamos anteriormente con nuestro DBAdapter

Ahora probamos nuestro proyecto en el Enterprise manager de SOA, buscamos nuestro proyecto, le damos probar, colocamos los valores y verificamos que funcione y que inserte los valores:

Ojo: Si no se realiza bien la parte de configuración de JDBC y de JNDI de configuracion del DBAdapter puede venir unos errores en el bpel y en la consola del weblogic como los soguientes:

Error: (Este error se muestra en la auditoria del bpel y se relaciona con la falta de configuracion del DB Adapter)

BINDING.JCA-12510 JCA Resource Adapter location error

Error: (Este error se relaciona con que el dbadapter no esta apuntando a un tipo de servicio XA)

orabpel 05002

Para mas información verificar en OTN:

Ciclos de adaptadores

SOA 11 (¿Liberado?) Configuracion

Hace unos días se liberó por fin la versión 11 del jdeveloper después de 4 versiones de Visualizción técnica.

Emocionado descargo la nueva version (11.1) y comienzo a revisar todo.. todo se ve muy bien y estas son las diferencias que encontre a simple vista:

Se realiza una instalación guiada (antes solo se descomprimía y listo para usar)

Una gran diferencia el cambio del OC4J por el WEBLOGIC que le da un toque diferente al servidor de aplicaciones

Continué revisando y dije… «vamos a chambear un rato con soa…» y sopas…. No encontré por ningún lado como configurar soa.. (aun cuando en la versión 4 que fué la ultima para la versión final ya venía muy avanzada la parte de soa) y seguí buscando.. y buscando y nada. Resulta que en esta versión liberada NO HAY SOA.

Entonces tuve que seguir con mi versión 11g tp4 y a continuación describo como hacer funcionar el soa.

Primero descargar el jdev 11 tp4 Descargar de aqui si no lo tienen

Ahora vienen unos «detalles» muy importantes para que la configuración sea exitosa.

1. Descomprimir el jdeveloper en una ubicación que no tenga espacions!!! Esto es muy importante.

2. Antes de abrir el jdeveloper se deben declarar unas variables y configurar un archivo (En ese orden de preferencia)

La variables son:

JAVA_HOME=Directorio del JDK (En este caso utilizamos el 1.5 del jdeveloper)

JOH= Directorio donde se descomprimió el jdeveloper

JDEV_USER_DIR= Directorio donde se creará las configuraciones del Jdeveloper (De preferencia colocarlo en el mismo directorio del Jdeveloper

BAM_OC4J_HOME=Directorio del BAM

variables

variables

3.  Ahora vamos a configurar un archivo. Si este archivo no se configura no se podrá configurar el SOA y tiene que ser antes de abrir el jdeveloper por que se guarda la configuración y aunque se configure despues el archivo el jdev no va a realizar bien la configuración.

El archivo es: <Directorio_Jdeveloper>\jdev\bin\jdev.conf

jdev-conf

jdev-conf

Una vez abierto desabilitamos la opcion: «addVmOption» al final del documento.

jdev

jdev

4. Ahora vamos a crear los esquemas del soa en la base de datos. La base de datos que utilizo es una XE por lo que necesito cofigurar unos parametros:

configurar db xe

configurar db xe

5. Ahora creamos los esquemas del JDEV_SOAINFRA (Que es el usuario con el que el Jdeveloper y el soa van a trabajar)

Para eso nos vamos a una carpeta dentro del directorio del Jdeveloper: <JDEVELOPER_HOME>\rcu\integration\soainfra\sql

una vez alli entramos al sqlplus y creamos los siguientes esquemas

Esquemas SOA

Esquemas SOA

Y ya tenemos configurado nuestro entorno para que el jdeveloper comienze a hacer su trámite de configuración.

6. Ahora abrimos el jdeveloper (Nos preguntara el rol: default, si queremos migrar de version: No)

Hay que verificar en sea el jdeveloper version tp4

TP4

TP4

7. Vamos al menu «tools» – preferences – run y damos click «Integrated OC4J»

OC4J

OC4J

8 Ahora vamos a configurar el soa: Menu tools – Configure soa (Si no hubiesemos configurado el archivo del punto 3 no veriamos este menu)

Verificamos los datos de conexion de nuestra base de datos damos click en test

Y luego le damos start

1Si todo se hizo de acuerdo a las instrucciones (Sin tomar en cuenta la instalacion de Db) nos debe mostrar el siguiente msj y con eso queda configurado y listo el soa 11.. a crear servicios!!!!!

Succesful!!!

Succesful!!!

Detonar proceso BPEL a traves de un WebService

Hola.

He recibido varios comentarios solicitando lo siguiente; Tenemos un proceso bpel y queremos detonarlo desde una interfaz (Una página web) para poder trabajar con los datos y estos datos sean enviados a la consola de BPEL.

Bajo este escenario y después de mucho tiempo de retomar lo de SOA por cuestiones de Trabajo me dia la taea de hacer un pequeño ejemplo explicando laproblemática mencionada. Espero les sea de ayuda.

Pasos a realizar:

Tener un Esquema XML
Generar un proyecto BPEL y relacionarlo con el Esquema
Publicar el proyecto
Obtener el WebService
Crear pagina jsp para consumir el WebService

Ojo: Los esquemas y el proyecto ya los hemos realizado en entradas anteriores. Verificar «Crear proyecto BPEL» para ponernos al día y continuar.

1. Lo primero que hice fue crear mi Esquema XML

Esquema

Esquema

2. Ahora creo un proyecto BPEL sencillo. Agreo un Assign donde le paso los datos tal cual de mi esquema sin hacer modificaciones

Bpel

Bpel

Assign

Assign

3. Ahora vamosa publicar nuestro proyecto al Bpel Consola.

Deploy

Deploy

4. Entramos a la consola de BPEL y damos click sobre el nombre de nuestro proceso

Consola

5. Ahora bien, aqui vemos el tab «Initiate» o iniciar, alli es donde nos aparecen los recuadros de nuestros parametros qeu colocamos en el Esquema XML

Iniciar

Iniciar

Ahora vamos a obtener nuestro WebService. Damos click en la pestaña: WSDL «WebService Dialog Lenguage». Ahora lo que vemos es una url. Esta url contiene los datos que dimos de alta en nuestro esquema. Podemos copiarla y abrirla en otra ventana del Explorar para verificar.

WSDL

WSDL

Y como vemos lo que tenemos es un webService automáticamente generado al momendo de darle deploy a nuestro proceso. Ahora a partir de este webservice vamos a crear una página jsp para invocar dicho Servicio.

WSDL

WSDL

6. Vamos a crear nuestra pagina en Jdeveloper:

Damos click derecho sobre el nombre de Nuestra aplicación y seleccionamos: New project, luego nos aparece una ventana y seleccionamos: Empty project y en la ventana que nos aparece colocamos el nombre de nuestro proyecto. «Pagina Web» en mi caso.

9 - Proyect

9 - Proyect

: 7. Ahora sobre nuestro nuevo Proyecto damos click derechoy seleccionamos New:Y en la ventana de galeria nos vamos al brazo: Web tier – JSF y en Items seleccionamos  JSF JSP

JSF

JSF

Ahora nos abre una ventana para configurar nuestro jsf, a lo que damos siguiente al paso 1 y en el 2 colocamos un nombre a nuestra pagina «TestWSDL» en mi caso. dejamos jsp y damos click en siguiente

jsp

jsp

En el siguiente seleccionamos Automaticly Expose UI…

UI

UI

Y ahora seleccionamos las libreriasy damos click en finish

Librerias

Librerias

Ahora visualizamos el esglose de nuestro projecto y nos encontramos con una clase java: Es la que guarda todos los objetos que tengamos en nuestro JSP para despuer mandar eventos, un faces config que es donde colcoamos nuestras páginas y las enlazamos y realizamosactividades de seguridad, sesion, etc. y por ultimo nuestra pagina jsp.

8. Ahora lo que vamos a hacer es llamar a nuestro WSDL (Recordamos la URL de nuesra WSDL de la consola de BPEL que copiamos por que la vamos a utilizar en este paso)

Lo primero es crear un proyecto nuevo vacio en nuestra aplicacion (Verpaso 6 por si no recordar) y le ponemos de nombre «WebServiceBPEL». En la ventana de galeria nos vamos al nodo – Business Tier -> Web Services y en los Items buscamos  Web Service Data Control y damos Ok.

wsdc

wsdc

Ahora nos abre la ventana de configuracion para nuestro Wsdl. Lo primero es un nombre: «WSDBpel» luego la url del Web Service y colocamos la Url que aparece en la consola de BPEL. En ese momento si quitamos el foco de ese cuadro (Damos click en cualquier otro lado) hace una prieba de conexion para checar los servicios de ese servicvio y abajo en la parte de Service coloca los servicios que existen  Seleccionamos el «Corto» Que es con el que se invoca el ser vicio por que el «largo» es para cuando se regresa la llamada al servicio (CallBack)

Call

Call

Ahora damos click en siguiente y seleccionamos las operaciones disponibles, que en este caso solo es el inicio y damos click en Finish

Operations

Operations

Si revisamos nuestro proyecto y nuestra paleta de componentes vemos lo siguiente:

Dats

Dats

Ahora si creamos nuestra pagina de la siguiente forma:

Nos poscionamos en nuestra pagina JSp y en la palete de Componentes a la derecha (Ver imagen abajo) y en el combo de Componentes seleccionamos  ADF Faces Core y luego buscamos Panel Page, lo seleccioamos y lo arrastramos a nuestro JSP

PanelPage

PanelPage

Ahora vamos a la pestaña de DataControl y seleccionamos «On result String… ect» y lo arrastramos debajo de donde dice tittle 1 y nos aparece una ventana de opciones a la que seleccionamos Parameters – ADF Parameter Form

Parameters

Parameters

En cuadro que nos aparece damos click en Ok. y este es el resultado:

Jsp Iniciar

Jsp Iniciar

Ahora corremos nuestra pagina y probamos el servicio. Damos click derecho sobre nuestro JSP y seleccionamos «RUN» y esperamos que se ejecute nuestra pagina. Metemos los datos y damos click en iniciar.

Test1

Test1

Error

Error

Ahora vamos a la consola de Bpel y checamos si la instancia se ejecuto correctamente.

CONSOLA

CONSOLA

Correct

Correct

Si todo funciona ahora podemos juagr con nuestra pagina Web. Incluso mandar un msj de alerta al ejecutar nuestro sevicio, o que nos envia a otra pagina donde nos diga que se ha realizado, etc. Se le pueden agregar imagenes y hacer cosas por el estilo.

Espero sea de utilidad.

Continuacion:

Ahora bien. Aparecen en la Pagina unos campos que no tienen que verse en el form.

Campos

Campos

Para poder quitarlos hacemos lo siguient:

Damos doble click en el boton iniciar al mostrarnos el mensaje le damos aceptar.

Mensaje

Mensaje

Nos muestra el backbean de nuestro jsp donde podremos agregar codigo para manipular los datos.

Ahoravamos a agregar un poco de codigo: Mirar la imagen y agregar

Codigo normal

Codigo normal

Se agrega lo siguiente:

Codigo agregado

Codigo agregado

Al colocar el valor «params.put» estamos dicindo que asigne un valor a un elemento. Se nos va a poner en rojo por que hace falta una libraria para cumplir con estas opciones, esto en automático lo marca el jdev, y si damos «alt – enter» la va a agregar el jdev en el momento. Seleccionamos la libreria «java.util»

Libreria agregada

Libreria agregada

Ahora vamos a ponerle un valor de «1» a los valores que nos nos interesan.

Y a los que nos interesan le ponesmo el nombre del Elemento de nuestro esquema tal cual esta escrito. Y le ponemos el valor del Id del Campo en nuestr jsp. Por ejemplo: El primer elemento (en mi caso es «Programa» y en el jsp la caja de texto tiene Id «inputText1» entonces queda:

params.put(«element1», inputText6.getValue());

y asi sucecivamente con los demas elementos. Al terminar corremos nuestra pagina y checamos el resultado.

Resultado

Resultado

Si funciona lo que tenemos que hacer ahora es quitar las cajas de texto en nuestro jsp que no nos funcionan y listo. Tenemos solo los datos que nos interesan.

Pagina

Pagina

Positivo

Positivo

Quitando las cajas que no nos sirven

FINAL

FINAL

Y probamos (Coloque una pagina de resolucion para saber si detona bien el servicio)

Final2

Final2

Final3

Final3

Espero les sirva….