Chamando o Layout de Gráfico do Lado do Servidor a partir do Cliente

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