Enviando mensajes EDI AS2 con Mulesoft

Introducción

Con la llegada de las plataformas de integración as-a-service (iPaaS) es posible contar con potentes herramientas que permiten no solo crear APIs y orquestaciones, sino también operaciones B2B usando la misma herramienta. Todos estos desarrollos se pueden desplegar de manera híbrida, tanto on-premises como en clouds públicas y privadas.

En este tutorial explicamos cómo utilizar uno de los iPaaS más conocidos (Mulesoft Anypoint) para crear un servicio de integración que intercambia mensajes EDI vía el protocolo AS2 utilizando los conectores de Mulesoft.

Acerca de EDI y AS2

EDI, Electronic Data Interchange, es una de las técnicas más utilizadas para transmitir mensajes B2B por medios electrónicos. Una de sus variantes - EDIFACT (Estándar de la ONU para EDI) ofrece formatos específicos para albaranes, facturas, órdenes de compra, etc…

El protocolo AS2, Applicability Statement 2, es una especificación de como transportar datos de manera segura y fiable por Internet. La seguridad se logra usando certificados digitales y encript acin. Este protocolo se basa en HTTP/S y S/MIME, empleado en las comunicaciones EDIFACT. Dicho protocolo envía un mensaje utilizando el protocolo HTTP o HTTPS con método POST (S/MIME) incluyendo los archivos a intercambiar entre las empresas con archivo adjunto al mensaje.

Las principales características del AS2 son:

  • La transmisión del mensaje se realiza con HTTP/S
  • Los ficheros a intercambiar B2B se anexan con archivos adjuntos al mensaje
  • Los mensajes pueden ser cifrados, pero no es obligatorio
  • El envío de un mensaje puede solicitar una Notificación de Tipo de Mensaje (MDN) de “éxito” como justificante de la recepción del mensaje, aunque no es obligatorio.

A finales de los años 90 el IETF (Internet Engineering Task Force) introdujo el AS1 que proveía un sistema de intercambio de ficheros seguro sobre SMTP y posteriormente el AS2 que lo hace sobre HTTP(s).

AS2 se utiliza de manera masiva por parte de empresas como Amazon para poder comunicarse con empresas de mensajería y logística y así automatizar la entrega de paquetería.

Pasamos a ver el funcionamiento de este sistema de envío de mensajes, dentro de un contexto de MuleSoft y OpenAS2, con una serie de ejemplos:

Pasos previos

1.Puesta en marcha de servicio AS2

Herramienta Open-Source: OpenAS2

Descarga: http://openas2.sourceforge.net/(Tras descargarla hay que hacer la instalación del mismo)

Adaptación de la configuración a nuestras necesidades en los archivos:

  • Config.xml
  • Partnership.xml

Lanzar el servidor:

  • Windows – En carpeta bin dentro de la instalación del servidor … start-openas2.bat
  • Linux/Unix - en la carpeta bin dentro de la instalación del servidor … bash start-openas2.sh

2.Generación/Verificación del archivo de claves

Tenemos que validar que el archivo de certificados contiene los certificados y claves de las entidades que van a trasegar la información:

En este caso bajo X.509 – tenemos dos entidades mycompany y partnerA si necesitásemos otro partner, por ejemplo partnerB deberíamos incluir sus claves en el archivo.

Existen diferentes formas y herramientas para esta labor, en este caso hemos utilizado la herramienta bajo Windows, “Portecle”, que es free software con los términos de GNU General Public License as published by the Free Software Foundation.

Ejemplo de MuleSoft conector AS2 v4 para comunicación con Servicio AS2

Ejemplo 1: Recibir mensaje vía REST - POST y enviarlo al Servidor AS2

Vista general del proyecto que hemos denominado mule2as2viapost

Configurar el conector HTTP – Listener

Configurar el conector AS2 – operación Send

 

Poner en marcha la aplicación Mule en el runtime local o en el cloud si fuera el caso.

Para hacer una prueba, podríamos usar, por ejemplo:

Ejemplo 2: Transmitir Fichero a Servidor AS2
 

Vista general del proyecto que hemos denominado mule2as2

Configuracion del conector HTTP-Listener

Configuración del conector File->Read

Configuración del conector AS2

Igual o similar al ejemplo anterior, si hay colisión, podemos cambiar los puertos de escucha.

