Общие сведения
Glossary Item Box
С точки зрения логических уровней взаимодействия архитектура системы Creatio может быть представлена следующим образом (рис. 1):
Рис. 1. — Логические уровни взаимодействия
Разработка решений в Creatio предполагает разные уровни кастомизации в зависимости от сложности или типа бизнес-задачи. При этом следует учитывать, что уровень ядра является неизменяемым компонентом системы, а разработка в Creatio реализуется на уровне конфигурации и базы данных.
База данных
Это уровень физического хранения данных. В базе данных хранятся не только пользовательские данные, но и настройки приложения, а также настройки прав доступа к приложению.
Как правило, в процессе разработки на платформе Creatio не возникает необходимости работы с объектами базы данных напрямую. В системе есть инструменты, которые позволяют работать с данными непосредственно из интерфейса системы.
Однако на уровне базы данных с помощью представлений и хранимых процедур можно реализовать свою бизнес-логику и вызывать ее в своих конфигурационных элементах.
Существуют задачи, которые логичнее и быстрее реализуются именно на уровне базы данных.
Ядро
Ядро является неизменяемой частью системы. Это набор библиотек, которые реализуют базовую функциональность приложения.
Back-end библиотеки реализованы на языке C# с использованием классов платформы .NET Framework. У разработчика есть возможность создавать экземпляры back-end классов и использовать функциональность back-end библиотек, но при этом нельзя вносить изменения в эти классы и библиотеки.
Основные back-end компоненты ядра:
- ORM-модель данных и методы работы с ней. В большинстве случаев для доступа к данным рекомендуется использовать именно объектную модель, хотя прямой доступ к базе данных также реализован в back-end компонентах ядра.
- Пакеты и механизм замещения.
- Библиотеки серверных элементов управления. К таким элементам управления относятся страницы, построенные на технологии ASP.NET, которые формируются на сервере, например, страницы раздела [Конфигурация] ([Configuration]).
- Системные веб-сервисы.
- Функциональность основных дизайнеров и системных разделов.
- Библиотеки для интеграции с внешними сервисами.
- Движок бизнес-процессов (ProcessEngine). Это важный элемент системы, который умеет выполнять настроенные в виде диаграмм алгоритмы.
Основной задачей front-end компонентов ядра является обеспечение работы клиентских модулей. Front-end классы ядра реализованы на языке JavaScript с использованием различных фреймворков. Они предназначены для создания пользовательского интерфейса и реализации других бизнес-задач на стороне браузера.
Основные front-end компоненты ядра:
- Внешние библиотеки клиентских фреймворков.
- Песочница (sandbox) — специальный компонент клиентского ядра, предназначенный для обеспечения взаимодействия между различными клиентскими модулями путем обмена сообщениями.
- Базовые модули — файлы на языке JavaScript, в которых реализована функциональность основных объектов системы.
Конфигурация
Конфигурация — это набор функциональности, который доступен пользователям конкретного рабочего пространства, а именно:
- Серверная логика.
- Автогенерируемые классы, являющиеся продуктом работы настроек системы.
- Клиентская логика — страницы, кнопки, действия, отчеты, бизнес-процессы и прочие настраиваемые конфигурационные элементы.
Конфигурация является легко изменяемой частью системы. Конкретную конфигурацию формируют такие типы элементов:
- Объекты — сущности, предназначенные для хранения данных, которые объединяют таблицу в базе данных и класс на серверной стороне.
- Бизнес-процессы — настраиваемые элементы, которые представляют собой визуальный алгоритм пользовательских действий.
- Клиентские модули.
Все элементы конфигурации сгруппированы в пакеты.
Пакет — это конечный набор функциональности, который может быть добавлен в конфигурацию и удален из нее.
Окончательная функциональность системы формируется набором пакетов в конфигурации (рис. 2).
Рис. 2. — Конфигурация в Creatio
Механизм пакетов Creatio основан на принципе открытости/закрытости ООП, согласно которому все сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для изменения. Это означает, что новая функциональность должна реализовываться путем добавления новых сущностей, а не путем изменения старых.
Любой продукт Creatio представляет собой конечный набор пакетов. Чтобы расширить или изменить функциональность системы, нужно установить пакет, в котором реализованы все необходимые изменения.
Пакеты Creatio условно можно разделить на два вида:
- Предустановленные пакеты. К таким относятся пакеты с базовой функциональностью (например, Base, NUI), пакеты, расширяющие функциональность системы (например, пакеты интеграции с 1С, телефонией и т.д.), а также пакеты, созданные сторонними разработчиками. Такие пакеты поставляются вместе с приложением или устанавливаются из zip-архивов как приложения marketplace.
- Пользовательские пакеты — пакеты, создаваемые пользователями системы. Они могут быть привязаны к хранилищу SVN.
Конфигурационные элементы предустановленных пакетов недоступны для изменения. Разработка дополнительной функциональности и модификация существующей выполняется исключительно в пользовательских пакетах.
Изменения существующей функциональности реализуются с помощью механизма замещения. Если возникает необходимость изменения поведения элемента базового пакета, то в пользовательском пакете создается новый элемент, унаследованный от предустановленного. У созданного пользовательского элемента устанавливается признак замещения родителя в иерархии. Все модификации, которые требуется применить к предустановленному элементу, реализуются в созданном замещающем элементе. В дальнейшем при обращении к предустановленному элементу система будет выполнять логику объекта, который его замещает.
Замещение одного и того же базового элемента можно выполнять в нескольких пользовательских пакетах. При этом конечная реализация замещающего элемента в скомпилированной конфигурации определяется иерархией пакетов, содержащих эти замещающие элементы.
Чтобы в одном пакете использовать функциональность другого пакета, необходимо указать зависимость от этого пакета.
В зависимом пакете расширяется или изменяется функциональность того пакета, от которого он зависит. Таким образом, строится иерархия зависимостей и пакетов, в которой пакеты более низкого уровня могут дополнять или изменять функциональность любого пакета выше по иерархии. Подробное описание иерархии пакетов и их зависимостях содержится в статье "Зависимости пакетов".
Полный список всех установленных в рабочее пространство пакетов отображается на вкладке [Пакеты] раздела [Конфигурация].
- Схемы — конфигурационные единицы системы, которые определяют либо новые, либо существующие конфигурационные элементы.
- Внешние сборки — сторонние библиотеки, которые необходимы для разработки и интеграции с внешними системами. После установки могут использоваться в схемах исходных кодов.
- SQL-скрипты — произвольные SQL-скрипты, которые выполняются в БД при установке пакета. SQL-скрипты могут использоваться для переноса пакета в другие конфигурации, если с ним связаны изменения в базе данных.
- Данные — записи разделов, значения справочников и системных настроек, которые разработаны в пакете. Могут понадобиться для переноса пакета на другие среды разработки, если с ним связаны определенные записи и значения базы данных.
Подробнее о работе с пакетами можно узнать из статьи "Работа с пакетами".
Функциональность, доступная для конфигурирования:
С помощью инструментов разработки в Creatio можно настроить приложение под решение конкретных бизнес-задач пользователя:
- Добавить новые или изменить существующие объекты системы, а также разделы, страницы и детали приложения.
- Создать или отредактировать бизнес-процессы.
- Реализовать необходимую бизнес-логику работы компонентов системы.
- Реализовать интеграционные решения с внешними приложениями.
Для разработки решений в Creatio могут использоваться следующие инструменты:
- Low-code и no-code инструменты (мастера разделов, страниц, процессов).
- Front-end разработка во встроенной или внешней IDE с использованием функциональности ядровых front-end компонентов (изменение бизнес-логики компонентов интерфейса, создание новых пользовательских компонентов).
- Back-end разработка во встроенной или внешней IDE с использованием функциональности ядровых back-end компонентов (обработка данных, реализация интеграционных решений, внутренняя пользовательская логика бизнес-процессов).
Смотрите также