Automatización de procesos con Plataforma Low Code

Automatización de procesos con Plataforma Low Code

Introducción

Las plataformas Low-code/No-code son entornos de desarrollo que permite realizar aplicaciones usando entornos gráficos, combinando componentes y sin tener que escribir código o escribiendo muy poco. Incluyen interficies gráficas con lógica sencilla de drag-and-drop, donde combinamos bloques de código para construir la solución. Estas plataformas reducen el tiempo de desarrollo, acelerando la entrega de aplicaciones. Exsiten entornos low-code self-hosted , pero mayoritariamente los encontramos en la nube.

Existe una diferencia entre low-code y no-code. En las primeras no se puede prescindir totalmente de la programación manual. Se estima que el 80% del proceso de desarrollo puede ocurrir sin necesidad de escribir código. Las plataformas no-code no requeiren introducir nada de código, permiten ahorrar más tiempo, pero no son tan flexibles como las low-code.

Ventajas del uso de estas plataformas

  • Ayuda a reducir el Shadow IT La demanda en las organizaciones sobre aplicaciones es creciente. Suele pasar que los departamentos buscan soluciones al margen del TI corporativo. Para minimizar este efecto, las plataformas low-code permiten a los usuarios desarrollar soluciones al margen de TI. Estos pueden diseñarlas, mientras que el departamento TI puede gobernar los datos y los accesos de usuario.
  • Entrega rápida Se estima que desarrollar con low-code incrementa la velocidad de entrega de producto entre un 50%-80%
  • Minimiza riesgos Estas plataformas proporcionan funcionalidades integradas, incluido soporte multiplataforma, integración de datos y otros estandares de la indústria y prácticas de seguridad

Contras

  • Customización El nivel de customización de la plataforma debe ser conocido previamente al inicio del desarrollo. Customizar implica desarrollar, ‘tocar’ con código propio el entorno. Al usar mecanismos estandar de producción de soluciones es posible que la plataforma no permita customizar y eso a veces supone un problema.

  • Vendor Lock-in Cuando elegimos una plataforma, muchas veces nos vinculamos al proveedor que la desarrolla. Debemos conocer las posibilidadades que ofrece la solución para tomar el control y no dependender en exclusiva de un proveedor. Temas como la seguridad o el control de los datos deben estar en el centro de nuestras decisiones.

En nuestro caso eligiremos para trabajar plataformas Low-Code basadas en Opensource porque ofrecen más transparencia, control de datos, felxibilidad y también soporte comunitario.

Herramientas

Existen multitud de herramientas Low-code para diferentes ámbitos de aplicación. En el siguiente enlace se enumeran unas cuantas (comerciales y opensource)

Listado herramientas Low-Code de diferentes ámbitos.

En el entorno organizativo actual, en la AAPP, es importante atacar dos retos:

  • La automatización de procesos e interoperabilidad multisistema
  • Normalización de fuentes de datos

El primer caso hace referencia a que cada vez los procesos de trabajo implican a múltiples sistemas, tanto dentro como fuera de la empresa. Sería la evolución del BPM, pero enfocado a una estructrua de trabajo distribuida y no centralizada (un BPM monolítico que lo orquestre todo) El segundo caso, básicamente es la guerra contra las herramientas ofimáticas como Excel y Access, que generan cantidad de fuentes de datos departamentales, con información muy valiosa pero poco abierta o no compartida. Para ellos se debe poner en marcha herramientas que puedan gestionar esta información de manera fácil, multidispositivo, abiertas, concurrentes, con API de accesso, etc etc

En este artículo nos centraremos en el primer caso, y utilizaremos la herramienta N8N para crear un caso sencillo que muestre el potencial del producto: Un bot en Telegram que nos informa de la temperatura actual de la estación meteorológica del Ajuntament de Valls.

Dejamos el desarrollo del segundo caso, para otro artículo, en el que mostraremos el funcionamiento de Saltcorn

N8N

N8N

N8n se define como una herramienta extensible de automatización de workflows. Está basado en opensource y realizado en Javascript (TypeScript) está disponible en cloud y en self-hosting. Permite añadir customizaciones propias, lógica y aplicaciones. Tiene una interficie gráfica que facilita la gestión por nodos. Esta aproximación permite mucha versatilidad, conectando los nodos entre sí.

La tipología de nodos predefinidos es muy amplia. Este sentido encontramos integraciones con muchas aplicacionesy funcionalidades: desde una simple y genérica petición HTTP (con lo que podemos interrogar cualquier API), hasta integraciones con Google Docs, Telegram, Zoom, Mattermost …

En nuestro ejemplo mostraremos:

  • Instalación del entorno
  • Definición de conceptos básicos
  • Caso de uso: bot meteorológico en Telegram

Instalación

Se puede utilizar la instancia cloud a través de n8n.cloud. Es un servicio de pago, pero durante 30 dias permite desarrollar nuestras pruebas. Si tenemos un entorno de desarrollo podemos instalar los paquetes a través de npm o usar la imagen de Docker.

Lanzamos la instalación usando npm

$ npm install n8n -g

Una vez instalado, podemos inicializar el servicio.

