Liens sous conditions dans le modeler

Bonjour,

Nous générons par code un modèle qui affiche les applications liées à une application source par des flux. L’action est configurée sur l’application source.
Cela fonctionne mais comme l’objet source et cible sont tous deux des applications, les flux entre les applications cible s’affichent aussi, ce que nous ne souhaitons pas car ça rend la lecture du diagramme impossible.

J’ai fait un schéma rapide car je ne peux pas donner le modèle en question pour des raisons de confidentialité

Y a-t-il un moyen de ne pas afficher les flux entre les applications cible ?

Mon lien est configuré ainsi

Et l’objet Application

Version=4.0.P24c
BuiltOn=2020-09-24 17:47 (revision 831ff58c51f96cdc2244eca901e6286c2d156ce0)

Merci d’avance pour votre aide !
Emmanuelle

Bonjour,

Bizarre comme besoin, car ne pas afficher les liens entre A et B serait une anomalie, dans le modèle rien ne dit qui est la source.

Dans la mesure où le modèle est un SVG, on peut tout y faire par code front via hook sur le ModelTemplate.

onDrawLink reçoit les information du lien avant affichage via un callback pour l’afficher.
Il suffit de ne pas l’appeler sous certaines conditions. Mettez un debugger pour pouvoir regarder sur le navigateur ce que contient link. Il faudra surement tester le nom de son template si votre modèle à plusieurs type de liens :

// Modeler extension (SVG)
Simplicite.Diagram.ModelHooks.MyModel = {

onDrawLink: function(link, display) {
	debugger
	if (link.data && link.data.myfield != "???")
		display();
	else
		console.log("hidden link");
}
};

MyModel à remplacer avec le nom de votre template de modèle, et le test à adapter à votre besoin.

1 Like

Merci pour cette réponse rapide, je vais essayer
S’il y a un moyen de différencier Application source de cible dans le modèle ça m’interesse, mais j’ai l’impression que le ModelLink se configure sur l’objet métier et non sur l’objet template donc je ne vois pas comment ne le configurer que sur mon Application source ?

Pour différencier les 2 notions source/cible :

Il faudrait utiliser 2 objets logiques différents : créer des héritiers AppSource et AppTarget de App.
Et créer le modèle utilisant 2 nodes d’objet distinct + 1 Link.

Et penser à leur ajouter le hook getTargetObject pour ouvrir le formulaire de l’objet App en cas de double click.

1 Like