Générer un diagramme / modèle métier par code côté front avec des objets sélectionnés par l'utilisateur

En fait j’ai l’impression que le fetch n’est pas prévu pour ramener les objets du côté N de la relation 1,N. L’objet source doit porter la clé étrangère vers l’objet cible et pas l’inverse. Chez moi les FLux ont une clé étrangère vers l’objet Application, je peux fetcher les flux liés à l’application mais pas l"inverse.

Il y a le même problème dans le modèle de démo j’ai l’impression, on ne peut pas ramener les Suppliers d’un Product. Pourtant le template link existe bien.

Est-ce que c’est voulu, ou est-ce que j’ai une erreur dans ma configuration ?

[EDIT]

J’ai progressé un peu avec cette config qui me ramène bien les Applications.

Mais le résultat est un peu bizarre quand j’ai une Application émettrice et une réceptrice, sur un des liens il me manque la ligne et sur l’autre, le label :cry:

Oui le fetch ramène les N objets liés dans la relation 0,N via la foreign-key.
Dans votre besoin, il est bien plus rapide de faire 1 seul search ajax des Flux lié à A et pour chacun insérer 2 objets le flux et l’application ciblée. Plutôt que de faire N search pour chaque flux dans un fetch en boucle.

Donc quelque chose comme :

var nodes = [];
var o = app.getBusinessObject("RciFlow");
o.search(function(list) {
  $(list).each(function(i,item) {
      nodes.push({
		object: "RciApplication",
		id: item.rciFloAppReceptId,  // application B
		template: "???", // RciApplication template name
		x: i*50 + 100, 
		y: i*30 + 30   
      });
      nodes.push({
		object: "RciFlow",
		id: item.row_id, 
		template: "???", // RciFlow template name
		x: i*50 + 30, 
		y: i*30 + 30
      });
   }
},{
  rciFlowAppSenderId: row_id // application A
}

Pour le reste, on fera évoluer le fetch avec une profondeur de recherche dans les 2 sens.

De plus dans votre cas puisque c’est une vue autour de A, vous pouvez placer les flux et les applications B autour de A (avec un peu de trigo élémentaire pour des x,y en cercle).

1 Like

Merci beaucoup c’est parfait
Je vais m’essayer à la trigo élémentaire

Bonjour,
Est-il possible via l’instruction $ui.diagram.create d’attribuer un module donné ? Dans mon implémentation les modèles sont créés avec un module ID vide et ne sont donc pas exportés dans les patchs.

Merci d’avance !
Emmanuelle

Exact, on va ajouter le paramètre module dans les options du helper $ui.diagram.create

L’évolution sera poussée aux prochains build V4 et V5, la création pourra prendre en paramètre le module (ou son Id) :

$ui.diagram.create("DemoModel", name, {
	nodes: [ /* nodes to insert */ ], 
	module: "Application" // module name or the module Id "123"
},
function(diagram) { /* display */ }
1 Like