$  n8n start --tunnel
Initializing n8n process

n8n now checks for new versions and security updates. You can turn this off using the environment variable N8N_VERSION_NOTIFICATIONS_ENABLED to "false"
For more information, please refer to https://docs.n8n.io/getting-started/installation/advanced/configuration.html


Waiting for tunnel ...
Tunnel URL: https://xpadsbz9ixcets8u3a57yd0l.hooks.n8n.cloud/

IMPORTANT! Do not share with anybody as it would give people access to your n8n instance!
n8n ready on 0.0.0.0, port 5678
Version: 0.141.0

Editor is now accessible via:
http://localhost:5678/

Press "o" to open in Browser.

Se inicia con el flag –tunnel, para habilitar el trigger de Telegram y sea alcanzable por la web.

Accedemos con el navegador a la aplicación para poder trabajar con la herramienta. El entorno de trabajo es muy sencillo y podemos consultar una guía de inicio aquí para crear un primer workflow.

Entorno

Componentes básicos

Los elementos principales en los que nos apoyaremos para realizar cualquier proyecto en N8N son:

  • Node Los elementos de ejecución del workflow son los nodos. Es un punto de entrada para recuperar datos, una función para procesarlos o una salida para enviar datos. Pueden usarse uno o múltiples nodos que permiten, usando conexiones, crear desde los workflows más sencillos a los más complejos. Existen nodos predefinidos para conectar con las aplicaciones más conocidas, nodos genéricos de consulta HTTP, por ejemplo o incluso podemos construir nuestros propios nodos. Los nodos genéricos para acceder a cualquier servicio web son HTTP Request o Webhook.

  • Conexión Establece un enlace entre nodos para enrutar los datos a través del workflow. Cada nodo debe tener una o múltiples conexiones.

  • Workflow Un workflow es un proyecto de automatización que consiste en una serie de nodos interconectados para realizar una tarea específica. Los workflow pueden iniciarse manualmente o disparadas (trigger) cuando un evento ocurre (temporización, cambio de datos o cualquier otro evento). La ejecución finaliza cunado todos los nodos activos y conectados han procesado sus datos.

Caso Práctico: Bot Meteorológico

Crearemos un bot de Telegram que salude a los miembros del Grupo, indique datos meteorológicos de la estación del Ajuntament de Valls o nos muestre una frase célebre si se lo pedimos. Hemos utilizado de base el ejemplo creado por la comunidad n8n en castellano Los elementos que integraremos son:

  • Portal de datos abiertos, consultando el último registro de los datos de la estación meteorológica
  • Servicio REST para consumir frases aleatórias via web
  • BotFather, para crear bot de Telegram y obtener los datos necesarios usados por N8N.

Creación del Bot

Para la creación del bot utilizaremos BotFather. Buscamos @BotFather en Telegram Una vez abrimos chat con BotFather creamos nuestro bot. Atención al nivel de privacidad del bot. Por defecto no lee los mensajes de los grupos y por lo tanto debemos cambiar con /setprivacy el nivel (false).

Creación BotFather

De entrada, creamos un grupo privado Prueba n8n y añadimos a un usuario y al bot al mismo.

Grupo Telegram

También es necesario hacer a nuestro bot, VallsMeteo_bot, administrador del grupo.

Admin Grupo

Para crear nuestro workflow se necesita el id del grupo. En los grupos públicos es fácil, ya que se puede usar @nombredegrupo pero para los grupos privados se debe encontrar el ID que usa el grupo.

ID de grupo privado

Vamos a necesitar el token que hemos creado de nuestro bot de telegram. Usaremos la API de Telegram para encontrar el id.

Token Bot
024487727:AAENDRpfCMelZSiP8Bx4M22ThwdcBi7mXtk

Ahora, con un navegador hacemos la llamada, una vez hemos escrito alguna cosa en el Grupo de Telegram que hemos creado.

https://api.telegram.org/botTOKEN/getUpdates

Concretamente:

https://api.telegram.org/bot2024487727:AAENDRpfCMelZSiP8Bx4M22ThwdcBi7mXtk/getUpdates

El resultado:

{"ok":true,"result":[{"update_id":916481533,
"message":{"message_id":2,"from":{"id":9178241,"is_bot":false,"first_name":"Ricardo","last_name":"Gm","username":"rgonzalezmas"},"chat":{"id":-1001543814894,"title":"Prueba n8n","type":"supergroup"},"date":1632948019,"text":"Hola"}}]}

El valor que nos interesa está dentro del array chat, parámetro id

ID Grupo privado
-1001543814894

Ahora ya tenemos todos los datos para interactuar con el Bot en nuestro workflow.

Existe una gran variedad de nodos pero nosotros utilizaremos los siguientes elementos:

  • Node Telegram Trigger

    • Referencia doc: Telegram Trigger
    • Descripción: El Trigger node de telegram esta escuchando a la espera de mensajes
  • Node Telegram

    • Referencia doc: Telegram
    • Descripción: El node de telegram permite interactuar con telegram enviando mensajes, ficheros, audio, imágenes, etc
  • Node IF

    • Referencia doc: IF
    • Descripción El node if es un condicional que permite realizar acciones según las condiciones que le indicamos.
  • Node HTTP Request

    • Referencia doc: HttpRequest
    • Descripción El node HttpRequest realiza una petición HTTP y devuelve los datos de respuesta.
  • Node Set

    • Referencia doc: Set
    • Descripción El node Set inicializa valores en variables o opcionalmente borra valores.

