Mise à jour des cycles de vie


Cette page ne doit être appliquée que si le script vous demande de passer la migration manuelle code.20230901.Workflow-Editor

Si vous arrivez sur cette page, c'est qu'il y a potentiellement des modifications à faire sur la déclaration des fonctions et conditions de cycle de vie et dans les classes de ces fonctions et conditions.

Modification des déclarations

Dans les fichiers plugin.xml de votre projet, recherchez les occurrences de Function et Condition.

Si ces occurrences concernent bien des fonctions ou conditions de cycle de vie et qu'elles sont déclarées en tant que composant (balise <component>), il est alors nécessaire de modifier cette déclaration.

Le composant se situe dans une feature.
Soit cette feature a déjà une balise <extensions> et dans ce cas vous vous placez directement entre la balise ouvrante et fermante.
Soit la feature n'en contient pas et vous créez votre propre balise <extensions>.

Créez alors une extension reprenant les attributs id et class de votre composant, et mettez lui comme role :

  • org.ametys.plugins.workflow.EnhancedFunctionExtensionPoint si c'est une fonction
  • org.ametys.plugins.workflow.EnhancedConditionExtensionPoint si c'est une condition

Ensuite, supprimez le composant. Si la balise mère <components> est vide, supprimez la également.

Ainsi :

<feature name="workflow.addons">
    <components>
       <component role="my.condition"
                  class="my.package.MyCondition"
                  id="my.condition.id"/>
       <component role="my.function"
                  class="my.package.MyFunction"
                  id="my.function.id"/>
    </components>
</feature>

Devient :

<feature name="workflow.addons">
    <extensions>
      <extension point="org.ametys.plugins.workflow.EnhancedConditionExtensionPoint"
                  class="my.package.MyCondition"
                  id="my.condition.id"/>
      <extension point="org.ametys.plugins.workflow.EnhancedFunctionExtensionPoint"
                  class="my.package.MyFunction"
                  id="my.function.id"/>
    </extensions>
</feature>

Implémentation des classes

Les composants précédemment transformés en extensions ont des classes associées (attribut class).

Soit la classe correspondante implémente déjà, directement ou par héritage, EnhancedFunction pour une fonction ou EnhancedCondition pour une condition, dans ce cas, il faut juste contrôle que la méthode getLabel() renvoie bien un libellé correspondant à la fonction ou condition et qu'il ne sera pas en double avec une autre fonction ou condition.

Soit la classe correspondante n'implémente pas, ni directement, ni par héritage, EnhancedFunction pour une fonction ou EnhancedCondition pour une condition, dans ce cas, les classes doivent en hériter et ne doivent plus hériter de FunctionProvider pour une fonction ou Condition pour une condition.
Il est alors nécessaire d'implémenter la méthode getLabel() qui renvoit le libellé de la condition ou fonction de workflow notamment disponible dans la visualisation du cycle de vie.

Les classes FunctionProvider et Condition ne doivent plus être implémentées directement. Ce sont les classes EnhancedFunction et EnhancedCondition qui les implémente.

La méthode getLabel() peut renvoyer null si on ne veut pas de libellé pour cette condition ou fonction.

 

Retour en haut