Cómo llamar diseño de gráficos en el servidor desde el cliente

Utilice una instancia de la clase ServerSideLayout para ejecutar el diseño de gráficos en el servidor, como en el código de ejemplo siguiente:
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout();
graph.setNodeLayout(treeLayout);
var serverLayout = new ibm_ilog.graphlayout.ServerSideLayout(graph, url);
var deferred = serverLayout.layout();
El constructor de la instancia de ServerSideLayout tiene dos argumentos. Pásele el nombre del gráfico que desea diseñar en el argumento graph y el URL del servicio de diseño de gráficos en el servidor en el argumento url. Cuando se llama al método layout en la instancia de ServerSideLayout, el diseño se ejecuta de forma asíncrona en el servidor.
Nota
Al igual que en todas las aplicaciones de varias hebras, debe diseñar la aplicación de modo que ejecute el diseño de gráficos de forma asíncrona. La aplicación no debe modificar el gráfico mientras se está ejecutando el diseño. De lo contrario, cuando finalice la ejecución del diseño se sobrescribirán todos los cambios realizados en el cliente.
El método layout vuelve de inmediato a la hebra actual, sin esperar a que la ejecución del diseño del gráfico finalice. La interfaz de usuario del navegador permanece activa y la aplicación puede continuar con otro proceso. Cuando la ejecución del diseño del gráfico finaliza, las nuevas posiciones de los nodos y formas de los enlaces se aplican automáticamente al gráfico.
Cuando configure los algoritmos de diseño de nodos y enlaces, utilice los mismos métodos (Graph.setNodeLayout y Graph.setLinkLayout) tanto si ejecuta el diseño de gráficos en el cliente como si lo hace en el servidor. Sin embargo, no utilice las llamadas Graph.performGraphLayout o Diagram.performGraphLayout para ejecutar el diseño de gráficos en el servidor; sólo deben utilizarse para el diseño de gráficos en el cliente.

Añadir respuestas

El método layout devuelve un objeto dojo.Deferred que puede utilizarse para notificarle de que la ejecución del diseño ha finalizado. Llame al método addCallback del objeto dojo.Deferred para proporcionar el servicio de notificación. En el ejemplo siguiente se inhabilita un botón durante la ejecución del diseño y, cuando finaliza la ejecución del diseño, se vuelve a habilitar:
dijit.byId("layoutButton").attr("disabled", true);
var deferred = serverLayout.layout();
deferred.addCallback(function(){
   dijit.byId("layoutButton").attr("disabled", false); 
});
También puede utilizar el objeto dojo.Deferred para que se le notifique si se produce un error durante la ejecución del diseño del gráfico. Llame al método addErrback para que se le notifiquen errores del diseño, como en el ejemplo siguiente:
deferred.addErrback(function(e){ 
   alert(e);
   dijit.byId("layoutButton").attr("disabled", false);
});

Cómo detener la ejecución del diseño de gráficos en el servidor

Se puede detener la ejecución del diseño de gráficos en el servidor llamando al método stop del objeto ServerSideLayout. Se cancela la petición al servidor sin modificar el gráfico en el cliente:
serverLayout.stop();