Разработка решений в Creatio предполагает разные уровни кастомизации в зависимости от сложности или типа бизнес-задачи. При этом следует учитывать, что уровень ядра является неизменяемым компонентом системы, а разработка в Creatio реализуется на уровне конфигурации.
Кастомизация приложений на уровне back-end реализуется в направлениях работы с данными, веб-сервисами, настройкой бизнес-логики объектов и т. д.
Для этих целей Creatio предоставляет набор различных инструментов — от разработки схемы [ Исходный код ] ([ Source code ]) или [ Действие процесса ] ([ User Task ]) во встроенной IDE до создания завершенных пользовательских проектов, подключаемых к приложению в качестве внешних библиотек.
Направления back-end разработки
На уровне back-end реализуются следующие направления разработки:
- ORM-модель данных и методы работы с ней.
- Реализация прямого доступа к базе данных.
- Создание и использование системных веб-сервисов.
- Настройка интеграции с внешними сервисами.
- Работа с компонентами системы и микросервисами.
- Расширенная настройка бизнес-процессов и встроенных процессов объектов приложения.
- Разработка бизнес-логики объектов.
ORM-модель данных и прямой доступ к базе данных
ORM-модель данных реализована в системе классами пространства имен Terrasoft.Core.Entities :
- Terrasoft.Core.Entities.EntitySchemaQuery — построение запросов выборки записей из таблиц базы данных с учетом прав доступа текущего пользователя.
- Terrasoft.Core.Entities.Entity — доступ к объекту, который представляет собой запись в таблице базы данных.
В большинстве случаев для доступа к данным рекомендуется использовать именно объектную модель, хотя прямой доступ к базе данных также реализован в back-end компонентах ядра.
Прямой доступ к базе данных предоставляет группа классов back-end ядра приложения из пространства имен Terrasoft.Core.DB:
- Terrasoft.Core.DB.Select — построение запросов выборки записей из таблиц базы данных.
- Terrasoft.Core.DB.Insert — построение запросов на добавление записей в таблицы базы данных.
- Terrasoft.Core.DB.InsertSelect — построение запросов на добавление записей в таблицы базы данных.
- Terrasoft.Core.DB.Update — построение запросов на изменение записей в таблице базы данных.
- Terrasoft.Core.DB.Delete — построение запросов на удаление записей в таблице базы данных.
- Terrasoft.Core.DB.DBExecutor — возможность создания и выполнения сложных запросов (например, с несколькими вложенными фильтрациями, различными комбинациями join-ов и т. д.) к базе данных.
Веб-сервисы
Сервисная модель Creatio предоставляет базовый набор веб-сервисов, с помощью которых может быть организована интеграция Creatio с внешними приложениями и системами.
Примеры системных сервисов:
- odata — обмен данными с Creatio по протоколу OData 4.
- ProcessEngineService.svc — запуск бизнес-процессов Creatio из внешних приложений.
Кроме системных, в Creatio реализованы конфигурационные веб-сервисы, предназначенные для вызова из клиентской части приложения.
Дополнительно к базовым сервисам разработчик имеет возможность создать пользовательский веб-сервис, предназначенный для решения узких бизнес-задач конкретного проекта.
Внешние сервисы
В ядре приложения реализованы классы, обеспечивающие интеграцию с внешними сервисами. Например, пространство имен Terrasoft.Social предоставляет возможность интеграции с различными социальными сетями.
Компоненты системы и микросервисы
В ядре приложения реализованы классы, предоставляющие возможности для работы с компонентами системы и микросервисами. Например, пространство имен Terrasoft.Sync ядра приложения предоставляет классы встроенного механизма синхронизации с внешними хранилищами данных (Sync Engine), который позволяет создавать, изменять и удалять Entity в системе на основании данных из внешних систем и экспортировать данные во внешние системы. Процесс синхронизации осуществляется с помощью класса SyncAgent.
Бизнес-процессы и встроенные процессы объектов
Back-end разработка может потребоваться для настройки сложных бизнес-процессов (Элемент процесса [ Задание-сценарий ] ([ Script-task ])) либо для создания пользовательских повторяющихся операций бизнес-процесса (Конфигурационная схема [ Действие процесса ] ([ User Task ])).
Встроенные процессы объекта могут быть настроены как при помощи no-code инструментов, так и с использованием back-end разработки. Использование программного кода позволяет более гибко настроить поведение объекта в случае наступления определенных событий.
Бизнес-логика объектов
В Creatio есть возможность разрабатывать бизнес-логику объектов без использования событийных подпроцессов. Для этого достаточно создать класс-наследник базового ядрового класса Terrasoft.Core.Entities.Events.BaseEntityEventListener и декорировать его атрибутом EntityEventListener с указанием имени сущности, для которой необходимо выполнить подписку событий. После чего можно переопределять методы-обработчики нужных событий.
Инструменты и утилитные возможности back-end разработки
Схема исходного кода
Основной возможностью back-end разработки является создание в пользовательском пакете схемы типа [ Исходный код ] ([ Source code ]).
Все изменения схемы, выполняемые в дизайнере, осуществляются в оперативной памяти. Чтобы изменения были сохранены на уровне метаданных схемы, схему следует сохранить. Для того чтобы изменения произошли на уровне базы данных, схему необходимо опубликовать.
Разработку схемы типа [ Исходный код ] ([ Source code ]) можно вести в файловой системе с использованием удобной IDE.
Конфигурирование бизнес-процессов
Включение специфической back-end логики в бизнес-процесс возможно с помощью программного кода, выполняемого элементом [ Задание-сценарий ] ([ Script-task ]).
Во время работы с бизнес-процессами в Creatio часто возникает необходимость выполнять однотипные операции. Для этих целей лучше всего подходит элемент [ Выполнить действие процесса ] ([ User task ]), для которого существует возможность выбрать наиболее подходящий в конкретной ситуации тип действия — [ Пользовательское действие ] ([ User task ]).
По умолчанию в системе доступно множество пользовательских действий, однако могут возникнуть ситуации, когда для выполнения определенного бизнес-процесса необходимо создать новое пользовательское действие.
Создать новое пользовательское действие можно с помощью конфигурационной схемы [ Действие процесса ] ([ User Task ]). В простой реализации действие процесса частично повторяет логику элемента процесса [ Задание-сценарий ] ([ Script-task ]), однако созданное однажды действие можно использовать многократно в разных процессах. А при внесении изменений в действие процесса, такие изменения сразу же будут применены ко всем процессам, в которых это действие использовалось.
Внешние библиотеки
В структуру пользовательского пакета могут быть включены внешние библиотеки, созданные пользователем. Это позволяет реализовать сложную логику, механизмы наследования, инкапсуляции при разработке специфического проектного решения.
Пакет-проект
Одним из инструментов Creatio для ускорения back-end разработки приложения является пакет-проект. Это пакет, который позволяет разрабатывать функциональность как обычный C#-проект. Новая функциональность в виде скомпилированной библиотеки и *.cs-файлов включается в файловый контент пакета. При старте или перезапуске приложения Creatio собирает информацию о том, что в пакетах есть подготовленные библиотеки и сразу же подключает их в приложение.