Я использую Graphviz для автоматического создания диаграммы архитектуры. У меня возникли две следующие проблемы, и я надеялся получить помощь.

  1. Я использую UUID для уникальной идентификации компонента (пример: "a5320de8-a320-11ea-bb37-0242ac130002" [label="Component A"]). При отображении A -> B я получу «Компонент A» -> b0c5e47c. Что странно. Единственный способ сопоставить UUID с UUID - это заключить их в кавычки. Какие-либо предложения?
  2. Я хочу выровнять кластеры определенным образом и в определенном направлении. Я пробовал {rank=same; cluster_B, cluster_C, cluster_D}; и "9653369c-a322-11ea-bb37-0242ac130002" -> "aa31adb9-9621-40c2-855c-621832dd8c61" [style=invis], но ни одна из них не работает.

У меня есть три раздела в моем точечном файле:

  • Компоненты (в этом разделе я перечисляю все более 100 компонентов и кодирую их цветом в соответствии с определенным правилом.
  • Кластеры (в этом разделе я группирую компоненты в определенные «группы»)
  • Диаграмма или отображение (в этом разделе я затем сопоставляю различные компоненты и кластеры).

Вот образец моего файла DOT.

digraph architecture {
    #graph [rankdir=LR]
    compound=true;

    #Compliant
    node[fillcolor="#013220" style="filled" shape=square fontcolor="white"];
        "a5320de8-a320-11ea-bb37-0242ac130002" [label="Component A"]
        "b0c5e47c-a320-11ea-bb37-0242ac130002" [label="Component B"]

     #Clusters
        #Customer-facing client application cluster
        subgraph cluster_A{
            label="Client Apps";

        "f7b3915d-6b3d-4d4c-bef0-bdabda915c03"; 
        "9912de2b-739a-4c5c-834e-e0c3d09d70d1";
        "16bb2066-9293-470e-99ec-c59d8426c0ab";
        "641a6601-f4f6-4c06-baa6-e5e232f8abed";
        "c5e92b09-a470-4fb6-af5c-e5f7dbeff919";
        }

     #Diagrams
     "f7b3915d-6b3d-4d4c-bef0-bdabda915c03" -> {"35305026-d285-458c-85ad-7eae4e785e84", "76e0e679-42a6-47f0-9164-abc223da07fe"}; 
      76e0e679-42a6-47f0-9164-abc223da07fe" -> "35305026-d285-458c-85ad-7eae4e785108";
}

Я получаю что-то вроде: введите здесь описание изображения

Однако я хочу расположить кластер определенным образом, например: введите описание изображения здесь

0
emie 31 Май 2020 в 12:44

1 ответ

Лучший ответ
  1. Как вы выяснили, дефисы не являются допустимыми символами в идентификаторе узла, если строка не заключена в кавычки. Если вам нужна дополнительная информация: https://www.graphviz.org/doc/info/ lang.html
  2. Прямого выравнивания кластеров не существует. Иногда вы можете принудительно выполнить желаемое выравнивание, встраивая несколько кластеров в другой кластер, чтобы «сжать» их. Например, вставьте B3 и B4 в кластер B34. Но никаких гарантий.

Вы можете использовать gvpr для изменения положения кластеров (и их содержимого), но это может оказаться довольно сложным.

0
sroush 31 Май 2020 в 17:07