Упрощение механизма миграции данных в систему Directum RX.
На данный момент компанией Directum предоставляется решение «Утилита импорта данных», для выполнения процесса миграции данных. Отталкиваясь от этого решения, был сформирован ряд пунктов, упрощающих работу:
Исходя из опыта работы на проектах по внедрению Directum RX, можно утверждать, что блок с задачами по миграции данных формирует значительный размер трудозатрат относительно остальных пунктов по прикладной разработке. Происходит это, по большей части, из-за необходимости доработки утилиты импорта, вследствие модификации требующихся для импорта типов данных: новых, перекрытых типов документов, справочников, а также из-за разнообразия таких объектов. Сюда добавляется потребность в формировании шаблонов импорта для модифицированной утилиты и сложность проверки разработки.
Рисунок 1. Соотношение трудозатрат на задачи по миграции. Средние значения по 3 проектам в период с 2019 по 2020.
Из опыта на проектах с задачами по миграции данных, в среднем на обработку 8-10 объектов разной сложности, выделялось 200 – 240 часов, из которых:
При этом часть объектов на обработку уже реализована в рамках решения «Утилита импорта данных», но вследствие перекрытия объектов, требовала дополнительного внимания.
Цифры выглядят внушающе и могут показаться завышенными, но по факту подтверждаются из раза в раз, с каждым последующим проектом. Решение «Импорт данных» позволит сократить трудозатраты на миграцию данных и минимизирует привлечение разработчика к выполнению данных работ.
Основная идея решения — перенос логики по настройке и импорту данных на сторону системы Directum RX. Это позволит предоставить:
Основным рабочим элементом решения является справочник «Настройки импорта».
Рисунок 2. Карточка настройки импорта.
Как видно из рисунка 2, решение позволяет:
Для выбора импортируемого типа доступны записи справочника «Типы документов», в случае, если выбран «Тип назначения» - Документ и собранная информация о имеющихся справочниках в системе Directum RX, если «Тип назначения» - Справочник. Информация о справочниках системы заполняется при инициализации решения, что позволяет обновлять список при появлении новых типов справочников в новых публикациях. В информации содержится: Отображаемое имя, Идентификатор, Полное имя объекта.
При создании новых типов документов, через прикладную разработку, требуется добавление логики по созданию соответствующей записи в справочник «Типы документов». Это достаточно удобно, в нашем случае, и позволяет эффективно использовать базовый справочник.
При выборе типа объекта назначения, в табличную часть вносится информация по обязательным к заполнению полям, которые выделяются красным цветом. Для выбора доступны свойства из выбранного типа объекта.
Рисунок 3. Поля назначения.
Поле «Действия» позволяет выбрать действия, по которым будет производится процесс обработки поля при импорте данных.
Рисунок 4. Действия.
Для выбранных полей с типом «Ссылка», доступны действия, относящиеся к процессу поиска данных для заполнения в системе. Поля без выбранного свойства назначения позволяют выбрать действие Тело документа для обработки процесса создания версии документа в системе. Строковые, числовые и другие поля не нуждаются в дополнительном выборе действий, обработка и приведение к нужному типу осуществляется посредством разработанной логики.
«Поля шаблона», являются строковыми значениями, что позволяет доступно указать имена полей для заполнения шаблона.
Создание шаблона для загрузки данных производится по действию на ленте карточки. При формировании шаблона используются поля из табличной части «Поля шаблона», в случае отсутствия заполнения полей, имена формируются по отображаемому имени выбранных полей назначения.
Рисунок 5. Шаблон импорта данных.
В случае формирования шаблона, при выбранном типе назначения Документ, в шаблон добавляется столбец «Тело документа», в табличную часть карточки настройки также добавляется соответствующее поле, в случае его отсутствия.
Если уже имеется сформированный шаблон загрузки, предположим шаблон из решения «Утилита импорта данных», то есть возможность загрузить шаблон по кнопке на ленте карточки. После загрузки, в табличной части, область с полями шаблона подменится с текстового типа на тип выбора из выпадающего списка, позволяя указать соответствия полей для импорта данных. Доступны поля из загруженного шаблона.
Рисунок 6. Поля шаблона после загрузки шаблона импорта договоров решения «Утилита импорта данных».
После заполнения шаблона данными следует загрузить информацию в настройку импорта при помощи действия на карточке. Наличие загруженного шаблона с данными отображает реквизит на форме карточке (рисунок 2). На данном этапе при ручном изменении информации по полям: Тип назначения, Тип документа, Тип справочника, набор соответствия полей будет очищен для обработки в соответствии с измененной информацией. Далее становится доступным запуск импорта данных, по соответствующему действию на ленте карточки. Либо, при указании значении поля «Отложенный запуск», импорт будет произведен по настроенному расписанию фонового процесса. Фоновый процесс входит в набор элементов решения.
По итогам разработки решения мы столкнулись с множеством трудностей, связанных как с ограничениями работы системы, так и с изучением нетривиальных подходов.
Решение имеет удобный и знакомый интерфейс, позволяет выполнять импорт данных как по базовым объектам системы, так и по новым, перекрытым, без модификации самого решения «Импорт данных».
При необходимости модификаций (таких как добавление действий по работе с полями, учёт работ с более сложным импортом объектов, когда по одной записи из шаблона должно формироваться несколько объектов в системе, и других) решение имеет набор комментариев и пояснений к логике работы, а также разбивку на универсальные подходы к использованию разработанных методов.
Поникаровский Александр
Краткий пример работы решения.
Обсудите реализацию с экспертом Directum
Комментарии (14)
Александр, планируете ли поделиться своим решением с другими партнерами?
Андрей, Добрый день, на данный момент у решения нет релизной версии. Предстоит ещё множество работ по нагрузочному тестированию и развитию универсальности подхода - по плану развития. Изначально цель стояла в исследовании возможности реализации такого решения, и оказалось оно возможно. Полагаю, как будет номерная версия, информация появится.
Александр, решение интересное.
Вопрос такой: Импорт работает только с базовыми объектами системы или с кастомными тоже ?
Сергей, Добрый день, решение работает с базовыми, с перекрытыми, с новыми объектами. Пройдя по ссылке указанной в статье, можете увидеть пример работы с модифицированным объектом системы.
Немного дополню. Для работы с типами документов, используется базовый справочник Типы документов, по которому решение получает соответствующий объект о котором получает текущую информацию о его свойствах (т.е. Мы не привязываемся к необходимости доработки решения, решение само анализирует текущее состояние объекта с указанным типом). Так как при создании нового типа документа в среде разработки, одним из обязательных пунктов, для возможности использования нового типа, является необходимость добавления информации о нём в справочник Типы документов, следовательно и работа с получением всех доступных к работе типов документов решением упрощается.
Для работы с типами справочников организована аналогичная работа, только справочник "Типы справочников" является новым объектом и от разработчика не требуется прописывать добавление записей, при добавление новых объектов. При инициализации решения, оно само проанализирует систему на появление новых типов справочников. Есть ньюанс с очерёдностью инициализации решений при публикации - https://club.directum.ru/idea/297896, решается это повторением инициализации после публикации.
Фактически мы получаем следующее, разработчик создаёт и модифицирует объекты необходимые по поставленным задачам, а тонкости относительно настройки импорта данных по этим объектам автоматизированы, и не требуют его привлечения.
Александр, Спасибо за ответ.
Александр, честно, решение просто шикарное и напрашивалось давно. Хотел задать вам пару вопросов:
1. Как обрабатываются ошибки при импорте? Допустим, указали в Действии "Поиск по имени", но ошиблись в букве при заполнении шаблона. В шаблоне утилиты импорта было отдельное поле, которое заполнялось после отработки описанием ошибки. Возникнет ли ошибка при импорте, если не будет заполнено обязательное поле?
2. Реализовано ли логирование процесса импорта?
3. Правильно ли я понимаю, что при переходе на новую версию Directum RX обновление решения "Импорт данных" не потребуется? Если конечно не будет изменена структура справочника "Типы документов".
Ну, и в качестве небольшой обратной связи после просмотренного демо, было бы здорово, чтобы в сформированном шаблоне розовым были залиты обязательные для заполнения поля, а остальные, скажем, зеленым. Но это конечно вкусовщина все. В целом решение замечательное и, на мой взгляд, сократит трудоемкость миграции исторических данных процентов на 70 минимум.
Василий, Добрый день, благодарю за отзыв.
Отвечать на вопросы буду в заданном Вами порядке.
1. По организации сбора информации по ошибкам, планируем формировать отдельный реестр с историей по импорту объектов, для упрощения работы с рассылкой информации по импорту документа, в случае отложенного запуска. И по аналогии с утилитой импорта, добавлять информацию в сам шаблон с данными. На данный момент процесс находится на стадии проектирования, в рамках демоверсии используется упрощённая система флагов.
2. На данный момент только в рамках требуемых разработчику для проверки работы решения. К релизной версии система логирования будет.
3. Правильно, обновление не потребуется, если только в новой версии не появится значительных изменений в работе с объектной моделью. При изменении структуры справочника "Типы документов", можно будет рассматривать ситуацию нового подхода, предложенного с данным обновлением от Directum, либо же использовать подход реализованный сейчас в решении для типов справочников. Принципиально работа в решении, что с документами, что со справочниками идёт через один универсальный обработчик, так как объекты имеют общего "родителя", IEntity.
Благодарю за обратную связь, рассмотрим предложение о большей колоризации рабочей области.
Александр, спасибо за исчерпывающие ответы. Осталась пара вопросов: когда планируете выпустить релизную версию решения? Думаю, не совру, если скажу, что этот вопрос интересен очень многим коллегам в сообществе Directum, так как закроет массу потребностей при миграции исторических данных. И не думали еще относительно условий распространения, стоимости решения?
Василий, Благодарю, приятно слышать, что идея и реализация интересна многим. На Ваши вопросы к сожалению сейчас ответа дать не могу, над решением предстоит ещё множество работ, для повышения удобства и скорости обработки. Описывать, даже приблизительные, даты сейчас сложно.
Возможно пропустил в статье, но есть ли привязка этого решения к локализации? Есть какие-то особенности в работе с другими языками?
Константин, работа со значениями из шаблона с данными, производится в таком виде в каком они занесены. при настройке импорта, для выбора будут доступны значения полей в той локализации, которая используется у клиента. Спасибо за вопрос.
очень крутое решение
Екатерина, благодарю за отзыв
Отличное решение!
А как можно его приобрести?