Ahora que hemos cubierto la fase de procesamiento de eventos y repasado todos los conceptos básicos relacionados con la configuración del B1iF para «supervisar» adecuadamente esos eventos para nosotros, vamos a llegar a la parte intrigante de nuestro proyecto – recibir la carga útil saliente (XML) enviada con el HTTPCall Atom e invocar nuestro WebHook que luego desencadena nuestro flujo de trabajo.

Supongo que ya tienes una suscripción activa a Azure; si no es así, ya es hora de que te hagas con una.

Pasos del flujo de trabajo de Logic App:

Paso 1) Nuestra Logic App necesita tener un trigger – En nuestro caso, este será el conector «When a HTTP request is received«:

Recuerda, todo lo que queremos es suscribirnos a un endpoint de servicio registrando una
URL de devolución de llamada.
Tsta URL se generará una vez que la Logic App se guarde por primera vez, y será
única
para este flujo de trabajo.

 

Paso 2) Si recuerda, el HTTPCall Atom en B1iF es para llamar a nuestro flujo de trabajo (utilizando la URL de devolución de llamada anterior ) enviando un cuerpo XML, por lo que utilizaríamos la expresión «triggerBody() «para recuperar lo que nuestro disparador tiene que entregar.

Pero no es suficiente, ya que querríamos convertir el cuerpo XML entrante a una estructura más «ligera» con la que podamos trabajar fácilmente: JSON (JavaScript Object Notation).

De hecho, B1iF mantiene sus propios esquemas de transformación XSL para prácticamente cualquier tipo de salida que requiera el sistema receptor, por lo que podemos asegurarnos de realizar esa conversión incluso antes de transmitir la carga útil al Atom final saliente.

Esto implicaría pasos adicionales para preparar la salida de modo que nuestro WebHook obtenga un cuerpo JSON en lugar de un cuerpo XML. Para simplificar las cosas, decidí utilizar un método más rápido y realizar la conversión desde la propia aplicación Logic.

  • Si desea saber más sobre los esquemas de transformación XSL, vaya a la versión 1.X de su B1iF, navegue hasta
    Ayuda ->

    Documentos
    y busque «Esquemas». Potencialmente podría escribir un blog posterior sobre cómo manejar varios tipos de esquemas durante las transformaciones XSL.

 

Así, nuestro 2nd paso del flujo de trabajo implicaría una acción «Componer» que convierte el cuerpo en un elemento JSON :

 

Paso 3) Si ejecutáramos el flujo de trabajo hasta su 2ª acción, obtendríamos el siguiente resultado :

Podemos observar claramente que el valor que estamos buscando (New Business Partner Code, ¿recuerdas? ) está «escondido» dentro del objeto JSON recién creado, y necesitamos extraerlo de ahí

Paso 4) A continuación crearemos una segunda acción «Componer» y utilizaremos la expresión «Salidas()» para navegar por nuestro JSON:

Esta acción recuperará el código BP y almacenará su valor

Podría tratarse de un pedido de cliente con artículos, una factura o un nuevo artículo creado/actualizado, todo depende de su situación empresarial.

Lo importante es que ahora puedes conservarlo y utilizarlo para hacer lo que sea necesario en función de tus necesidades:

  1. Puede activar un proceso de aprobación
  2. Puede generar un pedido basado en un pedido de cliente
  3. Puede enviar un presupuesto a un cliente para un artículo recién creado

Todo esto podría conseguirse utilizando SAP Business One Service Layer desde Logic App.

 

La acción final, en mi caso, sería enviarme un Email a mí mismo utilizando la opción «
Enviar un correo electrónico (V2)»
y utilizar los resultados de la acción «Redactar» como cuerpo del correo electrónico:

Nuestro flujo final tendrá el siguiente aspecto :

Y luego viene el propio correo electrónico:

Una vez más, tenemos que guardar nuestra Logic App para que se genere nuestra URL de devolución de llamada :

 

Una vez que hayamos copiado esa URL, podemos volver a B1iF y cerrar el asunto: desglosaríamos la URL en los siguientes campos :

  1. destProtocolo- https
  2. destHost- nuestro nombre de host Azure
  3. destPuerto- 443
  4. destPath- la cadena URL restante
  5. Método- Normalmente será un «POST» para este escenario.


Observaciones finales:

A pesar del hecho de que nuestro escenario no era demasiado complejo, hemos sido capaces de tener una idea de cómo Built-In SAP Business One Eventos podría ser obtenido y luego utilizado para desencadenar otros flujos de negocio utilizando tanto el Marco de Integración y Tecnología sin servidor como Azure Logic Apps Workflows

Los beneficios inmediatos que obtenemos al hacerlo incluyen:

  • Reducción de DevOps
  • Mayor rapidez de comercialización (= un cliente más feliz, a la vez que nos ayuda a gestionar mejor nuestros propios recursos internos).
  • Costes reducidos

Azure Logic Apps lleva con nosotros bastante tiempo, pero con la versión actual en funcionamiento, no hay prácticamente nada que no se pueda conseguir a la hora de crear una integración con nuestro ERP y gestionar nuestras API.

El hecho de que podamos saltarnos un proceso relativamente largo (tedioso y también bastante caro) de suscribirnos a la plataforma SAP BTP y configurar la Event Mesh/Grid para que funcione con ella nos abre una amplia ventana de oportunidades para disparar flujos de trabajo empresariales que sólo se basan en eventos de la vida real procedentes de nuestro propio ERP, en tiempo real, en lugar de repetidamente sondeo y comprobación nuestros puntos finales para ver si tenemos algunos datos con los que trabajar.