Casos de prueba de MuleSoft conector AS2 v4 para comunicación con Servicio AS2

 

Ejemplo 1: PruebaOnPremise2OnPremise

Tras descargar el servidor OpenAS2, se ha descomprimido y se ha ubicado en la ruta C:/

Desplegar el servicio de Mulesoft con el listener Post y el conector AS2 configurados:

En la ruta:

C:\OpenAS2Server-2.9.0\data\MyCompany_OID-PartnerA_OID\inbox se creará el fichero que se ha enviado por el Postman

Ejemplo 2: PruebaOnPremise2Cloud

En un servidor de amazon y dentro del path ‘/opt’ se ha ubicado el servidor OpenAS2

Para arrancarlo ir a la ruta /opt/OpenAS2/bin/

Y ejecutar el comando ./start-openas2.sh

Desplegar el servicio de Mulesoft con el listener Post y el conector AS2 configurados

Se envía un mensaje post a la url definida: http://localhost:8084/send2as2

Con el mensaje EDIFACT de prueba:

UNA:+.? '

UNB+UNOA:3+STYLUSSTUDIO:1+DATADIRECT:1+20051107:1159+6002'

UNH+SSDD1+ORDERS:D:03B:UN:EAN008'

BGM+220+BKOD99+9'

DTM+137:20051107:102'

NAD+BY+5412345000176::9'

NAD+SU+4012345000094::9'

LIN+1+1+0764569104:IB'

QTY+1:25'

FTX+AFM+1++XPath 2.0 Programmer?'s Reference'

LIN+2+1+0764569090:IB'

QTY+1:25'

FTX+AFM+1++XSLT 2.0 Programmer?'s Reference'

LIN+3+1+1861004656:IB'

QTY+1:16'

FTX+AFM+1++Java Server Programming'

LIN+4+1+0596006756:IB'

QTY+1:10'

FTX+AFM+1++Enterprise Service Bus'

UNS+S'

CNT+2:4'

UNT+22+SSDD1'

UNZ+1+6002'

En el directorio /opt/OpenAS2/data/MyCompany_OID-PartnerA_OID/inbox, aparecerá el fichero creado.

Ejemplo 3: PruebaCloud2Cloud

En un servidor de amazon y dentro del path ‘/opt’ se ha ubicado el servidor OpenAS2

Para arrancarlo ir a la ruta /opt/OpenAS2/bin/

Y ejecutar el comando ./start-openas2.sh

Se envía un mensaje post a la url definida: http://testas2-ksjz.us-e2.cloudhub.io/send2as2

Con el mensaje EDIFACT de prueba:

UNA:+.? '

UNB+UNOA:3+STYLUSSTUDIO:1+DATADIRECT:1+20051107:1159+6002'

UNH+SSDD1+ORDERS:D:03B:UN:EAN008'

BGM+220+BKOD99+9'

DTM+137:20051107:102'

NAD+BY+5412345000176::9'

NAD+SU+4012345000094::9'

LIN+1+1+0764569104:IB'

QTY+1:25'

FTX+AFM+1++XPath 2.0 Programmer?'s Reference'

LIN+2+1+0764569090:IB'

QTY+1:25'

FTX+AFM+1++XSLT 2.0 Programmer?'s Reference'

LIN+3+1+1861004656:IB'

QTY+1:16'

FTX+AFM+1++Java Server Programming'

LIN+4+1+0596006756:IB'

QTY+1:10'

FTX+AFM+1++Enterprise Service Bus'

UNS+S'

CNT+2:4'

UNT+22+SSDD1'

UNZ+1+6002'

La respuesta obtenida del servicio es:

En el directorio /opt/OpenAS2/data/MyCompany_OID-PartnerA_OID/inbox, aparecerá el fichero creado.

Conclusión

En este tutorial se ha podido comprobar cómo los iPaaS como Mulesoft permiten desde una interfaz moderna, realizar integraciones utilizando sistemas de mensajería que llevan funcionando varias décadas. La ventaja de un iPaaS es que con el mismo conjunto de herramientas vamos a poder no solo programar integraciones EDI, sino también integraciones asíncronas, operaciones de integración de datos, APIs, etc.

 

Guía de Posibilidades Profesionales en el Ecosistema de Java