martes, 11 de septiembre de 2012

Escanear un filesystem ciclicamente para leer un archivo desde BPEL


Oracle BPEL posee adaptadores para leer y procesar archivos de una manera rapida, sencilla y con una gran funcionalidad totalmente personalizable. En este ejemplo estaremos escaneando el directorio "/home/oracle/example" cada 30 segundos, y tomando únicamente aquellos archivos que ya tengan 5 segundos como mínimo de haber sido creados, se tomaran solo los archivos con extension ".txt".

Para iniciar debemos crear una nueva "Application" en JDeveloper, y un nuevo proyecto de tipo "SOA Project".

Luego seleccionamos con doble clic el elemento "composite.xml" que se encuentra a la izquierda para poder empezar a crear nuestros componentes.

Arrastramos un "File Adapter" hacia la seccion del "Composite" y nos aparecerá la pantalla de bienvenida del adaptador.

Dar cilck en el boton "Next"


Ingresamos el nombre del FileAdapter.


Seleccionamos la opcion "Define from operation and schema (specified later)".


Ingresamos el filesystem que queremos estar escaneando,  en este ejemplo es "/home/oracle/example". La opcion "Process files recursively" indica que si se deben procesar recursivamente todos los archivos aunque esten dentro de carpetas. Seleccionamos la opcion "Archive processed files" e indicamos un directorio en el cual se guardaran los archivos que ya hayan sido procesados. Seleccionamos la opcion "Delete files after successful retrieval" para que despues de procesar los archivos los borre del filesystem origen.


En el campo "Include Files with Name Pattern" escribir "*.txt" para que únicamente tome los archivos con esa extension y los demas archivos los ignore.


En el campo "Polling Frequency" escribir "30 segundos" para que a cada 30 segundos este escaneando el filesystem en busca de nuevos archivos. En el campo "Minimum File Age" establecerlo a "5 segundos".


Clic en el boton "Define Schema for Native Format".


En la pantalla de Bienvenida dar clic en "Next".

Seleccionar la opcion "Create New" y luego seleccionar la opcion "Delimited".


Elegir un archivo de ejemplo del cual el Wizard automaticamente extraerá el "XSD".



El archivo de ejemplo que estamos utilizando es  el siguiente:


Seleccionar la opcion "File contains only one record" y dar clic en el boton "Next".


Ingresar en el campo "Enter a name for element that will represent record" el nombre del elemento "raiz", en este ejemplo utilizaremos el nombre "Persona". Dar clic en el boton "Next".


Dejar los valores default: "Delimited by comma". Dar clic en el boton "Next".


Ingresar el nombre de cada uno de los campos que estan en el archivo de texto, en este ejemplo utilizaremos los siguientes nombres: "ID", "Nombre", "Edad", "Pais".


Se puede ver el archivo XSD generado por el wizard en base a todos los datos que ya le hemos proporcionado incluyendo el archivo de ejemplo. Dar clic en el boton "Next". Luego dar clic en el boton "Finish".


Regresamos nuevamente al wizard del FileAdapter y luego dar clic en el boton "Next". Luego dar clic en el boton "Finish".


Ahora debemos agregar un componente de tipo "BPEL process". Fijarse bien que el proceso bpel que estamos creando tenga el "Template" establecido a "Define Service Later". Establecer un nombre y luego dar clic en el boton "OK".


Unir mediante un "wire" el ReadFile (FileAdapter) con nuestro ReadFileProcess (BPEL Process).


Dar doble clic en el elemento ReadFileProcess (BPEL Process) y una vez adentro agregar un elemento "Receive", luego un elemento "Email".  Alambrar el "Receive" al "ReadFile" tal como se muestra en la imagen.


Despues de alambrar el "Receive" al "FileAdapter" nos aparecera una ventana en la cual hay que dar clic en la cruz verde (dentro del cuadro rojo), esto generara automaticamente una nueva variable.  Cambiar el nombre si se desea. Dar clic en el boton "OK".



Damos doble clic en el elemento "Email" y lo configuramos. En nuestro ejemplo en el campo "Body" especificamos que enviara los datos de las "personas" recibidas desde el archivo de texto.  Luego dar clic en el boton "OK".




En el archivo XML del BPEL Process, buscar el tag "createInstance" y poner el valor a "yes", de lo contrario nuestra instancia de BPEL no se autocreará.


Finalmente realizar "Deploy" de nuestra aplicacion BPEL.


Testear el proceso: Para poder testear nuestro proceso situaremos el archivo "archivo.txt" en el filesystem "/home/oracle/example", esperaremos "30 segundos" para que pueda ser escaneado y finalmente llegará un correo a mi cuenta con los datos de la persona que estoy enviando.

RESULTADO:
















No hay comentarios:

Publicar un comentario

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...