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