El funcionamiento a alto nivel del Bot es:

while (escuchamos mensajes del grupo)
{
	mensaje = trigger.get();
	if (mensaje contiene "hola") || (mensaje contiene "Buenos días")
	{
		Telegram.send("Mensaje de Beinvenida y opciones")
	} else
	{
		if (mensaje contiene "METEO")
		{
			datos = consulta_open_data (recurso_meteo, último);
			Telegram.send(datos);
		}else
		{
			if (mensaje contiene BOT8)
			{
				datos = consulta_TIP_of_the_day();
				Telegram.send(datos);
			}else
			{
				Telegram.send("Mensaje")
			}
		}
	}
}

El JSON con el modelo realizado lo podeis encontrar en este repositorio Para importarlo, basta con copiar el fichero (CTRL+C) y cuando estamos en la consola de gestión pegar (CTRL+V)… o importar el fichero JSON descargado.

Algunos detalles de la implementación:

  • Node Telegram Trigger En los parámetros configuramos las credenciales, básicamente el TOKEN obtenido anteriormente También indicamos que el Nodo está a la escucha de TODOS (*) los mensajes que se produzcan en el grupo. Trigger

  • Node Telegram En los parámetros configuramos las credenciales, básicamente el TOKEN obtenido anteriormente. Indicamos el tipo de respuesta que haremos en el grupo: “SendMessage” o “SendPhoto” según el caso. Se configura el id de grupo que hemos obtenido con anterioridad.

Send

Otro aspecto destacado es la facilidad con la que podemos acceder a la información obtenida por otros nodos en el workflow, a través de una estructrua basada en JSON. Por ejemplo, esta variable recupera el nombre de la persona que ha enviado un mensaje en el grupo de Telegram que estamos escuchando.

{{$node["Telegram Trigger"].json["message"]["from"]["first_name"]}}
  • Node HTTP Request

Este nodo sirve para interrogar APIs de manera sencilla. En el caso del portal OpenData del Ajuntament de Valls encontramos los datos meteorológicos hora a hora, aquí

La consulta a la API que realizamos es la siguiente:

https://dadesobertes.valls.cat/api/3/action/datastore_search_sql?sql=SELECT%20*%20from%20%22de8f4295-d72c-41dc-a93b-2e21a679029d%22%20ORDER%20BY%20_id%20DESC%20LIMIT%201

La configuración es senzilla y la respuesta ya la obtenemos en formato JSON para su proceso posterior.

Para la consulta de Quote of the day usamos el servicio web https://quotes.rest/qod?language=en, que retorna a diario una nueva frase célebre.

HTTP

  • Node Set

Básicamente se usa para parsear la salida de los datos meteorológicos y ponerlos en variables. Este nodo es prescindible pero hemos querido probar como definir variables a partir de los resultados de otros nodos.

Ejemplos:

            {
              "name": "temp",
              "value": "={{$json[\"result\"][\"records\"][0][\"TEMP\"]}}"
            },
            {
              "name": "humidity",
              "value": "={{$json[\"result\"][\"records\"][0][\"HUM\"]}}"
            },
            {
              "name": "wind",
              "value": "={{$json[\"result\"][\"records\"][0][\"VEL_VENT\"]}}"
            },
            {
              "name": "wind_dir",
              "value": "={{$json[\"result\"][\"records\"][0][\"DIR_VEL_VENT\"]}}"
            },
            {
              "name": "timestamp",
              "value": "={{$json[\"result\"][\"records\"][0][\"HORA\"]}}"
            }

Set

Podemos ver nuestro bot finalizado, en el entrono gráfico:

Workflow

Para dejarlo funcionando, debemos marcarlo como activo Activo

Podemos verificar el funcionamiento aquí:

Funcionamiento Bot

Conclusiones

Hemos desarrollado una aplicación sencilla pero funcional sin tener que escribir código. Lo que se puede destacar:

  • Las implementaciones son rápidas. El aprendizaje de la herramienta ha sido muy rápido. En este caso, N8N aporta mucha documentación y el entorno de desarrollo es muy intuitivo y user-friendly
  • Encaja perfectamente en el modelo de trabajo Agile. Se puede prototipar muy rápido, implicando al cliente desde el inicio para la prueba de concepto realizada.
  • Flexible. Permite cambios de forma muy rápida, con lo que los despliegues no son complicados a pesar de los cambios.
  • Se reducen los costes de desarrollo. Para un tipo de aplicaciones concrectas puede encajar este modelo de desarrollo, reduciendo los tiempos de entrega y la necesidad de utilizar programadores expertos en una tecnología concreta

La comunidad de N8N expone multitud de ejemplos de workflows para poder probarlos o que sirvan de guía.

Workflows Ejemplo


See also