veilletech.fr
15 oct. Feed du jour
#09 SYMFONY Article

Symfony 8.2 : des workflows déclarés par attributs

La configuration d'un workflow vit enfin à côté de ses transitions.

Symfony 8.2 permet de définir un workflow ou une machine à états avec des attributs PHP : #[AsWorkflow] sur une classe de service, #[Transition] sur des constantes, #[Place] sur les cas d'une énumération. La classe est un service ordinaire, qui porte aussi ses écouteurs. Toutes les options de la configuration restent disponibles.

2 min de lectureintermédiairevidéo 1:14
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Comment ça se déclare
  3. Énumérations et écouteurs
  4. À retenir

Ce qui se passe

Le composant Workflow de Symfony modélise le cycle de vie d'un objet en workflow ou en machine à états. On le définissait jusqu'ici en YAML ou en PHP, dans un fichier de configuration. Symfony 8.2 le déclare par attributs PHP, avec ses transitions et ses écouteurs (contribution de Grégoire Pineau). C'est une nouveauté de la 8.2, absente de la 8.1.9 publiée le même jour.

Comment ça se déclare

Énumérations et écouteurs

from, to et initialMarking acceptent aussi les cas d'une énumération adossée à des chaînes ; #[Place] sur ces cas leur ajoute des métadonnées. Avec places: TaskStatus::class, chaque cas devient une place, et Symfony lève une erreur si le workflow en utilise une qui n'en est pas un.

La classe est un service ordinaire : elle injecte ses dépendances et porte ses écouteurs, et l'argument workflow d'attributs comme #[AsGuardListener] y est facultatif. Toutes les options de configuration restent disponibles : expressions de garde, métadonnées, arcs pondérés, stockages de marquage personnalisés, piste d'audit.

Source : New in Symfony 8.2: Attribute-Based Workflows, blog Symfony, 14 octobre 2026.