Serverseitiges Graphenlayout über den Client aufrufen

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();