Criar Organograma Java

Um Organograma é usado para explicar a hierarquia de relatórios ou relacionamento em um instituto ou empresa. Você pode fazer um organograma sem precisar instalar um aplicativo ou ferramenta com base na interface do usuário. Este artigo aborda como criar diferentes tipos de organogramas programaticamente em Java.

Criador de organogramas – Instalação da API Java

A API Aspose.Diagram for Java pode ser usada para criar vários tipos de diagramas visuais, incluindo gráficos e fluxogramas. Você pode baixar o arquivo JAR da seção Downloads ou usando as seguintes especificações Maven no arquivo pom.xml do seu aplicativo:

Repositório:

 <repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <name>Aspose Java API</name>
        <url>http://repository.aspose.com/repo/</url>
    </repository>
</repositories>

Dependência:

 <dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-diagram</artifactId>
        <version>22.8</version>
        <classifier>jdk16</classifier>
    </dependency>
</dependencies>

Criar organograma no estilo CompactTree em Java

Você pode criar um organograma no estilo CompactTree com as seguintes etapas:

  1. Carregue mestres de qualquer diagrama, estêncil ou modelo existente.
  2. Defina valores para construir a hierarquia.
  3. Adicione formas e conexões entre nós.
  4. Salve o diagrama de saída.

O exemplo de código abaixo é um exemplo de como criar um organograma no estilo CompactTree em Java:

// Carregar mestres de qualquer diagrama, estêncil ou modelo existente
String visioStencil = "Basic Shapes.vss";
String rectangleMaster = "Rectangle";
String connectorMaster = "Dynamic connector";
int pageNumber = 0;
double width = 1;
double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// Definir valores para construir a hierarquia
List<String> listPos = Arrays.asList(new String[] { "0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6", "0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1" });
// Defina uma Hashtable para mapear o nome da string para o id de forma longa
Hashtable shapeIdMap = new Hashtable();
// Criar um novo diagrama
Diagram diagram = new Diagram(visioStencil);
diagram.getPages().get(pageNumber).getPageSheet().getPageProps().getPageWidth().setValue(11);
for (String orgnode : listPos)
{
    // Adicionar uma nova forma de retângulo
    long rectangleId = diagram.addShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Defina as propriedades da nova forma
    Shape shape = diagram.getPages().get(pageNumber).getShapes().getShape(rectangleId);
    shape.getText().getValue().add(new Txt(orgnode));
    shape.setName(orgnode);
    shapeIdMap.put(orgnode, rectangleId);
}
// Criar conexões entre nós
for (String orgName : listPos)
{
    int lastColon = orgName.lastIndexOf(':');
    if(lastColon > 0)
    {
        String parendName = orgName.substring(0, lastColon);
        long shapeId = (long)shapeIdMap.get(orgName);
        long parentId = (long)shapeIdMap.get(parendName);
        Shape connector1 = new Shape();
        long connecter1Id = diagram.addShape(connector1, connectorMaster, pageNumber);
        diagram.getPages().get(pageNumber).connectShapesViaConnector(parentId, ConnectionPointPlace.RIGHT,
            shapeId, ConnectionPointPlace.LEFT, connecter1Id);
    }
}

//layout automático gráfico CompactTree
LayoutOptions compactTreeOptions = new LayoutOptions();
compactTreeOptions.setLayoutStyle(LayoutStyle.COMPACT_TREE);
compactTreeOptions.setDirection(LayoutDirection.DOWN_THEN_RIGHT);
compactTreeOptions.setEnlargePage(false);

diagram.getPages().get(pageNumber).layout(compactTreeOptions);

// Salvar diagrama
diagram.save("DrawCompactTreeChart_java.vsdx", SaveFileFormat.VSDX);

Criar organograma no estilo de fluxograma em Java

Você pode criar vários tipos de organogramas que podem seguir modelos diferentes. As etapas a seguir mostram como criar um organograma estilo fluxograma programaticamente em Java:

  1. Carregue mestres de qualquer diagrama, estêncil ou modelo existente.
  2. Adicione nós e conectores da organização.
  3. Defina o layout e salve o diagrama de saída.

O trecho de código a seguir demonstra como criar um organograma no estilo de fluxograma em Java:

// Carregar mestres de qualquer diagrama, estêncil ou modelo existente
String visioStencil = "Basic Shapes.vss";
String rectangleMaster = "Rectangle";
String connectorMaster = "Dynamic connector";
int pageNumber = 0;
double width = 1;
double height = 1;
double pinX = 4.25;
double pinY = 9.5;
// Definir valores para construir a hierarquia
List<String> listPos = Arrays.asList(new String[] { "0", "0:0", "0:1", "0:2", "0:3", "0:4", "0:5", "0:6", "0:0:0", "0:0:1", "0:3:0", "0:3:1", "0:3:2", "0:6:0", "0:6:1" });
// Defina uma Hashtable para mapear o nome da string para o id de forma longa
Hashtable shapeIdMap = new Hashtable();
// Criar um novo diagrama
Diagram diagram = new Diagram(visioStencil);
diagram.getPages().get(pageNumber).getPageSheet().getPageProps().getPageWidth().setValue(11);
for (String orgnode : listPos)
{
    // Adicionar uma nova forma de retângulo
    long rectangleId = diagram.addShape(pinX++, pinY++, width, height, rectangleMaster, pageNumber);
    // Defina as propriedades da nova forma
    Shape shape = diagram.getPages().get(pageNumber).getShapes().getShape(rectangleId);
    shape.getText().getValue().add(new Txt(orgnode));
    shape.setName(orgnode);
    shapeIdMap.put(orgnode, rectangleId);
}
// Criar conexões entre nós
for (String orgName : listPos)
{
    int lastColon = orgName.lastIndexOf(':');
    if(lastColon > 0)
    {
        String parendName = orgName.substring(0, lastColon);
        long shapeId = (long)shapeIdMap.get(orgName);
        long parentId = (long)shapeIdMap.get(parendName);
        Shape connector1 = new Shape();
        long connecter1Id = diagram.addShape(connector1, connectorMaster, pageNumber);
        diagram.getPages().get(pageNumber).connectShapesViaConnector(parentId, ConnectionPointPlace.RIGHT,
            shapeId, ConnectionPointPlace.LEFT, connecter1Id);
    }
}

//fluxograma de layout automático
LayoutOptions flowChartOptions = new LayoutOptions();
flowChartOptions.setLayoutStyle(LayoutStyle.FLOW_CHART);
flowChartOptions.setDirection(LayoutDirection.TOP_TO_BOTTOM);
flowChartOptions.setEnlargePage(true);

diagram.getPages().get(pageNumber).layout(flowChartOptions);

// Salvar diagrama
diagram.save("DrawFlowChart_java.vsdx", SaveFileFormat.VSDX);

Obtenha Licença Temporária Gratuita

Você pode avaliar a API em sua capacidade total solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como criar um organograma programaticamente em Java. Abrange a criação de um gráfico de estilo CompactTree ou Flowchart, dependendo de suas necessidades. Além disso, você pode visitar a seção documentação para conhecer outros recursos da API. Caso precise discutir seu caso de uso ou preocupações, entre em contato conosco no fórum.

Veja também

Converter VSD ou VSDX para VTX em Java