Créer 2 actions distinctes sur 2 transitions de mêmes états A=>B

4.0
Tags: #<Tag:0x00007f361c8d6978>
Créer 2 actions distinctes sur 2 transitions de mêmes états A=>B
0.0 0

#1

Bonjour,

Ci-dessous une suspicion d’anomalie :
Paramétrage de 2 transitions du même état initial vers le même état final (A vers B) avec 2 actions différentes (Les libellés d’action sont différents)
La plateforme restitue deux fois le même bouton d’action sur les formulaires.

Cordialement,


#2

Cela se reproduit sur les 2 IHM car étrangement ce cas n’a jamais été prévu.

L’unicité d’une transition est donnée par l’état initial + final, il va falloir revoir le moteur pour gérer plusieurs transitions possibles entre 2 mêmes états A=>B (mais avec des actions différentes).
Je regarde si c’est simple ou pas à faire.


#3

On va revoir la moteur pour :

  • afficher les 2 actions distinctes
  • il va y avoir une ambiguïté dans la liste de valeur du statut car on va avoir 2 fois le même état “B”, il faut donc aussi mettre le libellé de l’action (si pas d’action, on mettra le nom de la transition avec un warning pour le designer)
  • de même lors du “save” il faut revoir le moteur pour qu’il déclenche la bonne méthode callback et/ou notification, à date il prend la première transition A=>B trouvée en se basant uniquement sur old/new value du statut

#4

Ce sera livré dans la prochaine release. Il y aura bien 2 boutons différents.
Attention la liste de valeurs du statut contiendra aussi 2 fois l’état “B” avec le libellé du bouton pour les distinguer.

  • Client : la transition à déclencher est stockée dans la propriété “data-tran” des 2 <option value="B"> pour les différencier
  • Serveur : on peut utiliser obj.getCurrentTransition() dans les hooks pour savoir quelle est la transition en cours (car les états oldvalue=A et value=B ne suffisent plus à déterminer l’action ou le callback)
MyObject.postSave = function() {
   var tran = this.getCurrentTransition();
   if (tran && tran.getName()=="Transition-A-B-n1") {
      // do something
   }
   else if (tran && tran.getName()=="Transition-A-B-n2") {
      // do something else
   }
}

A tester sur votre projet.


#5

Super merci, le sujet peut être clos