J’ai crée un business process qui “découpe” le formulaire de création de mon objet, pour le présenter écran par écran à l’utilisateur. Ainsi l’utilisateur est en capacité de créer une instance de cet objet de manière assez simple. Il s’agit d’un premier écran ‘create’ puis d’une succession d’écran ‘select unique’ où l’utilisateur vient associer des valeurs présentes dans d’autres tables à l’instance qu’il est en train de créer.
Or dès que j’arrive à la fin de mon business process et que je vais voir la table de mon objet que je souhaite instancier, celle-ci contient bien une nouvelle ligne, mais dont tous les champs que l’utilisateur a sélectionné sont vide.
Dans les logs je retrouve ce message ci-dessous (je ne sais pas si c’est cela qui cause la non sauvegarde de ces champs).
Afin de permettre une compréhension détaillée de votre contexte, la description fournie ne suffit malheureusement pas. Merci de fournir a minima les informations suivantes:
Oui merci. J’ai regardé ce problème avec un collègue et effectivement il ma manquait cette donnée d’activité sur l’activité End. On a donc réussi à faire disparaître ce message d’erreur dans les logs. En revanche, le record qui se crée à la fin de l’activité est toujours vide en base de données. On a été plusieurs à se pencher sur ce problème mais on n’a pas trouvé pourquoi.
Dans l’activité CEVAL-EVAL il faut paramétrer la valeur des clés étrangères (qualityEvaluation_QualityNitg_id, …etc.) avec les row_id sélectionnés dans les étapes précédentes.
Comme sur l’exemple de la Démo, l’activité de création de la commande OrderCreate récupère le clientId sélectionné à l’étape ORDC-100 et le productId sélectionné à l’étape ORDC-210.
Vous devez paramétrer quelque chose comme cela.
Je n’ai pas pu importer les xmls fournis car il manque les Field . J’ai donc reconstitué votre modèle.
Donc à adapter avec les bons noms de champs dans l’image ci-dessous :
Le paramétrage suffit dans votre cas. Il n’est pas nécessaire d’utiliser les hooks preLock/postLock. Ces hooks sont appelés avant et après que l’activité soit affichée, validée.
Autre remarque vous devez initialiser la valeur de la clé fonctionnelle obligatoire de qualityEvaluation avant le validate() .
@Override
public List<String> preValidate() {
List<String> msgs = new ArrayList<>();
if (isNew() || isCopied())
setFieldValue("qualityEvaluationId", "<N°TEMP>");
return msgs;
}
Nous conseillons aux utilisateurs de marquer comme “solution” la réponse résolvant leur problématique pour permettre au support de mieux suivre les sujets non résolus, et à la communauté de trouver plus facilement la bonne réponse.