Plantuml: Почему добавление элемента вызывает значительное изменение положения диаграммы? (развертывание, класс)

#plantuml #deployment-diagram

Вопрос:

Еще одна попытка на полусложной схеме развертывания (содержимое-это развертывание:иш).

Предыстория: я добавляю компоненты один за другим, это работает (см. На сервере plantuml здесь) введите описание изображения здесь

пока я не доберусь до «aabb9» (то есть a9)…

Проблема: Когда я добавляю aabb9 в качестве цели для стрелки «вверх» из aabb5, я ожидаю, что aabb9 будет размещен над aabb5, где есть место. Подобный этому:

введите описание изображения здесь

Вместо этого компоновка схемы почти полностью переделана двигателем, и, по-видимому, ранее определенные отношения больше не «соблюдаются». Таким образом, (плохой) результат становится: введите описание изображения здесь

Обратите внимание, как первые узлы теперь расположены справа, и мои отношения, указанные как идущие справа от этих двух (aabb1 и aabb2), больше не «соблюдаются» /не отображаются, как было введено. Вот тот же рисунок с незафиксированной линией и «плохим»/нежелательным результатом.

Итак, ниже приведен код, который работает, но если вы раскомментируете последнюю строку, она сойдет с ума и «ретранслирует» все это.

Есть какие-нибудь зацепки к этому? Было бы здорово иметь возможность создавать эти простые диаграммы с текстом…

Спасибо! /мави

 @startuml
skinparam ranksep 5
skinparam nodesep 5

rectangle "aabb1" {
    node aabb1 as a1
    node aabb2 as a2
}
a1 --[hidden]> a2

control "aabb3" as a3
database "aabb4" as a4
queue "aabb5" as a5
control "aabb6" as a6
control "aabb7" as a7
database "aabb8" as a8
control "aabb9" as a9

a1 -right-> a3: Range
a2 -right-> a3: 3D Models
a3 -down-> a4: Range amp; Models
a3 -> a5: product.nupsert

a5 -down-> a6: product.nupsert
a6 -> a5: product.nprocessed

a5 -> a7: product.processed
a7 -> a8: Data
a7 -> a5: product.nstored

'a5 -up-> a9: product.stored

@enduml
 

Ответ №1:

Итак, я решил, что немного поэкспериментировал, прежде чем сдаться, и нашел то, что подходит для этого случая, и гипотезу, но без основной причины…

Что работает?

Итак, если я добавлю связь/поток из нового «свободного» узла (т. Е. «aabb9»), а не к нему, это сработает. Так что, если я сделаю это , например a9 -down-> a5: product.stored , это сработает так, как ожидалось.

И как только это будет сделано, я смогу добавить поток из остальной части диаграммы в новый узел, то есть раскомментировать последнюю строку.

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

Тогда движок правильно расположит aabb9.

Чтобы достичь точного результата, к которому я стремился, я могу просто повернуть стрелку этого потока вспять, так что я получаю a9 <-down- a5: product.stored .

Но это почти похоже на ошибку. 🙂

Комментарии и мысли приветствуются, надеюсь, это поможет какому-нибудь бедному исследователю plantuml. 🙂