Bonjour,
A date, la plateforme ne différencie pas la création via la liste principale de l’objet et la création via un process, i.e. il s’agit de la même instance, on ne peut donc pas conditionner l’implémentation de l’initCreate au nom d’instance.
Il faut donc implémenter un pattern qui permet de passer une valeur saisie/sélectionnée au sein du process au hook initCreate de l’objet.
On peut utiliser les paramètres stockés au niveau Grant : getGrant().setParameter("MY_PARAM", "param_value"(setParameter).
En prenant le cas du process implémenté dans le module Demo (téléchargeable depuis l’App store de votre instance)
Dans DemoOrderCreate.java :
@Override
public void postValidate(ActivityFile context) {
String step = context.getActivity().getStep();
// étape de sélection du fournisseur
if ("ORDC-200".equals(step)) {
String rowId = context.getDataValue("Field", "row_id");
// valorisation d'un paramètre custom
getGrant().setParameter("wkf_sup_id", rowId);
}
}
Dans DemoProduct.java :
@Override
public void initCreate() {
// récupération du param setté dans le process
String wkfSupId = getGrant().getParameter("wkf_sup_id");
if (!"".equals(wkfSupId)) {
setFieldValue("demoPrdSupId", wkfSupId);
}
}
Dans votre cas, vous pouvez appliquer la même logique à l’objet TPL avec une valorisation du paramètre dans l’étape de sélection du Site.
Il faut penser à également implémenter dans votre process les hooks abandon / cancel / terminate : Businessworkflow code hooks | Simplicité Documentation pour supprimer / setter à vide le paramètre custom.
PS : votre instance n’est pas à jour avec la dernière release de la 5.3, il faut impérativement vous maintenir à jour pour qu’on puisse vous aider au mieux.