Utilisez une instance de la classe ServerSideLayout pour exécuter l'agencement de graphe côté serveur, comme dans l'exemple de code suivant :
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); graph.setNodeLayout(treeLayout); var serverLayout = new ibm_ilog.graphlayout.ServerSideLayout(graph, url); var deferred = serverLayout.layout();
Le constructeur pour l'instance ServerSideLayout a deux arguments. Transmettez le nom du graphe à agencer dans l'argument graph et l'URL du service d'agencement de graphe côté serveur dans l'argument url.
Lorsque vous appelez la méthode layout sur l'instance
ServerSideLayout, l'agencement est exécuté en mode asynchrone sur le serveur.
Note
Comme dans toutes les applications à unités d'exécution multiples, vous devez concevoir votre application pour l'exécution d'agencement de graphe asynchrone. Votre application
ne doit pas modifier le graphe pendant l'exécution de l'agencement. Sinon, toutes les modifications effectuées côté client sont écrasées lorsque l'agencement est terminé.
La méthode layout renvoie immédiatement l'unité d'exécution en cours sans attendre la fin de l'exécution de l'agencement de graphe. L'interface utilisateur du navigateur reste active et votre application peut poursuivre les autres traitements. Lorsque l'exécution de l'agencement de graphe est terminée, les nouvelles positions de noeud et formes de lien sont appliquées automatiquement au graphe.
Utilisez les mêmes méthodes lorsque vous configurez des algorithmes d'agencement de noeuds et d'agencement de liens.
(Graph.setNodeLayout et Graph.setLinkLayout) selon que vous exécutiez l'agencement de graphe depuis le côté client ou serveur. Toutefois, n'utilisez pas des appels Graph.performGraphLayout ou Diagram.performGraphLayout pour exécuter un agencement de graphe côté serveur. Ces appels sont réservés à l'agencement de graphe côté client.
Ajout de rappels
La méthode layout renvoie un objet dojo.Deferred qui peut être utilisé pour vous avertir lorsque l'agencement est terminé. Appelez la méthode addCallback de l'objet dojo.Deferred pour fournir la notification. L'exemple suivant désactive un bouton lors de l'exécution de l'agencement, puis l'active lorsque l'agencement est terminé.
dijit.byId("layoutButton").attr("disabled", true); var deferred = serverLayout.layout(); deferred.addCallback(function(){ dijit.byId("layoutButton").attr("disabled", false); });
Vous pouvez également utiliser l'objet dojo.Deferred pour être averti si une erreur se produit lors de l'exécution de l'agencement de graphe. Appelez la méthode addErrback pour la notification d'erreur d'agencement comme dans l'exemple suivant :
deferred.addErrback(function(e){ alert(e); dijit.byId("layoutButton").attr("disabled", false); });
Arrêt de l'exécution d'un agencement de graphe côté serveur
Vous pouvez arrêter l'exécution d'un agencement de graphe côté serveur en appelant la méthode stop de l'objet ServerSideLayout.
Cela annule la demande du serveur sans modifier le graphe côté client.
serverLayout.stop();