Mais si j’affiche tour à tour plusieurs de ces Flow (je clique sur l’un, puis reviens sur la liste, puis clique sur un autre … une dizaine de fois environ) le lien virtuel n’est plus appelé. L’onglet Subflows data m’affiche la totalité des données et je vois dans les log SQL que la requête du lien virtuel n’apparaît plus.
Il faut que je vide le cache pour que le calcul se remette en place.
Voici la requête du lien
t.row_id in (select data.rci_fludata_data_id from rci_flow parent
left join rci_flow child on (parent.row_id = child.rci_flow_parent_flow_id)
left join rci_flo_dat data on (data.rci_flodat_flo_id= child.row_id)
where parent.row_id = [row_id])
Aucune raison que la search-spec disparaisse toute seule. Il doit y avoir un mode opératoire qui permet de reproduire votre cas. Avez vous du code qui accède à la foreign-key virtuelle ? qui vide le cache partiel de l’objet ?
Vous pouvez forcer le filtre du lien sur votre champ virtuel à chaque recherche par code du style :
@Override
public void preSearch() {
if (getParentObject()!=null
&& getParentObject().getName().equals("Flow...")
&& !Tool.isEmpty(getParentObject().getRowId())) {
getField("virtualFK").setRefSearchSpec(
"t.row_id in ( ...where parent.row_id=" + getParentObject().getRowId() + ")");
}
}
Merci de confirmer que le contournement fonctionne par code.
Par contre cela n’explique pas la cause de la perte de cette search-spec sur la FK.
Simplicité accède au setRefSearchSpec dans 2 cas après avoir chargé la définition de l’objet :
lors d’un select pour retirer ce filtre temporairement du search, il le remet ensuite sur l’objet dans un block synchronised et finally, donc à priori pas de concurrence d’accès possible.
lors d’un init de l’objet en contexte de liste fille, sur le lien basé sur une FK row_metaobject_id (Field de type Object), donc rien à voir si votre relation est un lien virtuel (pas un Field de type Object).
Pour moi vous êtes dans un cas de concurrence d’accès 1).
Votre version date un peu, et je crois qu’un fix récent traitait d’un problème de concurrence d’accès sur les pillbox des listes filles, c’est peut être la même chose.