Слой бизнес-компонент
Слой Business Components в OERA представляет собой бизнес-логику приложения, которая используется для предоставления информации Клиентам (слои Presentation и Enterprise Services). Именно здесь вы определяете, как ваши варианты использования реализуются конкретными функциональными возможностями в приложении.
В слое Business Components используются следующие основные строительные блоки:
- Business Entities
- Business Tasks
- Business Workflows
Существует ещё один элемент – Service Interfaces, который используется для того, чтобы представить каждый из строительных блоков Business Components в качестве сервиса.
Business Entity
Прикладной компонент Business Entity (бизнес-сущность) определяет бизнес-логику вокруг наборов данных *, представляющих интерес для одного или нескольких вариантов использования приложения. Каждая бизнес-сущность может получать доступ к другим бизнес-сущностям. Кроме того, бизнес-сущность подключается к бизнес-данным с помощью соответствующей части слоя Data Access. Если быть точным, то между бизнес-сущностью и кодом слоя Data Access существует отношение один к одному (1:1).
Пример. Бизнес-сущность OrderEntity может получить доступ к бизнес-сущности с именем OrderDetailEntity. Бизнес-сущность OrderEntity также имеет доступ к соответствующему Data Access коду – OrderDA.
* Большинство бизнес-данных реализовано с помощью ABL DataSets
Бизнес-сущность может иметь разнообразные функциональные возможности, например,
- Проверка данных.
- Управление изменениями в данных.
- Исполнение бизнес-логики.
- Поддержка транзакций.
Доступ к бизнес-сущности может осуществляться из разных слоёв OERA. Бизнес-сущность предоставляет необходимые интерфейсы для доступа к её данным и бизнес-логике. Такой подход более удобен, чем реализовать одно и тоже описание данных и одинаковую бизнес-логику одновременно в разных частях приложения. В итоге, в случае изменения требований к бизнес-приложению, вам достаточно внести соответствующие корректировки только в одном месте.
Business Task
Компонент Business Task (бизнес-задача) выполняет оркестровку сервисного запроса, который охватывает множество бизнес-сущностей. Некоторыми из обязанностей бизнес-задачи могут быть:
- Transaction scoping
- Координация изменений между различными бизнес-сущностями
- Исполнение бизнес-логики
- Завершение или отмена задачи
К бизнес-задачам могут иметь доступ компоненты Business Workflow, а также слои Presentation и Enterprise Services. Доступ осуществляется только через компонент Service Interface.
Business Workflow
Компонент Business Workflow * (далее, бизнес-процесс) – это часть приложения, которая использует множество бизнес-задач для реализации варианта использования приложения. Обычно работа бизнес-процесса растянута во времени, и включает в себя несколько участников. Участниками бизнес-процесса могут быть конечные пользователи или системы. Бизнес-процесс содержит специальную логику для управления порядком выполнения бизнес-задач и их статусом, например, завершилась ли бизнес-задача успешно или нет. Кроме того, бизнес-процесс может стартовать другие бизнес-процессы.
Доступ к бизнес-процессам может осуществляться из слоёв Presentation и Enterprise Services. Любой доступ к бизнес-процессу осуществляется через Service Interface. Также через Service Interface сам бизнес-процесс получает доступ к бизнес-сущностям и бизнес-задачам.
* В OpenEdge для упрощения реализации бизнес-процессов вы можете использовать OpenEdge BPM.
Service Interface
Компонент Service Interface обеспечивает доступ из прочих частей приложения к конкретным бизнес-сущностям, задачам и процессам. При этом некоторые компоненты слоя Business Components могут получать доступ к бизнес-сущностям напрямую без использования Service Interface. Из слоёв Presentation и Enterprise Services доступ к Service Interface осуществляется с помощью сервисных адаптеров (Service Adapter), о которых вы узнаете немного позже.
Фактически, Service Interface определяет, как слои OERA получают доступ к функциональности слоя Business Component через сервисы. Этот компонент определяет имя сервиса и типы параметров необходимых для запроса к сервису. Например, если у вас есть бизнес-сущность с именем CustomerEntity, то у вас может быть определено два компонента Service Interface для получения данных о покупателе, один, который запрашивает в качестве параметра имя покупателя, а другой в качестве параметра запрашивает ID покупателя.
При использовании Service Interface, в случае изменений требований к клиентской части, вам достаточно изменить схему сопоставления данных в интерфейсе сервиса без необходимости изменения бизнес-компонент. Service Interface также предоставляет специальные места для подключения «хуков» * к сервисам из общей инфраструктуры (Common Infrastructure) так, чтобы они срабатывали последовательно и, в большинстве случаев, автоматически.
* Хук (hook; этот термин также часто переводят как “ловушка”, “фильтр” или “перехватчик”) – это точка в некоем механизме, в которой приложение может внедрить подпрограмму и, в результате, либо изменить поведение механизма без изменения его ядра, либо контролировать его работу – хуки могут быть использованы для выполнения самых различных задач.