Integrado Inventario a Ecommerce Marketplace — Batch en Azure

Lucas Lopez
5 min readMay 21, 2018

--

Este artículo es parte de una serie que tiene como idea el mostrar cómo se puede actualizar la información de un Ecommerce Marketplace desde un sistema de inventarios.

La colección de Postman con todos los ejemplos y el programa de prueba están disponible en GitHub.

Ya sabemos como obtener el inventario desde SAP S/4HANA Cloud y como actualizar inventario en MercadoLibre, veamos cómo podemos poner todo junto para implementar la actualización en modo Batch.

Usando Azure Functions

Para implementar la lógica vamos a usar Azure Functions. Por que Cloud? Ya que los dos sistemas están en la nube tiene sentido no ejecutar esta lógica desde una red privada.

Por que Azure Functions? Porque la lógica de este ejemplo es simple y no requiere mucha complejidad. Como vimos en un artículo anterior, es sencillo usar Azure Functions aunque en un caso más elaborado se podrían considerar otras opciones como ser Azure Batch, VMs, etc. Además Azure Functions tiene tiempo de ejecución gratuito — 400000 GB-s de consumo de recursos.

Timer

Nuestra función tiene tres tareas muy simples: (1) obtener los datos del inventario de un producto en S/4, (2) realizar el mapping correspondiente y (3) actualizar Mercado Libre. Ya que es un proceso Batch, al crear la función usando el trigger Timer. Con este trigger podemos definir la frecuencia en que se ejecuta la función, en un formato tipo Cron. El formato es el siguiente:

{segundos} {minutos} {horas} {días} {mes} {día de la semana}

Obtener inventario de SAP S/4HANA Cloud

En un articulo anterior vimos como usar las APIs de SAP para obtener el inventario de un producto para distintas plantas. La lógica en Azure Function es muy simple, utilizando HttpClient y HttpRequestMessage.

La única complejidad extra es la estructura ODATA que utiliza SAP. Un conjunto de clases extras nos permite usar JsonConvert.DeserializeObject sin preocuparnos de mucho más.

Como parte la lógica, tenemos que controlar que el inventario de S4HC no supere el máximo definido por MercadoLibre. Si el inventario es mayor, entonces vamos a usar el valor máximo, en esta caso 99999 unidades, como el valor del inventario

Actualizando MercadoLibre

En otro articulo vimos como actualizar el inventario disponible en MercadoLibre para una publicación. La lógica a usar es también muy simple ya que seguimos utilizando HttpClient y HttpRequestMessage.

Algo para tener en cuenta es que como la función se ejecuta en modo automático, es necesario que usemos el refresh_token para obtener el access_token correspondiente. Esto requiere de una llamada extra antes de poder actualizar el inventario de los productos.

Productos en Mercado Libre

Antes de comenzar las pruebas, tenemos que crear dos productos en MercadoLibre para luego actualizarlos con los valores de S4HC. Cada publicación tiene su propio numero de producto que vamos a usar en la función. Para el ejemplo, vamos a usar dos items de pruebas, uno que creamos en el artículo anterior y uno nuevo.

Como podemos ver, el inventario es de 5 unidades para ambos productos.

Creando la función

En el ejemplo anterior para crear una Azure Function, usamos el editor online que provee Azure.

En este caso vamos a usar la integración que trae Visual Studio 2017. Comenzamos creando un nuevo proyecto. La opción de Azure Functions está en el menu Cloud

En la siguiente pantalla, nos muestras las distintas opciones de triggers que podemos utilizar para nuestra función. En este caso, vamos a elegir la opción timer_trigger. Al dar Ok, Visual Studio va a crear la función y podemos empezar a trabajar en el código.

El código completo de la función está disponible en GitHub.

A continuación el cuerpo principal.

Ejecutando la función

Lo bueno de desarrollar la función en Visual Studio es que podemos simular y debug desde el IDE. Cuando la función se ejecuta, podemos ver los mensajes en el log como lo veríamos en el editor online.

Publicando la función

Publicar la función es fácil si tenemos configurada nuestra cuenta en VS 2017. Simplemente elegimos la opción de Azure, seleccionamos nuestra suscripción y la Function App que tenemos creada del artículo anterior.

Ejecutando la función — Parte II

Cuando termina la publicación de la función, podemos ir al portal de Azure para ver las ejecuciones y los resultados.

Al publicarla por medio de Azure, la administración de la función no esta más habilitada desde el portal. Así que si queremos parar la ejecución de la función, para no ejecutarla sin sentido, es necesario hacerlo desde la view Cloud Explorer en Visual Studio.

Comentarios finales

Implementar este tipo de lógica es muy fácil en Azure Function aunque en realidad en caso reales, no es un modelo recomendado. Especialmente cuando la cantidad de productos es significativa. Pero si estamos en un apuro y tenemos que probar el modelo, es una opción a tener en cuenta.

Otros Artículos

Todas las opiniones expresadas son mías y no representan opiniones de ninguna entidad con la que he estado, estoy o estaré afiliado.

All views expressed are my own and do not represent opinions of any entity whatsoever with which I have been, am now, or will be affiliated.

--

--

Lucas Lopez

Avid Technologist at heart, a lifetime of projects, experience in software development and project management areas.