Traducir a :

miércoles, 9 de octubre de 2013

¿Cómo utilizar el File Adapter en un proceso BPEL?

Este tutorial fue realizado en jDeveloper 11.1.1.7.0 y su objetivo es explicar el uso de los File Adapter en un proceso BPEL.

En los procesos BPEL existen varias opciones para usar los File Adapter:

1. Read File: Se utiliza como entrada a un proceso BPEL en la cuál se realizará la lectura de archivos cada cierto tiempo especificado, llamado polling.
2. Write File: Utilizado para escribir en un archivo plano.
3. Synchronous Read File: Utilizado para realizar lecturas de archivos en medio de un proceso BPEL. (En este caso no se realiza polling).


Caso 1: Read File y Write File

En este caso se leerá el archivo plano: Persona.txt para crear un esquema Persona.xsd , y escribirlo en un archivo plano utilizando Write File en un proceso BPEL.

Para comenzar creamos una nueva aplicación BPM  incluyendo un proceso BPEL en el composite:


Luego damos las siguientes especificaciones a nuestro proceso BPEL:
- Versión: BPEL 2.0 Specification
- Template: "Define Servece Later"


Después arrastramos un File Adapter desde el Component Palette, le damos un nombre, dejamos la opción *Define from operation and schema (specified later) y escogemos la opción Read File.

Luego damos la ruta en donde se encuentran los archivos que serán leídos. Además podemos guardar en otra carpeta los archivos que van siendo leídos como vemos a continuación:


En el siguiente paso damos el nombre del archivo (o archivos) que será leído, en este caso solo darémos el nombre de archivo plano Persona.txt:



Ahora viene la opción de seleccionar cada cuanto se realizará la lectura de archivos o polling:


Ahora vamos a crear el esquema xsd a partir del archivo plano Persona.txt de la siguiente manera. Seleccionamos el ícono que dice "Define schema for native format" y se abrirá el wizard en el cual se especificarán las siguientes opciones:


En este caso nuestro archivo plano contiene varios registros de un solo tipo "Persona", por esto seleccionamos las siguientes opciones.


Después especificamos el nombre del elemento que representa nuestros registros.


Finalmente damos el nombre a nuestro esquema correspondiente al archivo plano leído, en este caso Persona.xsd



Luego de la configuración del Read File  lo unimos al proceso BPEL en el composite. En este proceso podemos definir si este proceso lo deseamos síncrono o asíncrono. Luego agregamos otro File Adapter de tipo Write. El composite quedará de la siguiente manera:


La configuración del Write File es similar.  Al momento de definir el esquema (Step 6 of 7) podemos especificar el esquema Persona.xsd creado anteriormente.

Luego abrimos el proceso BPEL. En éste arrastramos desde el Component Palette/BPEL Constructs/Web Service un "Receive" y un "Invoke":


Luego unimos Receive_ReadFile_Persona  a  ReadFile_Persona. En este momento saldrá la opción para crear la variable de entrada a este receive basados en el ReadFile, como se muestra a continuación:



Hacemos el mismo procedimiento uniendo "Invoke_WriteFile_Persona" a "WriteFile_Persona" y creamos la variable correspondiente.

Nota: Las especificaciones de los File Adapter se pueden modificar en el .jca generado por cada uno.

Después arrastramos una transformación desde Component Palette/Oracle Extensions en medio de los dos web services creados anteriormente y creamos la siguiente transformación:






Finalmente probamos nuestro proceso BPEL.

Caso 2: Synchronous Read File

En este caso se leerán 2 archivos planos: Persona.txt y Telefonos.txt. para crear un esquema con un arreglo de personas y cada uno de estos tenga una lista de telefonos. El proceso BPEL devolverá el xml de este esquema  dados los archivos planos leídos.

El archivo plano Telefonos tiene un id y un teléfono por cada línea. El id representa el id de la Persona.




Inicialmente tenemos en nuestro Business Catalog el objeto Persona:




Arrastramos un proceso BPEL al composite y damos la siguiente especificación:

Versión: BPEL 2.0 Specification
Template: Synchronous BPEL Process
Output: (http://xmlns.oracle.com/bpm/bpmobject/Data/ArrayPersona)ArrayPersona
 (ArrayPersona es un arreglo de BO_Persona)

Nota: Las anteriores especificaciones también se pueden modificar en el archivo wsdl que genera el BPEL.


Como vemos anteriormente, la salida de este proceso BPEL síncrono será  ArrayPersona, que es el objeto que llenaremos con la lectura de los archivos Persona.txt y telefonos.txt

Ahora en el proceso BPEL arrastramos un File Adapter en el cuál se leerá el archivo plano Persona.txt. Éste será de tipo "Synchronous Read File". La configuración de este File Adapter es similar al Read File pero no tendrá polling.


Luego de crear el Synchronous Read File para Persona.txt lo haremos igualmente para Telefonos.txt. Nuestro BPEL se verá de la siguiente manera:


Al momento de crear las variables de para los Invoke es importante definir las variable input y output para cada uno.

Después de esto hacemos la transformación  para crear ArrayPersona con los datos de los archivos planos de la siguiente manera:




Finalmente nuestro proceso BPEL se verá de la siguiente manera:

¿Quieres compartir esta publicación?

0 comentarios: