Use uma instância da classe ServerSideLayout para executar o layout de gráfico no lado do servidor,
como no código de amostra a seguir:
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); graph.setNodeLayout(treeLayout); var serverLayout = new ibm_ilog.graphlayout.ServerSideLayout(graph, url); var deferred = serverLayout.layout();
O construtor para a instância ServerSideLayout
possui dois argumentos. Transmita o nome do gráfico que você deseja organizar
no argumento graph e a
URL para o serviço de layout de gráfico do lado do servidor no argumento url.
Ao chamar o método layout na
instância ServerSideLayout, o layout é executado de forma assíncrona
no servidor.
Nota
Como em todos os aplicativos multiencadeados, você deve projetar
seu aplicativo para execução de layout de gráfico assíncrona. Seu aplicativo
não deve modificar o gráfico durante a execução do layout. Do contrário, todas as mudanças feitas no lado do cliente serão sobrescritas quando o layout for concluído.
O método layout retorna imediatamente
ao encadeamento atual, sem aguardar a conclusão da execução do layout de gráfico. A interface com o usuário do navegador permanece ativa e seu aplicativo
pode continuar com outro processamento. Quando a execução do layout de gráfico
estiver concluída, as novas posições de nós e as formas de links
serão aplicadas ao gráfico automaticamente.
Ao configurar os algoritmos de layout de nó e de layout de link,
use os mesmos métodos
(Graph.setNodeLayout e Graph.setLinkLayout) se você executar
o layout de gráfico no lado do cliente ou do servidor. No entanto, não use chamadas Graph.performGraphLayout ou Diagram.performGraphLayout para executar o layout de gráfico no lado do servidor.
Elas são apenas para o layout de gráfico do lado do cliente.
Incluindo Retornos de Chamada
O método layout retorna
um objeto dojo.Deferred que pode ser usado
para notificá-lo quando o layout estiver concluído. Chame o método addCallback
do objeto dojo.Deferred para fornecer
a notificação. O exemplo a seguir desativa um botão durante a execução
do layout, em seguida, ativa-o quando o layout é concluído:
dijit.byId("layoutButton").attr("disabled", true); var deferred = serverLayout.layout(); deferred.addCallback(function(){ dijit.byId("layoutButton").attr("disabled", false); });
Também é possível usar o objeto dojo.Deferred
para notificá-lo se ocorrer um erro durante a execução do layout de gráfico. Chame
o método addErrback para notificação de
erro do layout, como no exemplo a seguir:
deferred.addErrback(function(e){ alert(e); dijit.byId("layoutButton").attr("disabled", false); });
Parando a Execução do Layout de Gráfico do Lado do Servidor
É possível parar a execução do layout de gráfico do lado do servidor chamando
o método stop do objeto ServerSideLayout.
Ele cancela a solicitação do servidor sem modificar o gráfico no lado do cliente:
serverLayout.stop();