Creatio development guide
PDF
Это документация Creatio версии 7.16.0. Мы рекомендуем использовать новую версию документации.

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 с внешними приложениями и системами. Примеры системных сервисов:

Также в 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 собирает информацию о том, что в пакетах есть подготовленные библиотеки и сразу же подключает их в приложение. Подробнее о создании пакета-проекта можно узнать из статьи "Разработка исходного кода в файловом контенте (пакет-проект)".

Обучающее видео

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?