Affichage des notifications et messages d'erreurs dans un processus

Tags: #<Tag:0x00007f80f820d3e0>

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 ?

Merci d’avance.
Abed.

  • 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.

Merci françois.

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 ?

Toute définition est en mémoire, donc tout est surchargeable à la volée.
C’est tout l’intérêt de Simplicité.

Donc dans le postLock (verrouillage de l’activité avant affichage) il est possible de modifier la traduction, l’aide courte et l’aide longue.

context.getActivity().setShortHelp("Hello !")

Java doc :
https://www.simplicite.io/resources/4.0/javadoc/com/simplicite/bpm/Activity.html

Bonjour,

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 :

champs

Mais quand je crée le même bien en passant par un process de création du bien, à la fin du process je n’obtiens ces messages à l’écran.

Je voudrais donc savoir s’il était possible d’afficher ces messages à l’ouverture du formulaire du bien qui se fait dans le End de mon process.

Merci d’avance pour votre aide.

Abed.

Les erreurs (bloquantes) sont bien traitées par un processus qui reste sur le formulaire.

Là je pense que vous souhaitez afficher des warnings sur des champs dans un processus qui change de formulaire, ça me semble impossible.

Dans un formulaire les warnings sont affichés sur les champs (sur Enregistrer) ou dans un popup (sur le Enregistrer/Fermer sans bloquer la fermeture).

Dans un screen-flow, vos messages informatifs/d’attentions doivent donc plutôt :

  • être mis dans le formulaire directement via des TEXT traduits
  • et/ou dans l’aide du champ (bouton “?”)
  • et/ou sur le handler “change” ou “focus” du champ pour l’afficher en popup ou ajouter la div alert dynamiquement

car afficher un popup une fois l’activité passée n’apportera rien à l’utilisateur qui devra revenir en arrière.

Merci @françois pour votre retour.

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.

Encore merci d’avance.

Abed.

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
	}
}