Back-end (C#)

Основы

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

Смотрите также