Nuevas mejoras en nuestros SDKs para workers basado en KuFlow Engine!
Publicado el 27-09-2023 por KuFlow Team
Credits: Creada por lexica.art - Editada por KuFlow
En KuFlow seguimos trabajando para que la experiencia de desarrollar workers para nuestra plataforma sea lo más cómoda posible. Para ellos recientemente hemos introducido cambios en nuestros SDKs que facilitan enormemente las tareas de configuración y orquestación de tareas asíncronas.
En esta ocasión las mejoras introducidas cubren el desarrollo de workers con KuFlow Engine (basado en Temporal.io).
Mejoras en los mecanismos de autenticación y autorización de los Workers
Como ya sabrás, en los workers para KuFlow que utilizan el motor basado en Temporal, los mecanismos de autenticación que se ejecutan contra nuestra solución Temporal consisten en un sistema basado en un certificado y una clave privada, además de un token firmado. Hasta ahora, con nuestros SDKs la implementación de este mecanismo era bastante sencilla ya que se proporciona un mecanismo listo para usar. Sin embargo, el desarrollador del Worker tenía que proporcionar las credenciales, certificados y clave privada para configurar su worker.
Ahora se ha implementado un mecanismo totalmente transparente para que el SDK gestione automáticamente el aprovisionamiento de los certificados y su clave privada. Porque, por supuesto, los mecanismos de autenticación y autorización siguen existiendo.
Esto hace completamente innecesaria la creación de certificados (tanto de la parte pública como de la privada) en la interfaz de usuario de KuFlow. Por lo tanto, a partir de ahora, no tendrá que configurar ningún certificado en sus workers. No obstante, los certificados emitidos hasta ahora serán perfectamente válidos y seguirán funcionando si por ahora no decides actualizar a las últimas versiones de nuestros SDKs. No obstante, si accede a la interfaz gráfica de usuario de KuFlow observará que la sección de gestión de certificados está marcada como obsoleta.
Por lo tanto, ya no deberás especificar la sección Mutal TLS en la configuración de tus workers. Del mismo modo, hemos aprovechado para hacer innecesaria la configuración del namespace del worker, a partir de ahora esta configuración es gestionada dinámicamente por el SDK. En la siguiente imagen puedes ver la diferencia en los cambios en la configuración de un worker respecto a la versión anterior de los SDKs.
Como siempre, estos cambios están disponibles en todos nuestros SDKs; Java, Javascript y Python.
Para más información:
Authentication mechanism in KuFlow: https://docs.kuflow.com/developers/authentication
Working with Temporal based Workers using KuFLow SDKs: https://docs.kuflow.com/developers/client-integration-temporal
Nueva gestión de tareas asíncronas
En KuFlow diferenciamos entre dos tipos de tareas. Tareas síncronas y asíncronas. Las tareas síncronas son realizadas por sistemas informáticos ya que no hay necesidad de esperar entradas y salidas para realizarlas. Sin embargo, una tarea asíncrona depende de diferentes instantes de tiempo para su realización. Normalmente, este tipo de tareas las realiza un ser humano, pero también puede realizarlas un sistema informático.
Para manejar esta asincronía en los workers basados en Temporal, hasta ahora solíamos utilizar una actividad Temporal que no finalizaba hasta que era completada por un evento externo, normalmente como consecuencia de la acción realizada por un humano en la GUI de KuFlow. Esto implicaba que los desarrolladores configurasen dos fachadas de actividad en los workers, una para las actividades síncronas de KuFlow y otra para las asíncronas. Esto significaba que al orquestar la creación de la tarea en el Workflow, este debía llamar a una actividad u otra dependiendo de la naturaleza de la tarea.
A partir de ahora, sólo habrá una única fachada de actividad para KuFlow, y un único método para crear tareas, ya sean síncronas o asíncronas.
¿Entonces cómo manejamos la suspensión del Workflow para orquestar la asincronía?
La solución es simple, y es una forma más natural de uso en el mundo Temporal. En estos casos, cuando necesitamos esperar a que la tarea se complete para continuar con nuestro workflow, lo que tenemos que hacer es añadir la siguiente línea de código después de invocar la creación de la tarea.
Ejemplo en Typescript
await condition(() => kuFlowCompletedTaskIds.includes(taskId));
Ejemplo en Java
Workflow.await(() -> this.kuFlowCompletedTaskIds.contains(task.getId()));
Ejemplo en Python
await workflow.wait_condition(lambda: task.id in self._kuflow_completed_task_ids)
Lo que sucede aquí es que estamos pausando el flujo de trabajo hasta que recibamos una señal de Temporal que indique que la tarea ha sido completada externamente. Cuando esto ocurra, el worker continuará la ejecución del flujo de trabajo justo por donde iba.
Como siempre, puedes encontrar ejemplos de cómo utilizar esta nueva implementación en los tutoriales existentes en la documentación de KuFlow, en los repositorios de ejemplos en GitHub, y generando código de ejemplo o de plantilla desde dentro de la aplicación KuFlow.****
Para más información:
- Working with Temporal based Workers using KuFLow SDKs: https://docs.kuflow.com/developers/client-integration-temporal
- Tutorials: https://docs.kuflow.com/developers/examples/
- GitHub repositories: https://github.com/kuflow