Intercambio de mensajes B2B entre asociados que utilizan flujos de trabajo en Azure Logic Apps
Se aplica a: Azure Logic Apps (consumo + estándar)
Si tiene una cuenta de integración que define entidades y contratos, puede crear un flujo de trabajo de negocio a negocio (B2B) automatizado que intercambie mensajes entre asociados comerciales mediante Azure Logic Apps. El flujo de trabajo puede utilizar conectores que admiten protocolos estándar del sector, como AS2, X12, EDIFACT y RosettaNet. También puede incluir operaciones proporcionadas por otros conectores en Azure Logic Apps, como Office 365 Outlook, SQL Server y Salesforce.
En este artículo se muestra cómo crear un ejemplo de flujo de trabajo de aplicación lógica que puede recibir solicitudes HTTP mediante un desencadenador Solicitud, descodificar el contenido del mensaje mediante las acciones Descodificación AS2 y Descodificar X12 y devolver luego una respuesta mediante la acción Respuesta. En el ejemplo se usa el diseñador de flujos de trabajo en Azure Portal, pero puede seguir pasos similares para el diseñador de flujo de trabajo en Visual Studio Code.
Si no está familiarizado con las aplicaciones lógicas, consulte ¿Qué es Azure Logic Apps? Para más información sobre la integración empresarial B2B, revise Flujos de trabajo de integración empresarial B2B con Azure Logic Apps.
Requisitos previos
Una cuenta y una suscripción de Azure. Si aún no tiene suscripción, regístrese para obtener una cuenta de Azure gratuita.
Un recurso de cuenta de integración, donde se definen y almacenan artefactos, como socios comerciales, contratos, certificados, entre otros, para su uso en los flujos de trabajo de integración empresarial y B2B. Este recurso tiene que satisfacer los siguientes requisitos:
Estar asociado a la misma suscripción de Azure que el recurso de aplicación lógica.
Existe en la misma ubicación o región de Azure que el recurso de aplicación lógica.
Si usa el tipo de recurso Aplicación lógica (consumo), la cuenta de integración necesita un vínculo al recurso de aplicación lógica para poder utilizar los artefactos en el flujo de trabajo.
Si utiliza el tipo de recurso Aplicación lógica (estándar), la cuenta de integración no necesita un vínculo al recurso de aplicación lógica, pero sigue siendo necesaria para almacenar otros artefactos, como asociados, contratos y certificados, junto con el uso de las operaciones AS2, X12 o EDIFACT. La cuenta de integración todavía tiene que cumplir otros requisitos, como usar la misma suscripción de Azure y existir en la misma ubicación que el recurso de aplicación lógica.
Nota
Actualmente, solo el tipo de recurso Logic App (Consumption) (Aplicación lógica [Consumo]) admite operaciones de RosettaNet. El tipo de recurso Logic App (Standard) (Aplicación lógica [Estándar]) no incluye operaciones de RosettaNet.
Al menos dos asociados comerciales en la cuenta de integración. Las definiciones de ambos asociados deben usar el mismo calificador de identidad empresarial, que es AS2, X12, EDIFACT o RosettaNet.
Un contrato AS2 y un contrato X12 para los asociados que se utilizan en este flujo de trabajo. En cada contrato hacen falta un asociado anfitrión y un asociado invitado.
Un recurso de aplicación lógica con un flujo de trabajo en blanco donde puede agregar el desencadenador Solicitud y luego las siguientes acciones:
Adición del desencadenador Request
Para iniciar el flujo de trabajo en este ejemplo, agregue el desencadenador Solicitud.
En Azure Portal, abra el recurso de la aplicación lógica y el flujo de trabajo en blanco en el diseñador de flujos de trabajo.
En el cuadro de búsqueda del diseñador, seleccione Todo si no está seleccionado. En el cuadro de búsqueda, escriba
when a http request
. Seleccione el desencadenador Solicitud denominado Cuando se recibe una solicitud HTTP.En el desencadenador, deje vacío el cuadro Esquema JSON de cuerpo de solicitud.
El motivo es que el desencadenador recibirá un mensaje X12 en formato de archivo plano.
Cuando esté listo, seleccione Guardar en la barra de herramientas del diseñador.
Este paso genera la dirección URL de HTTP POST que usará más adelante para enviar una solicitud que desencadena el flujo de trabajo de la aplicación lógica.
Copie y guárdela para usarla más adelante.
Incorporación de la acción Descodificación AS2
Ahora agregue las acciones B2B para este ejemplo, que utiliza las acciones AS2 y X12.
En el desencadenador, seleccione Nuevo paso.
Sugerencia
Para ocultar los detalles del desencadenador Solicitud, seleccione la barra de título del desencadenador.
En el cuadro de búsqueda Elegir una operación, seleccione Todo, si no está seleccionado. En el cuadro de búsqueda, escriba
as2
y seleccione Descodificación AS2.En la propiedad Mensaje que se descodificará de la acción, escriba la entrada que desea que descodifique la acción AS2, que es la salida
body
del desencadenador Solicitud. Hay varias maneras de especificar este contenido como entrada de la acción, ya sea seleccionándolo en la lista de contenido dinámico o como expresión:Para seleccionar de una lista que muestre las salidas de desencadenador disponibles, haga clic dentro del cuadro Mensaje que se descodificará. Cuando aparezca la lista de contenido dinámico, en Cuando se recibe una solicitud HTTP, seleccione el valor de propiedad Cuerpo, por ejemplo:
Sugerencia
Si no aparece ninguna salida de desencadenador, en la lista de propiedades dinámicas, en Cuando se recibe una solicitud HTTP, seleccione Ver más.
Para especificar una expresión que haga referencia a la salida
body
del desencadenador, haga clic dentro del cuadro Mensaje que se descodificará. Después de que aparezca la lista de contenido dinámico, seleccione Expresión. En el editor de expresiones, escriba la expresión siguiente y seleccione Aceptar:triggerOutputs()['body']
O bien, en el cuadro Mensaje que se descodificará, escriba directamente la expresión siguiente:
@triggerBody()
La expresión se resuelve en el token Cuerpo.
En la propiedad Encabezados de mensaje de la acción, escriba los encabezados necesarios para la acción AS2, que se encuentran en la salida
headers
del desencadenador Solicitud.Para especificar una expresión que haga referencia a la salida
headers
del desencadenador, seleccione la opción para cambiar los encabezados del mensaje al modo de texto.Haga clic dentro del cuadro Encabezados de mensaje. Después de que aparezca la lista de contenido dinámico, seleccione Expresión. En el editor de expresiones, escriba la expresión siguiente y seleccione Aceptar:
triggerOutputs()['Headers']
En la acción Descodificación AS2, la expresión aparece ahora como un token:
Para que este token de expresión se resuelva en el token Headers, cambie entre la vista del diseñador y la vista de código. Después de este paso, la acción Descodificación AS2 se muestra similar a la de este ejemplo:
Incorporación de la acción Respuesta como confirmación de mensaje
Para notificar al asociado comercial que se ha recibido el mensaje, puede volver a enviar una respuesta que contenga una notificación de disposición del mensaje (MDN) AS2 mediante las acciones Condición y Respuesta. Al agregar estas acciones inmediatamente después de la acción AS2, el flujo de trabajo de la aplicación lógica puede continuar el procesamiento si la acción AS2 se realiza correctamente. De lo contrario, si se produce un error en la acción AS2, el flujo de trabajo de la aplicación lógica deja de procesarse.
En la acción Descodificación AS2, seleccione Nuevo paso.
En el panel Elegir una operación, seleccione Integrado, si no está seleccionado. En el cuadro de búsqueda, escriba
condition
. Seleccione la acción Condición.Ahora aparece la forma de la condición, incluidas las rutas de acceso que determinan si se cumple la condición.
Ahora especifique la condición que se va a evaluar. En el cuadro Elegir un valor, escriba la expresión siguiente:
@body('AS2_Decode')?['AS2Message']?['MdnExpected']
En el cuadro central, asegúrese de que la operación de comparación esté establecida en
is equal to
. En el cuadro de la derecha, escriba el valorExpected
.Guarde el flujo de trabajo de la aplicación lógica. Para que esta expresión se resuelva como este token, cambie entre la vista del diseñador y la vista de código.
Ahora, especifique las respuestas para devolver en función de si la acción Descodificación AS2 se realiza correctamente o no.
En el caso de que la acción Descodificación AS2 sea correcta, en la forma True, seleccione Agregar una acción. En el cuadro de búsqueda Elegir una operación, escriba
response
y seleccione Respuesta.Para acceder a MDN AS2 desde la salida de la acción Descodificación AS2, especifique las expresiones siguientes:
En la propiedad Encabezados de la acción Respuesta, escriba la expresión siguiente:
@body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']
En la propiedad Cuerpo de la acción Respuesta, escriba la expresión siguiente:
@body('AS2_Decode')?['OutgoingMdn']?['Content']
Para que esta expresión se resuelva como token, cambie entre la vista del diseñador y la vista de código:
En el caso de que la acción Descodificación AS2 genere un error, en la forma False, seleccione Agregar una acción. En el cuadro de búsqueda Elegir una operación, escriba
response
y seleccione Respuesta. Configure la acción Respuesta para devolver el estado y el error que desea.
Guarde el flujo de trabajo de la aplicación lógica.
Incorporación de la acción Descodificar mensaje X12
Ahora agregue la acción Descodificar mensaje X12.
En la acción Respuesta, seleccione Agregar una acción.
En Elegir una operación, en el cuadro de búsqueda, escriba
x12 decode
y seleccione Descodificar mensaje X12.Si la acción X12 solicita información de conexión, proporcione el nombre de la conexión, seleccione la cuenta de integración que desee usar y, a continuación, seleccione Crear.
Ahora, especifique la entrada para la acción X12. En este ejemplo se usa la salida de la acción AS2, que es el contenido del mensaje, pero tenga en cuenta que este contenido está en formato de objeto JSON y está codificado en base64. Por lo tanto, tiene que convertir este contenido en una cadena.
En el cuadro Mensaje de archivo plano X12 que se va a descodificar, escriba la expresión siguiente para convertir la salida AS2:
@base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])
Guarde el flujo de trabajo de la aplicación lógica. Para que esta expresión se resuelva como este token, cambie entre la vista del diseñador y la vista de código.
Guarde el flujo de trabajo de la aplicación lógica.
Si necesita pasos adicionales para este flujo de trabajo de aplicación lógica, por ejemplo, para descodificar el contenido del mensaje y generar ese contenido en formato de objeto JSON, continúe agregando las acciones necesarias para el flujo de trabajo de la aplicación lógica.
Con esto, ya ha terminado de configurar el flujo de trabajo de la aplicación lógica B2B. En una aplicación real, puede almacenar los datos X12 descodificados en un almacén de datos o una aplicación de línea de negocio (LOB). Por ejemplo, revise la siguiente documentación:
Puede agregar más acciones o escribir API personalizadas que se conecten a sus propias aplicaciones LOB, así como emplear estas API en su aplicación lógica.