Введение
Общая часть
Экспорт/импорт структуры (ЭИС) - один из модулей myBpm, предназначенный для полного или частичного переноса структуры компании между инстанциями myBpm (как между компаниями, так и между системами). Сам процесс переноса выглядит следующим образом: в компании-доноре (компания, структуру которой необходимо перенести) в окне экспорта происходит выгрузка файл с расширением" .mybpm". В этом файле лежит структура компании-донора в json-формате. Далее, этот файл загружается в компанию-реципиент (компания, куда необходимо перенести структуру), где в случае отсутствия ошибок и конфликтов, можно применить эту структуру. Вся логика строится на кодах (не идентификаторы).
Логически ЭИС разделен на 4 этапа
- Подготовка экспорта
- Экспорт
- Подготовка импорта (анализ импорта)
- Импорт
На данный момент используя ЭИС можно перенести следующие части системы:
- Структура БО
-
Поддерживаются следующие типы БО: БО, CO, Панель, Справочник, Процессы. (17.07.23)
Поддерживаются следующие сущности: динамические поля, нативные поля, виджеты, контекстное меню, вкладки (табы), печатные формы, статичные ссылки (17.07.23)
Поддерживается перенос процессов (фигуры, блоки, выражения) (17.07.23) - Права доступа
- Поддерживаются права на следующие сущности: сам БО, нативные поля, динамические поля, виджеты, табы (17.07.23)
- Скрипты
- Переносить можно лишь скрипты, имеющие рабочую версию, в противном случае выгрузка скриптов будет недоступна (17.07.23)
Подготовка экспорта
Основные классы
ExportStructRegister
AbstractDependencyWorker
ExportValidator
Основная коллекция
CompanyExportStruct
Основная логика
После добавления БО или изменения выгружаемых частей, для экспорта, происходит следующее
- Изменения сохраняются в основную коллекцию
- Вызывается метод loadExportData(), в котором происходит валидация выбранных БО и расчет зависимостей от других БО
В случае возникновения ошибок во время валидации - экспорт невозможен.
Дополнительно
Максимальное количество ошибок, сгенерированных во время валидации прописано в конфиг-файле StructExportConfig
Экспорт
Основные классы
ExportStructRegister
StructureRegister
StructAccessRightsRegister
ScriptsStructureRegister
StructStaticRefRegister
ProcessStructureRegister
После нажатия кнопки "Выгрузить" начинается процесс экспорта структуры. С коллекции CompanyExportStruct скачиваются все выбранные в 1 этапе БО и выбранные для экспорта части (структура, права, скрипты). Далее создаются структуры (java-классы, как правило, в названии имеют "Struct") хранящие в себе всю необходимую информацию для импорта. Основной моделью является CompanyStruct, которая переводится в json-формат посредством библиотеки jackson (через ObjectMapper). По итогу экспорта скачивается mybpm-файл.
Подготовка импорт (анализ импорта)
Основные классы
ImportStructRegisterImpl
AbstractImportAnalyzer
StructureRegister
StructAccessRightsRegister
ScriptsStructureRegister
StructStaticRefRegister
ProcessStructureRegister
Основная коллекция
ImportStructDto
После загрузки файла полученного во 2 этапе в другую компанию, начинается 3 этап - анализ импорта.
Во время анализа происходит следующее:
- Определяется возможность импортировать структуру из файла (валидация).
- Сбор необходимых данных для 4 этапа (идентификаторы для сохранения)
- Сбор информации о результате импорте для отображения пользователю (что создастся, что обновится и так далее)
Импорт
Основные классы
ImportStructRegisterImpl
StructFileRegister
StructureRegister
StructStaticRefRegister
ScriptsStructureRegister
StructAccessRightsRegister
ImportStructureStrategy
Если же во время анализа не было обнаружено ошибок, то файл можно применить, другими словами начинается 4 этап - импорт.
В рамках этого этапа начинается создание DTO через кафку, идентификаторы для сохранения, как правило, определяются уже на 3 этапе.