Bonjour,
Lors de l’exécution d’une activité d’un processus, est-il possible d’afficher un message à l’utilisateur du style Message.formatInfo ou Message.formatError ?
1- Je souhaite afficher une information en entrée d’une activité (dans l’init ?) et ensuite continuer le processus normalement.
2- Et aussi un message d’erreur dans le postValidate de l’activité qui empêche l’utilisateur à aller plus loin.
Pourriez-vous m’aider en me disant où et comment je pourrais faire ceci ?
Les messages d’entête et l’aide utilisateur se paramètrent dans chaque traduction de l’activité.
Pour bloquer la validation d’une activité, il faut utiliser le hook preValidate qui retourne un Message pouvant contenir une erreur, car le postValidate ne renvoit rien et permet de faire des actions en cascade avant de verrouiller l’activité suivante, c’est un peu comme un postSave sur un objet.
Le hook preValidate répond parfaitement à mon besoin pour gérer les messages d’erreurs.
Par contre, pour les messages d’informations (sans impact sur le déroulement du processus), j’ai besoin de faire qq chose de personnalisable en fonction d’un paramètre.
Je m’explique, j’ai une activité qui permet de créer une adresse. Cette activité est appelée plusieurs fois durant le process : pour un locataire, pour un tiers… (l’information se trouve dans un paramètre).
Or à chaque fois ce sont les mêmes en-têtes et aide qui s’affichent. Ce que je voudrais c’est à l’entrée de cette activité, que j’affiche une information à l’utilisateur pour lui dire de quelle adresse s’agit-il (locataire, tiers…)
Peut-on modifier dynamiquement les messages d’entête et l’aide utilisateur ?
Je me permets de déterrer ce post car je voudrais savoir s’il était possible d’afficher les messages en provenance du postValidate de l’objet qu’on cherche à créer via un proccess.
Je m’explique, quand je crée un bien en passant par le formulaire, à la fin j’obtiens à l’écran les messages générés dans le postValidate de l’objet :
Dernière tentative si possible avant de clore le sujet :
Le but était d’afficher ses warnings dans l’écran final (Bien) une fois que le process est fini afin d’attirer l’attention de l’utilisateur sur tel ou tel info. Exemple, s’il n’a pas saisit « le montant des droit de mutation » par oublie ou volontairement, on l’informe que ce champ a été remplie automatiquement et qu’il faudra le vérifier,…
Donc affiché l’info en continue (dans le ? ou TEXT) n’a pas le même effet escompté, car peut-être qu’il ne cliquera pas sur ce « ? » et du coup ne saura pas qu’un champ a été alimenté par défaut.
Dans ce process de création de bien, la dernière activité est l’ouverture du formulaire du bien qu’on vienne de créer :
Je comprends qu’afficher un popup une fois l’activité passée n’apportera rien à l’utilisateur, mais ne peut-on pas véhiculer/sauvegarder ces warning rencontrées/collectées au cours du process et les afficher uniquement sur le formulaire à la fin ? ceci permettra à l’utilisateur de voir les warnings qui lui sont destinés.
Ok je comprends mieux le besoin. Les processus et l’accès par menu n’utilisent pas les mêmes instances de cet objet, donc on ne peut pas être statefull sur ce passage de contexte.
Il faudra donc positionner vos informations de contexte dans les droits de session. Dans un hook d’activité du Processus métier, il faut armer des variables :
@Override
public void postValidate(ActivityFile context) {
String step = context.getActivity().getStep();
if ("MY-ACTIVITY".equals(step)) {
if (...something...)
getGrant().setParameter("MY_PROCESS_PARAM1", "MY_WARNING_1");
}
}
Puis les détecter à l’ouverture du formulaire après le redirect de fin de procesus, pour les repasser une seule fois en contexte du formulaire de mise à jour de l’objet métier :
@Override
public void initUpdate() {
Grant g = getGrant();
String param1 = g.getParameter("MY_PROCESS_PARAM1");
if (param1!=null) {
getContext().addMessage(this, param1 + "#WARNING#myfield1", g);
g.removeParameter("MY_PROCESS_PARAM1"); // une seule fois
}
}