-
Notifications
You must be signed in to change notification settings - Fork 94
GraphViz
Em algumas situações, como na exibição da tramitação de documentos ou na apresentação do fluxo de um workflow o siga recorre ao GraphViz para converter uma definição de diagrama no padrão "Dot" em um diagrama vetorial no padrão SVG.
Não existe uma implementação do GraphViz para Java, portanto, foram exploradas duas outras estratégias:
-
viz.js, uma implementação do GraphViz em JavaScript que é executada diretamente pelo browser. Esta foi a primeira estratégia que o Projeto-Siga utilizou, mas o tamanho do arquivo viz.js é de mais de 7MB, o que faz com que haja uma sobrecarga na rede e também no browser. Para aplicações mobile, por exemplo, utilizar essa estratégia seria muito inconveniente.
-
VizService, um microserviço que recebe uma string "Dot" e retorna um SVG. Essa solução é bem menos custosa para a rede e para o browser, portanto funciona perfeitamente mesmo em ambiente mobile.
Criamos um parâmetro de ambiente que habilita o VizService e, quando ele é omitido, fica funcionando a implementação anterior com o viz.js.
O parâmetro se chama "graphviz.url" e recebe a URL do método /svg do microserviço, como por exemplo:
<property name="graphviz.url" value="https://localhost:8080/vizservice/svg"/>
A configuração deste parâmetro é opcional, mas ambientes que tenham restrições de largura de banda devem sempre optar pelo microserviço.