Как исправить Path Line в PlantUML
Я создал эту диаграмму, используя следующий код. Но, как вы можете видеть, линии, идущие от (Отмена заказа) и (Разместить заказ) до (Издатель), решают пойти по ужасно округленному пути, чтобы получить их, вместо того, чтобы идти прямо вправо и затем вниз к издателю. Я пытался использовать команды ручного управления, такие как "-down", но ни одна из них не помогла. Кто-нибудь знает, как это исправить?
А вот и мой код. Я ценю любую помощь. Спасибо.
@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
together {
Actor "Book Database" as bookLog
(Retrieve Information) as getBook
customer -- getBook
getBook -- ebook
getBook -- bookLog
(Update Catalogue) as updateCatalogue
ebook -- updateCatalogue
updateCatalogue -- bookLog
}
together {
(Place Order) as order
customer -- order
order -- ebook
order--publisher
(Cancel Order) as cancelOrder
customer -- cancelOrder
cancelOrder -- ebook
cancelOrder--publisher
}
}
(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook
(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher
@endUML
5 ответов
Ниже приведены некоторые приемы, которые вы можете попробовать. Сам макет выполняется GraphViz (точечный макет iirc), и GraphViz иногда делает это просто. Построение графика является NP-полной проблемой, поэтому алгоритмы обычно используют жесткие комбинации.
Типичные обходные пути, которые я видел или использовал, включают:
- добавление скрытых линий
a -[hidden]- b
- увеличивая длину линии
a --- b
(больше тире, длинная линия) - указание предпочтительного направления линий (
a -left- b
) - обмен ассоциации заканчивается (
a -- b
→b -- a
) - изменение порядка определений (порядок имеет значение... иногда)
- добавление пустых узлов с цветом фона / границы, установленным в прозрачный
Поэтому, если вы действительно хотите иметь хороший макет, вам нужно будет нанести немного локоть, но имейте в виду, что макет все еще будет хрупким - если вы добавляете / удаляете элементы, вам, возможно, придется повторить его снова.
Попробуйте варианты, предложенные @Peter Uhnak вместе с типом линии:
skinparam linetype polyline
skinparam linetype ortho
Дайте лучшие варианты для линий. Используя орто - ( Здесь)
ты получишь -
Чтобы сделать соединение менее важным в макете, используйте [norank]
, например, a -[norank]-> b
Если кто-то хочет узнать более конкретный, поставьте, вероятно, гораздо более бесполезный ответ, вот что я сделал в конце.
order -down- publisher
publisher -[hidden]up- order
поэтому по какой-то причине добавление дублированной команды в обоих случаях решает ее.
Все эти хорошие ответы собраны и приведены в полуофициальном Hitchhiker's Guide to PlantUML . См . раздел Макет .
Не уверен, как это было 3 года назад, но, вероятно, сейчас это лучшая отправная точка для настроек PlantUML, чем SO.