Introducción al componente Workflow de Symfony

symfony_workflow.jpg
Solucionex
30
Oct 20

¿Que es el componente workflow?

 

Para comprender este componente primero tenemos que entender que una entidad puede pasar por diferentes estados a lo largo de un ciclo de vida.

Imaginemos una entidad llamada “Producto” para una tienda, este producto puede pasar por diferentes estados como por ejemplo:

  • enviado

  • entregado

  • cancelado (teniendo en cuenta que en este caso, podremos cancelarlo desde cualquiera de los estados anteriores)

 

El componente workflow se encarga de crear una coherencia entre estos estados, controlandolos y permitiéndonos crear una lógica en torno a los estados de esta entidad de manera limpia y ordenada. Es el mismo componente quien nos dejará o no manipular o ejecutar código a una entidad dependiendo del estado en el que se encuentre y al estado al que se quiere pasar.

 

Instalación y configuración

Para proceder con la instalación del componente Workflow, ejecutaremos el siguiente comando en la raíz de nuestro proyecto Symfony:

  • composer require symfony/workflow  (en caso de que tengamos un composer.phar en la raiz de nuestro proyecto, podremos usar también php composer.phar require symfony/workflow)

Esto generará el vendor y todas sus dependencias, nos incluirá el bundle en la lista de bundles y creará un fichero de configuración donde añadiremos todas nuestras entidades con sus respectivos estados y las transiciones por las que podrá pasar.

Este fichero se ubica en la ruta:

  • path_project/config/packages.workflow.yml

A continuación explicamos como configurar este fichero.

 

workflow.yml

 

Una vez configuremos los estados de nuestras entidades, podemos ejecutar el siguiente comando para asegurarnos de que está todo correcto:

 

  • symfony console workflow:dump nombre_entidad| dot -Tpng -o workflow.png


Esto nos genera un gráfico representando los estados de la entidad especificada en el comando:Gráfica estados



 

 Para este ejemplo he creado un servicio donde almacenar toda la lógica y tratamiento de la entidad. Explicamos como funciona:

 

ProductService

 

Con esta introducción explicamos el mayor uso del componente y una parte básica de el, más adelante entraremos en más detalle con los eventos que se pueden realizar con él, ya que el componente proporciona una serie de eventos para que podamos configurarlos.