понедельник, 1 февраля 2010 г.

Graphviz: начало

Да. Нелегко девелопить небольшой проект. Так и тянутся руки применять совершенно ненужные фичи чтобы поиграться с ними. Вот такова и история Graphviz в моей жизни. Так или иначе, о нем есть что рассказать.
Использовать Graphviz я решил по причине сильного нежелания генерить картинки диаграмм классов в какой-нить UML тулзе и потом вставлять эту картинку в вики проекта. Не хотелось при каждом изменении заново открывать диаграмму в тулзе, заново генерить картинку, заново ее вставлять в вики. Мне показалось, что данная последовательность действий - это, как говорят, overkill. Ведь я всего лишь хочу отобразить отношения между сущностями (оххохо). И для этого мне совершенно неважно как они будут расположены относительно друг друга. В случае с UML тулзой я решаю и эту ненужную задачу (конечно для красивых презентаций это задача нужна, но не в случае с вики). Примерно так же думали и разработчики Graphviz.

Для моей задачи я использовал не весь Graphviz, а только его подмодуль - dot.
Полезной оказалась статья http://www.ffnn.nl/pages/articles/media/uml-diagrams-using-graphviz-dot.php показывающая примеры использования DOT language для рисования диаграммы классов. В статье не показаны примеры различных типов стрелок (вы же помните эти глупые стрелки агрегации и композиции!), для этого юзаем параметр arrowhead.
Следует также помнить что для включения DOT маркапа в вики трака нужно поставить плагин, а в самой вики писать

{{{
#!graphviz

здесь ваш DOT-код

}}}

Вот как я стильно заюзал DOT для своей диаграмки

{{{
#!graphviz
digraph G {
node [
shape = "record"
]
Report->Message [arrowhead = diamond ]
FieldValue->Report [arrowhead = odiamond]
Field->ReportType [arrowhead = odiamond]
Field->FieldValue [arrowhead = diamond]
}
}}}

Комментариев нет:

Отправить комментарий