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