Verwenden Sie eine Instanz der Klasse ServerSideLayout, um das Graphenlayout auf der Serverseite auszuführen, wie im folgenden Mustercode veranschaulicht wird:
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); graph.setNodeLayout(treeLayout); var serverLayout = new ibm_ilog.graphlayout.ServerSideLayout(graph, url); var deferred = serverLayout.layout();
Der Konstruktor für die ServerSideLayout-Instanz hat zwei Argumente.
Übergeben Sie den Namen des Graphen, den Sie anlegen möchten, im Argument
graph und den URL für den Service für serverseitiges Graphenlayout im
Argument url.
Wenn Sie die Methode layout in der
ServerSideLayout-Instanz aufrufen, wird das Layout asynchron auf dem Server ausgeführt.
Hinweis
Wie bei allen Multithreadanwendungen müssen Sie Ihre Anwendung
für die asynchrone Ausführung des Graphenlayouts entwerfen. Ihre Anwendung darf den Graphen nicht ändern, während das Layout ausgeführt wird.
Andernfalls werden alle Änderungen, die auf der Clientseite vorgenommen werden, bei der Ausführung des Layouts überschrieben.
Die Methode layout kehrt sofort zum aktuellen Thread zurück, ohne auf den Abschluss der Graphenlayoutausführung zu warten.
Die Benutzerschnittstelle des Browsers bleibt aktiv, und Ihre Anwendung kann mit anderen Verarbeitungsschritten fortfahren.
Nach Abschluss der Graphenlayoutausführung werden die neuen Knotenpositionen und Linkformen automatisch auf den Graphen angewendet.
Zum Konfigurieren von Knotenlayout- und Linklayoutalgorithmen verwenden Sie dieselben Methoden
(Graph.setNodeLayout und Graph.setLinkLayout), unabhängig davon, ob Sie das Graphenlayout
von der Client- oder von der Serverseite aus ausführen.
Verwenden Sie jedoch keine Aufrufe von Graph.performGraphLayout oder Diagram.performGraphLayout für die Ausführung
des Graphenlayouts auf der Serverseite. Diese Aufrufe sind nur für das clientseitige Graphenlayout bestimmt.
Callbacks hinzufügen
Die Methode layout gibt ein
dojo.Deferred-Objekt zurück, das verwendet werden kann, um Sie über den Abschluss des Layouts
zu benachrichtigen.
Rufen Sie die Methode addCallback des
dojo.Deferred-Objekts auf, um die Benachrichtigung anzugeben.
Im folgenden Beispiel wird eine Schaltfläche während der Ausführung des Layouts inaktiviert und nach Abschluss des Layouts wieder aktiviert.
dijit.byId("layoutButton").attr("disabled", true); var deferred = serverLayout.layout(); deferred.addCallback(function(){ dijit.byId("layoutButton").attr("disabled", false); });
Sie können das dojo.Deferred-Objekt auch verwenden, um sich über Fehler während der Ausführung
des Graphenlayouts benachrichtigen zu lassen.
Rufen Sie die Methode addErrback für die Benachrichtigung über Layoutfehler, wie im folgenden Beispiel gezeigt, auf:
deferred.addErrback(function(e){ alert(e); dijit.byId("layoutButton").attr("disabled", false); });
Ausführung des serverseitigen Graphenlayouts stoppen
Sie können die Ausführung des serverseitigen Graphenlayouts stoppen, indem Sie die Methode
stop des ServerSideLayout-Objekts aufrufen.
Damit wird die Serveranforderung abgebrochen, ohne den Graphen auf der Clientseite zu ändern:
serverLayout.stop();