Usualmente en BPEL se acostumbra utilizar el 'File Adapter' para leer archivos NO XML y transformarlos a formato XML, pero en OSB junto con el adaptador de archivos también existe otra forma NO muy conocida de realizar dicha tarea. Esta se conoce como MFL y la podemos utilizar para transformar datos NO XML a datos XML y viceversa.
En este post se procederá a mostrar cómo transformar los datos NO XML a datos XML utilizando MFL. Para mostrar este funcionamiento, se ha preparado un dummy de un Servicio Virtual que consistirá en lo siguiente:
"Se ingresará una trama (Formato: NO XML) en una ubicación específica, que será procesada por el OSB. Esta trama procederá a ser transformada en formato XML para ser enviada de Request contra el WS. El Response del WS será transformado a formato NO XML (Trama), para ser finalmente depositado en una ubicación de salida como archivo generado".
DUMMY:
1. Considerando que la Trama INPUT tendrá este formato y será ubicado en una ruta local (especificada en el Proxy Service más adelante):
2. Definir y crear una RUTA BASE, que contendrá 4 directorios:
- TEMP: Directorio encargado de procesar los archivos de manera temporal.
- ERROR: Directorio encargado de almacenar los archivos con error en el proceso.
- INPUT: Directorio donde se ubicarán las tramas a procesar.
- OUTPUT: Directorio donde se generarán las tramas de respuesta del proceso.
3. Definir la estructura de directorios de muestro proyecto OSB:
4. Creamos un BusinessService que referencie y controle por medio del WSDL incrustado en el proyecto al WebService: 'http://localhost:8090/mockDatosClienteService?wsdl',(Un MockServices que he iniciado por medio de SOAPUI):
5. Crear los archivos MFL (sobre el proyecto: new/MFL), tal como se explicó por medio de estos archivos se configurarán las transformaciones NO XML a XML y XML a NO XML. Con esta lógica ya podremos definir el MFL INPUT: encargado de transformar TRAMA a REQUEST y el MFL OUTPUT: encargado de transformar RESPONSE a TRAMA:
Para esto se debe de conocer antes de definir las tramas, los datos REQUEST/RESPONSE del WS a consumir:
5.1. Crear el archivo: DatosCliente_IN.mfl, para la transformacion INICIAL,considerando la configuración mostrada considerando los valores de los DELIMITADORES, sobre todo el del salto de linea del campo final (\n):
5.2. Crear el archivo: DatosCliente_OUT.mfl, para la transformacion FINAL, considerando la configuración mostrada considerando los valores de los DELIMITADORES, sobre todo el del salto de linea del campo final (\n):
6. Crear los XQuery consideranto las transformaciones que se manejaran:
6.1. DatosCliente_IN.xq: Encargado de transformar la Trama (NO XML) hacia el REQUEST del WS:
6.2. DatosCliente_OUT.xq: Encargado de transformar la el RESPONSE del WS hacia la Trama (NO XQML) a generar:
7. Crear un BusinessService de tipo Messaging Service que referencie y controle un MFL (Trama):
Definir el directorio donde se generarán las tramas de respuesta (OUTPUT) al finalizar procesamiento:
Definir parte del nombre de los archivos que se generarán para cada procesamiento, así mismo la extensión de los archivos de salida propiamente:
8. Crear un ProxyService que controle los mensaje INPUT (Trama), que se dejarán en la ruta configurada:
Definir la ruta INPUT donde se depositará la trama:
Configurar tiempo, intervalo, formato y directorios (rutas) de control con relación a las tramas INPUT:
Creamos desde Message Flow los nodos que soportarán el funcionamiento del Servicio Virtual:
Con esto tenemos el Servicio Virtual completado, para las pruebas simplemente bastaría con depositar la trama INPUT en el directorio definir y automáticamente el flujo del Servicio Virtual se activará y a nivel de consola se visualizará el resultado:
PRUEBA:
1. Ubicar la trama en la ruta INPUT definida (C:\Ficheros\MFL\INPUT):
2. El Servicio Virtual en un tiempo determinado procesará el mensaje (Trama):
3. Finalmente, por cada registro en la trama se generarpa y consumirá un REQUEST del WS y así mismo generará un archivo OUTPUT por cada RESPONSE:
Para los interesados se pueden descargar las fuentes del Dummy (OSB 11g - '11.1.1.7') desde aquí: http://www.mediafire.com/download/fdz82c149nt8yfq/DummyNoXml_To_Xml.jar
No hay comentarios:
Publicar un comentario