Création de plusieurs records à partir d'un business process

Version

v6.0.16

Description

Bonjour à tous,

Je travaille actuellement sur un processus métier qui permet de créer un enregistrement dans une table reliant plusieurs objets entre eux. Mon objectif est de pouvoir créer plusieurs enregistrements à partir de mon business process.

Pour expliquer plus clairement, j’ai ajouté une activité dans le processus métier qui permet de sélectionner plusieurs instances d’un autre objet. J’aimerais que cette sélection multiple génère autant d’enregistrements en base de données que d’instances sélectionnées. Ces records partageront les mêmes informations pour les activités de sélection unique.

Savez-vous comment je peux implémenter cela ?

(L’idée ici dans mon cas par exemple serait de pouvoir associer plusieurs Ressenti Client à un NITG).

Merci d’avance pour votre aide !

Bonjour Mathias,
Votre besoin est-il:

  • Modifier, de façon identique, les ressentis client sélectionnés.
  • Passer dans les étapes suivantes autant de fois que de ressentis client sélectionné.

Merci.
Candice

Bonjour Candice,

Oui passer autant de fois dans la dernière étape qui affiche le formulaire de création de la table évaluation qu’il y a de ressentis clients sélectionnés, afin d’associer en base de donnée le NITG sélectionné de manière unique avec tous les ressentis clients sélectionnés.

Bonjour Mathias,

Je reprends le sujet car c’est le même que celui du ticket Business Process qui crée un record vide avec un nouveau besoin.
Si je comprends bien tu veux que l’utilisateur sélectionne n ressenti, continue son processus pour sélection grade et phenomenon. Cette dernière étape génère les évaluations avec le même Nitg, grade, phénomenon.

Est ce bien cela ?
Est ce que l’utilisateur est censé modifier les données ? N’est il pas mieux de lui afficher la liste des évaluations générées ?

Merci pour tes précisions.

Bonjour Nathalie,

Merci pour ton aide

Oui c’est exactement ça. L’utilisateur n’est pas censé modifier les données. Effectivement, ce serait mieux de lui afficher directement la liste des évaluations générées, mais je ne sais pas comment faire.

Bonjour Mathias,

Il faut utiliser les hooks pre/postValidate du processus.

https://docs.simplicite.io/lesson/docs/core/businessworkflow-code-hooks#prepost-validate-hook

Dans le hook postValidate (après validation de l’activité Phenomenon créer les évaluations avec les ressentis sélectionnés

@Override
public void postValidate(ActivityFile context) {
		String step = context.getActivity().getStep();
	    
		if ("CEVAL-PHENOMENON".equals(step)) {
			DataFile dataRC = getContext(getActivity("CEVAL-RC")).getDataFile("Field", "row_id",false);
			String[] rcIds= dataRC.getValues();
			String ntgId = getContext(getActivity("CEVAL-NITG")).getDataValue("Field", "row_id");
			String grdId = getContext(getActivity("CEVAL-GRADE")).getDataValue("Field", "row_id");
			String phId = getContext(getActivity("CEVAL-PHENOMENON")).getDataValue("Field", "row_id");
			StringJoiner sj = new StringJoiner(",", "(", ")");
			for(String rcId : rcIds){
				sj.add(createEval(getGrant(),rcId, ntgId,grdId,phId));
			}
			result = sj.toString();
		}
	
	}

Dans le hook preValidate , modifier l’activité Forward Page en filtrant sur les row_ids des évaluations générées

@Override
public Message preValidate(ActivityFile context) {
		String step = context.getActivity().getStep();	    
		if ("CEVAL-END".equals(step)){
			context.setDataFile("Forward", "Page","[EXPR:HTMLTool.getListURL(\"qualityEvaluation\",  \"row_id=in "+result+"\")]");
		}
		return null;
}

Et dans ton cas le mieux est de filtrer sur qualityEvaluationId plutôt que row_id afin que l’utilisateur puisse supprimer manuellement le filtre dans la liste des évaluations.

Top merci beaucoup Nathalie,

Tout marche parfaitement, c’est exactement ce que le métier me demandait.

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.