Автоматическая привязка данных позволяет в автоматическом режиме создать привязки данных объектов со сложной объектной моделью. В Creatio автоматическая привязка данных доступна к использованию для каталога продуктов в продуктах линейки Financial Services Creatio.
Структура автоматической привязки данных
Составляющие автоматической привязки данных представлены в таблице.
Название | Назначение | Классы и интерфейсы |
---|---|---|
Сервис | По заданной структуре запускает генерацию привязок данных. Генерация выполняется в фоновом режиме. | Service — интерфейс для вызова автоматической привязки данных из front-end части. |
Контроллер | Обращение к классам Obtainer (получение структуры связанных записей) и Manufacturer (генерация привязок данных). | Controller — класс для управления созданием привязок данных. |
Генератор привязок | Является оберткой ядрового класса PackageElementUtilities, представляет собой удобный интерфейс для выполнения CRUD-операций с привязками данных. Операции с данными описаны в статьях Доступ к данным через ORM и Прямой доступ к данным. | Manufacturer — промежуточный класс для взаимодействия между контроллером, классом PackageElementUtilities и классом PackageValidator. |
Получатель структуры | Возвращает в контроллер структуру связанных записей для основной сущности. | Obtainer — при формировании привязок данных позволяет гибко изменять структуру связанных объектов для основной сущности. Для определения требуемой реализации использует шаблон Strategy. |
В системе реализована базовая структура, в которой возвращается только текущая сущность со всеми своими колонками, кроме системных. Свойства базовой структуры представлены в таблице ниже.
Свойство | Описание |
---|---|
EntitySchemaName | Название сущности. |
FilterColumnPathes | Массив путей к первичной колонке основной сущности (при использовании фильтрации выполняется объединение через логический оператор OR). |
IsBundle |
Способ сохранения записей. Способы сохранения записей:
|
Columns | Перечень колонок для привязки. |
InnerStructures | Перечень структур вложенных объектов (например, детали, которые относятся к основной сущности). |
DependsStructures | Перечень структур, от которых зависит текущая структура (например, справочники, на которые через справочные поля ссылается запись в текущей структуре). |
Алгоритм работы автоматической привязки данных
Алгоритм работы автоматической привязки данных представлен на рисунке ниже.
Обработка структуры начинается с основной сущности и выполняется для каждого экземпляра класса структуры SchemaDataBindingStructure.
Алгоритм обработки структуры:
- Рекурсивно обрабатывается каждая структура перечня структур, которые содержатся в свойстве DependsStructures. Это выполняется, чтобы при привязке основной сущности все объекты, на которые ссылается текущий, уже были привязаны.
- По фильтру, который содержится в свойстве FilterColumnPathes, создается привязка к записи основной сущности.
- Рекурсивно обрабатывается каждая структура из перечня структур, которые содержатся в свойстве InnerStructures. Поскольку структуры ссылаются на основную сущность, то их необходимо привязывать после основной сущности.
Способы именования автоматических привязок данных:
- agb_EntitySchemaName, если свойство IsBundle установлено в значение true. EntitySchemaName — наименование сущности текущей привязки.
- agb_EntitySchemaName_PrimaryEntityId, если свойство IsBundle установлено в значение false. PrimaryEntityId — идентификатор записи основной сущности, с которой связаны записи в текущей привязке.
Добавить пользовательскую структуру для привязки объекта
- Создайте схему Исходный код (Source code). Для создания схемы воспользуйтесь статьей Разработка конфигурационных элементов.
-
Создайте класс сервиса.
- В дизайнере схем добавьте пространство имен Terrasoft.Configuration.
- Создайте класс. Шаблон названия класса: [НазваниеСущности]SchemaDataBindingStructureObtainer (например, ProductSchemaDataBindingStructureObtainer). По указанному шаблону будет выполняться поиск классов при определении используемой реализации получателя (компонент Obtainer).
- В качестве родительского класса укажите класс BaseSchemaDataBindingStructureObtainer.
-
Добавьте пользовательскую реализацию метода интерфейса ObtainStructure(). В этом методе сформируйте и верните необходимую структуру сущностей.
- Опубликуйте схему исходного кода.
Вызвать автоматическую привязку данных
Автоматическую привязку данных можно вызвать из front-end или из back-end части.
Вызвать автоматическую привязку данных из front-end части
- Вызовите сервис генерации привязок.
-
Установите настройки для выполнения генерации привязок.
Способы установки настроек для генерации привязок:
-
Передайте параметры.
- Пакет для генерации привязки.
- Название сущности.
- Перечень идентификаторов для привязки.
- Передайте фильтр.
-
Ниже представлен пример вызова автоматической привязки данных из front-end части с помощью параметров.
Ниже представлен пример вызова автоматической привязки данных из front-end части с помощью фильтра.
Вызвать автоматическую привязку данных из back-end части
- Создайте экземпляр класса SchemaDataBindingController.
-
Вызовите метод GenerateBindings, в который передайте:
- Идентификатор пакета.
- Название сущности.
- Перечень идентификаторов для привязки.
Ниже представлен пример вызова автоматической привязки данных из back-end части.