Генерация документации к базе данных
Настройка проекта
Для работы генератора документации необходимо подключить в корневой project.jc
скрипт jandcode.core.dbm.jc.DbmRootProject
:
include(jandcode.core.dbm.jc.DbmRootProject)
Генерация
Генерация документации осуществляется для конкретной модели в приложении посредством команды:
jc db-doc
Сгенерированные файлы по умолчанию копирются в каталог temp/db-doc
.
При генерации по умолчанию используется модель default
. Можно указать произвольную
модель через опцию -m:model-name
:
jc db-doc -m:my.model
В качестве модели можно использовать как экземпляр модели, так и прототип модели.
Список моделей
Список доступных моделей можно посмотреть командой:
jc app-showinfo
Шаблон генерации
Для генерации используется механим Генерация по шаблонам.
Оригинальный шаблон находится в модуле jandcode-core-dbm-jc
:
/jc-data/dbm/db-doc/db-doc.gsp
. В каталоге этого файла так же находятся вспомогательные
файлы: стили, утилиты.
Посталяемый шаблон очень простой. Если Вас он не устраивает, то можно поместить его в проект и модифициовать по смоему усмотрению.
Для этого необходимо в корне проекта создать каталог jc-data/dbm/db-doc
и скопировать в него содержимое оригинального каталога. Теперь вы можете модифицировать
шаблон в проекте.
Кроме того, вы можете скопировать файлы шаблона произвольное место в проекте и указывать шаблон при запуске команды:
jc db-doc -s:./scripts/mydoc/db-doc.gsp
Таким образом можно иметь различное офоормление для разных задач.
Аргументы в шаблоне
В шаблон передается экземпляр класса jandcode.core.dbm.dbstruct.DomainDbUtils
в аргументе dbUtils
. В шаблоне его можно получить так:
DomainDbUtils dbUtils = this.args.dbUtils
Это экземпляр содержит все необходимые домены, ссылку на модель и некоторые утилиты.
Диаграммы
Диаграммы при генерации формируются посредством PlantUML.
Библиотека plantuml.jar
входит в поставку.
Принцип использования: генерируем все необходимые файлы диаграм в процессе генерации документации. Финальным шагом генерации - генерируем изображения из описаний. Например так:
// получаем ссылку на библиотеку plantuml
def lib = th.ctx.getLib("plantuml")
// запускаем процесс генерации в каталоге images внутри каталога, куда генерируем
ut.runcmd(cmd: ['java', '-jar', lib.jar, '-tsvg', '.'], dir: "${th.outDir}/images")