Руководство Бизнес-аналитика

Page tree

Руководство Бизнес-аналитика. Платформа Web-BPM 2.0

Skip to end of metadata
Go to start of metadata

Некоторые изменения в API студии, а также некоторые изменения в webbpm пакете, требуют изменения структуры бизнес-моделей без обратной совместимости. Для таких случае разработан механизм конвертеров.

Конвертеры могут находиться в студии либо в пакете, и запускаться студией при поднятии версии студии / пакета соответственно.

Как работают конвертеры

Конвертеры могут конвертировать объекты классов, реализующих интерфейс HasVersions, а также объекты, для которых существует реализация ObjectExtractor. На момент написания статьи это объекты классов Page, Component, WebbpmProcess, PageObject, Script

Порядок запуска

Конвертеры запускаются в порядке возрастания версий, в рамках одной версии порядок запуска не определен. При обнаружении студией объекта с неактуальными версиями, запускаются конвертеры в диапазоне (<версия_объекта>; <текущая_версия>]. Для двух классов, один из которых содержит другой (напр. Page и PageObject), сначала запускаются все конвертеры для всех объектов класса-контейнера в рамках версии, затем для вложенных объектов.

Как написать конвертер

Конвертер - это объект, реализующий интерфейс Converter. Для удобства созданы субинтерфейсы для всех объектов, для которых запускаются конвертеры (NB для PropertyValue не запускаются (улыбка)). Конвертеры лежат в модуле converters студии / пакета. Конвертер должен быть зарегистрирован внутри конструктора StudioMigrationRegistry (для студии) / PackageMigrationRegistry (для пакета) с указанием версии и класса, объекты которого он конвертирует. Примеры есть в коде студии и базового пакета.

Использование бинов студии в конвертерах

Некоторым конвертерам может быть нужна информация о проекте, студии, и так далее. Для этого в бин MigrationRegistry можно подключать некоторые Autowired зависимости. Соответствующий спринг контекст будет создан внутри модуля core-migrations-impl при открытии проекта. Доступны бины, доступные в контексте модуля core-migrations-impl, на текущий момент это:

  • ProjectManager
  • ApplicationInfo
  • No labels