Création d'un changement statut (état) manuellement

Bonjour,

J’ai créé un objet WrkPerson qui hérite de User, ensuite plusieurs objets ( WrkCandidat, WrkVolunteer, WrkRecruiter qui héritent de WrkPerson comme suivant :

Partons du fait qu’on peut pas créer + que 1 diagramme d’état par objet.
Les Objets qui héritent de WrkPerson ont hérités à leurs tours du diagramme d’état de l’utilisateur ( User). J’ai donc masqué les différents états du menu ( state puis Direct access via menu à no ) mais cela masque les états du menu de l’objet user aussi et c’est normal car je l’applique directement sur l’état qui est lié au diagramme d’état de l’utilisateur. Ce que je voudrais principalement c’est le masquer pour mes objets ( petits fils de User) et le garder pour l’objet User.

Pour chaque objet héritant de l’objet WrkPerson ( par exemple WrkCandidat) il existe un champs enum qui définit son statut. Je l’ai donc affiché dans la liste du menu comme étant les nouveaux statut du Candidat( on ne peut les afficher que si on masque tous les états du User sinon ça ne s’affiche pas) et j’ai développé des fonctions liées à des actions pour faire le changement de valeurs des enums. Voici les soucis que je rencontre :

1- Le bouton show all du menu t’affiche normalement toutes les lignes, il fonctionne sauf si on passe sur l’un des statut et qu’on reclique sur show all il t’affiche la liste des lignes filtrées sur le dernier statut que tu as visité:


J’ai cliqué sur le statut init qui est vide puis show all il m’affiche par la suite une liste vide.

si je passe par recruited, le bouton show all m’affiche la liste de recruited et non pas la liste entière. En gros, il fonctionne au début mais une fois que tu passes par un autre statut il ne fait qu’afficher la dernière liste qui a été affiché ou il n’affiche plus rien et on reste sur la même liste.

2- Quand je mets mon champs enum à read-only pour qu’il ne soit plus modifiable de base, ma liste de statut disparaît:

Finalement, les besoins sont les suivants:

  • Pour un objet B, possibilité d’avoir un diagramme d’état indépendant du diagramme d’état de l’objet A de qui hérite mon objet B.
  • Pouvoir Afficher mes différentes valeurs d’un champs énums comme étant des statut sur le menu en liste même si le champs est en lecture seul.
  • Le bouton show all doit m’afficher toutes les données.

Merci d’avance

Un objet dans Simplicité ne peut avoir qu’un seul cycle de vie.
Si vous héritez du User vous devez respecter ses états et ne pas en changer le comportement, ou en créer un autre.

Par contre vous pouvez séparer les cycles de vie en parlant de 2 objets bien différents d’un point de vue logique et qui tapent sur la même table :

  • n’utiliser User (ou un autre héritier) que pour l’administration des droits = création, activation, mot de passe, responsabilités…

  • et créer votre propre objet métier WrkPerson uniquement en mise à jour qui n’hérite pas de User dans sa définition mais s’appuie uniquement sur la table m_user (et réutilise certains champs + d’autres bien distinct en terme de nommages physiques), et y mettre un autre modèle d’états puisqu’il n’hérite de rien. Attention de n’y afficher que vos Users métier (en général d’un module particulier), et ne jamais afficher les users techniques (designer, public et system) ou y faire des choses dédiées aux droits.

Une autre possibilité moins dangereuse, serait de changer l’héritage de WrkPerson par une relation 0,1 avec le User. WrkPerson pourrait aussi avoir son propre cycle de vie.

Et donc dans les 2 cas de retomber dans les fonctionnalités natives de la plateforme.

Sur vos autres points :

  • Effectivement le “Show all” n’effaçait pas le filtre dans ce cas.
    Désormais il effacera tous les filtres sur l’objet (car en fait retirer que le filtre sur l’enum n’est pas forcement suffisant si on en a ajouté), mais il gardera les tris et les group-by éventuels.

  • La UI actuelle n’affiche pas à la fois les status et les enum dans le sous-menu d’un objet, dans ce cas il faudra faire une évolution pour créer des sous-menus par attribut en 5.3.

Merci pour ton retour François. J’ai opté finalement pour un changement de relation entre User et Person pour profiter de l’indépendance du cycle de vie des autres profils liés à User à travers Person.

Ok très bien,

L’évolution de pouvoir coupler des statuts et des enum simples d’un même objet dans le menu a été faite en 5.3.

Par exemple sur la démo, si on passe la champ Type en accès par menu :

image

On obtient

Ah c’est top ça. Mais est ce qu’on a moyen de masquer les états pour cet objet ( qui doit hériter surement de User ) par exemple tout en le laissant visible sur User ?

Dans le postLoad de l’objet fils, il suffit de retirer la propriété positionnée par l’objet parent.

this.setMenuStates(false);

D’une manière générale tout le paramétrage d’un objet métier est monté en mémoire dans l’instance, et il existe toujours un accesseurs pour le modifier au runtime.

C’est parfait. Merci.