Les processus dans Oro

Qu’est ce qu’un processus dans Oro ?

Les Processes permettent d’effectuer des tâches automatique lorsqu’une entité du système est créé, modifiée ou supprimée.

Doc. officielle : https://doc.oroinc.com/backend/entities-data-management/processes/

Les processus offrent la possibilité d’automatiser les tâches liées à la gestion des entités. Ils utilisent les principaux événements de doctrine pour exécuter les tâches décrites au bon moment. Chaque processus peut être exécuté immédiatement ou après un délai. Les processus utilisent le composant OroMessageQueue et le bundle pour offrir la possibilité d’une exécution retardée. (traduit depuis Oro)

Exemple d’utilisation : lorsqu’une commande est créé (l’entité \Order\Bundle\OrderBundle\Entity\Order) celle-ci est envoyé à un ERP.

Oro Processess

  • Bundle OroWorkflowBundle
  • Fonctionnalité allégée par rapport aux Workflows
  • Repose sur les entités de l’ORM de Doctrine et ses événements + Components d’OroPlatform
  • Définit dans un fichier <MyBundle>/Resources/config/oro/processes.yml

Avantages / inconvénients

Les plus :

  • facile à mettre en place et à comprendre
  • pour des tâches assez simple
  • peu, voir pas de code nécessaire

Les moins :

  • compliqué à débugger : création d’un job, puis placement de breakpoints dans les actions ou conditions correspondantes

Format du fichier Processes.yml

Constituté de 2 sections principales :

  • définition : label, actif ou non, préconditions, actions
  • trigger (le déclencheur) : par le bias d’un cron, via doctrine persistance (create, update, delete), avec retard ou immédiatement, dans le messaque queue ou non

Exemple

Dans le bundle Order : https://github.com/oroinc/orocommerce/blob/master/src/Oro/Bundle/OrderBundle/Resources/config/oro/processes.yml

Commandes

Pour charger la configuration des processus

Commande à éxécuter dès qu’on modifie un fichier processess.yml

bin/console oro:process:configuration:load

This command loads processes configuration from .yml configuration files to the database. It is used during application installation and update. The command has two optional options:

–directories - this option specifies directories used to find configuration files (multiple values allowed)

–definitions - this option specifies names of the process definitions that should be loaded (multiple values allowed)

Pour débugger les actions et conditions

bin/console oro:debug:action : Commande pour débugger les différentes actions et les paramètres à utiliser, fournit la liste des actions disponibles

bin/console oro:debug:condition : Commande pour débugger les différentes conditions, fournit la liste des conditions disponibles

Doc. officielle : https://doc.oroinc.com/backend/entities-data-management/actions/commands/

  • Actions : tag “name: oro_action.action”
  • Conditions : tag “name: oro_condition.condition”

Note : également présent dans les Workflows

Détails et débug

Différences entre $ & $.

  • $= Entité en cours

Ex: $ = \Order\Bundle\OrderBundle\Entity\Order

  • $.= ProcessData = données contextuelles du process en cours

Comment débugger ?

  • Activé xdebug
  • Créer un job dans la table oro_process_job
  • Chercher l’action ou la condition à débugger (cf commandes en fin de présentation)
  • Lancer bin/console oro:process:handle-trigger --id=<ID> --name=<PROCESS_NAME>

Source : Présentation effectuée par Sylvain Rayé, Diglin