Merci beaucoup pour votre réponse j’ai pu créer un processus métier qui convenait à mes attentes.
Mon processus métier a pour objectif de créer une commande. Pour cela, il y a une étape de sélection d’un ou plusieurs produits, puis une étape de sélection d’un client. Pour les client c’est facile car l’objet commande contient la clé étrangère des clients mais pour les produits l’objet commande n’a pas la référence car la liaison est 1-n. Mon activité create-commande ressemble donc a quelque chose comme ça:
Cependant j’ai un problème. Lorsque je teste mon processus métier, j’arrive a selectionner des produits, selectionner un client, arriver à la page de formulaire de commande ou je rentre l’id de la commande. Et lorsque que je valide et que je vais sur ma convention, je vois que ma convention a été crée avec le bon client, mais l’onglet produit est vide bien que j’ai selectionné plusieurs produits durant le processus. Je pense que cela a un rapport avec la liaison 1-n et je voulais savoir si il y avait moyen de rajouter des produits au travers d’un processus sans devoir changer ma liaison.
Êtes-vous sûr qu’il ne s’agit pas d’une relation N:N entre votre l’objet commande et l’objet produit ?
Auquel cas, vous devez passer par le hook postValidate du processus pour implémenter votre besoin et créer l’objet qui lie un produit à une commande. S’il ne s’agit pas d’une N:N, il faudra tout de même passer ce hook, pour mettre à jour les produits sélectionnés dans le process.
Exemple :
@Override
public void postValidate(ActivityFile context) {
String step = context.getActivity().getStep();
if ("ORDER-CREATE".equals(step)) { // étape de sélection des produits
// récupérer les lignes produit sélectionnées
String[] selectedIds = getContext(getActivity("PRD-SELECT")).getDataFile("Field", "row_id" , true).getValues();
String orderId = context.getDataValue("Field", "row_id");
for (String prdId : selectedIds) {
// Object N:N
ObjectDB nn = getGrant().getTmpObject("OrderPrd");
try {
nn.getTool().getForCreate();
nn.setFieldValue("orderId", orderId);
nn.setFieldValue("productId", prdId);
nn.getTool().validateAndCreate();
} catch (GetException | ValidateException | SaveException e) {
AppLog.error(e, getGrant());
}
}
}
}