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.
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:
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:
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:
Lanzar el servidor:
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.
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:
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.
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
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.
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.
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.