Recientemente Dapr ha añadido soporte para ejecutar flujos de trabajo de larga duración. Esta nueva característica ha hecho de Dapr una opción atractiva para los desarrolladores que quieren probar un nuevo motor de flujo de trabajo.

Dapr Workflow es una herramienta que simplifica la tarea de orquestar la lógica requerida para la mensajería, gestión de estados y manejo de fallos en múltiples microservicios, haciendo que esta tarea sea más fácil para los desarrolladores. Con Dapr Workflow, se pueden crear aplicaciones que sean duraderas, resistentes a fallos y que puedan mantener su estado en el tiempo. Antes de la aparición de Dapr Workflow, era común tener que crear flujos de trabajo personalizados y complejos en el código para lograr aplicaciones con estas características.

Características: 

  • Ofrece un runtime integrado para controlar la ejecución del flujo de trabajo de Dapr.
  • SDK para crear flujos de trabajo en código, utilizando cualquier lenguaje.
  • API HTTP y gRPC para gestionar flujos de trabajo (inicio, consulta, suspensión/reanudación, finalización).
  • Se integra con cualquier otro tiempo de ejecución de flujos de trabajo mediante componentes de flujos de trabajo.

Los escenarios donde puedes aplicar esto son los mismo que usabas en DFT de Microsoft. Como por ejemplo:

  • Procesamiento de pedidos con gestión de inventario, sistemas de pago, envío, etc. En genral procesados donde sigues una cadena de acciones.
  • Flujos de trabajo donde ser coordinan tareas entre múltiples departamentos y participantes.
  • Flujos de trabajo de procesamiento de imágenes con clasificación y almacenamiento basados en API.

Y para profundizar más, no sería otra cosa que reescribir con mis palabras:

Una vez asimilado los anteriores enlaces, os dejo un ejemplo en .NET6 que hace uso de esta característica de Dapr.

Your content goes here. Edit or remove this text inline or in the module Content settings. You can also style every aspect of this content in the module Design settings and even apply custom CSS to this text in the module Advanced settings.

Entramos en el directorio donde hemos descargado el ejemplo y arrancamos el proyecto:

dapr run --app-id wfsample --dapr-grpc-port 4001 --dapr-http-port 3500

Y pruebas el endpoint del controlle con el siguiente payload (usa curl, postman, etc.):

{ 
  numberOfParallelSubOrchestration: 2,
  numberOfParallelActivities: 2
}

Y con esto ya tienes un ejemplo funcional de los workflows.

Nota:

En estos momentos estoy pasandome a Podman, ya que Docker tiene unos puntos de licenciamiento que, aunque la gran mayoria no los supera, es mejor ir pesando en un alternativa.

Podman me lo puso sobre aviso un buen amigo y grandísimo profesional. Y fue el con quien empezamos el debate sobre los temas de licencia.