Логические уровни
Glossary Item Box
С точки зрения логических уровней взаимодействия архитектура системы bpm'online может быть представлена следующим образом (Рис. 1):
Рис. 1. — Логические уровни взаимодействия
1. База данных
Это уровень физического хранения данных. В базе данных хранятся не только пользовательские данные, но и настройки приложения, а также настройки прав доступа к приложению.
Основные функции базы данных:
- хранение данных;
- управление данными.
Физические объекты базы данных — это:
- таблицы;
- представления;
- хранимые процедуры;
- индексы;
- триггеры в таблицах.
Как правило, в процессе разработки на платформе bpm'online не возникает необходимости работы с объектами базы данных напрямую. В системе есть инструменты, которые позволяют работать с данными непосредственно из интерфейса системы.
Однако на уровне базы данных с помощью представлений и хранимых процедур можно реализовать свою бизнес-логику и вызывать ее в своих конфигурационных элементах.
Существуют задачи, которые логичнее и быстрее реализуются именно на уровне базы данных, например, настройка пользовательского правила поиска дублей.
2. Серверное ядро
Это набор библиотек, которые реализуют базовую функциональность приложения. Серверные библиотеки реализованы на языке C# с использованием классов платформы .NET Framework.
Серверное ядро является неизменяемым компонентом системы. То есть у разработчика есть возможность создавать экземпляры серверных классов и использовать функциональность серверных библиотек, но при этом нельзя вносить изменения в эти классы и библиотеки.
Основные компоненты серверного ядра:
- ORM-модель данных и методы работы с ней. В большинстве случаев для доступа к данным рекомендуется использовать именно объектную модель, хотя прямой доступ к базе данных также реализован в компонентах серверного ядра.
- Пакеты и механизм замещения.
- Библиотеки серверных элементов управления. К таким элементам управления относятся страницы, построенные на технологии ASP.NET, формирующиеся на сервере, например, страницы раздела конфигурация.
- Системные веб-сервисы.
- Функциональность основных дизайнеров и системных разделов.
- Библиотеки для интеграции с внешними сервисами.
- Движок бизнес-процессов (ProcessEngine). Это важный элемент системы, который умеет выполнять настроенные в виде диаграмм алгоритмы.
3. Клиентское ядро
Основной задачей этого уровня является обеспечение работы клиентских модулей. Классы клиентского ядра реализованы на языке JavaScript с использованием различных фреймворков. Они предназначены для создания пользовательского интерфейса и реализации других бизнес-задач на стороне браузера.
Основные компоненты клиентского ядра:
- Внешние библиотеки клиентских фреймворков. Например, библиотека RequireJS, предназначенная для реализации механизма асинхронной загрузки клиентских модулей, библиотека ExtJs, предназначенная для реализации клиентского интерфейса.
- Песочница (sandbox) — специальный компонент клиентского ядра, предназначенный для обеспечения взаимодействия между различными клиентскими модулями путем обмена сообщениями.
- Клиентские модули — файлы на языке JavaScript, на которых реализована функциональность основных объектов системы.
4. Конфигурация
Конфигурация — это набор функциональности, который доступен пользователям конкретного рабочего пространства, а именно:
- серверная логика;
- автогенерируемые классы, являющиеся продуктом работы настроек системы;
- клиентская логика — страницы, кнопки, действия, отчеты, бизнес-процессы и прочие настраиваемые конфигурационные элементы.
Конфигурация — это легко изменяемая часть системы. Конкретную конфигурацию формируют такие типы элементов:
- бизнес-объекты — сущности, предназначенные для хранения данных, которые объединяют таблицу в базе данных и класс на серверной стороне;
- бизнес-процессы — настраиваемые элементы, которые представляют собой визуальный алгоритм пользовательских действий;
- клиентские модули;
- серверные страницы, которые иногда используются в качестве карточек редактирования записей в справочниках (старая функциональность).
Все элементы конфигурации сгруппированы в пакеты.
Пакет — это конечный набор функциональности, который может быть добавлен в конфигурацию и может быть удален.
Окончательная функциональность системы формируется набором пакетов в конфигурации (рис. 2).
Рис. 2. — Конфигурация в bpm'online