Построение пакетов в соответствии с задачами предметной области приводит нас к архитектурной структуре, отражающей реальные коммерческие задачи, а не технические подробности.
Бизнес-сценарии описывают всю логику, необходимую для выполнения задач предприятия, используя для этого содержимое модуля. Они играют роль отправной точки в работе приложения. Бизнес-сценарии реализуются на границах системы. Корпоративные системы предоставляют коммуникационные интерфейсы для связи с внешним миром в основном через веб-сервисы и клиентские веб-интерфейсы, которые вызывают соответствующий бизнес-функционал.
Работу над новым проектом имеет смысл начать с логики предметной области, не заботясь о границах (контуре) системы и других деталях технической реализации. Это означает, что сначала разрабатывается все содержимое предметной области, проектируются типы, зависимости и задачи, а потом создаются их прототипы в виде кода. Как мы увидим в этой главе, фактическая логика предметной области реализуется в основном в виде обычного кода Java. Первоначальная модель может быть самодостаточной и тестироваться исключительно с использованием тестов на уровне кода. После того как будет построена довольно полная модель предметной области, можно переключиться на оставшиеся технические проблемы, выходящие за пределы модуля бизнес-логики, такие как доступ к базам данных и внешним системам, а также конечные точки системы.
В приложении Java EE контур реализуется с применением управляемых объектов — Enterprise JavaBeans (EJB) или Contexts and Dependency Injection for Java (CDI). В статье «EJB и CDI: общее и различия» мы рассмотрим, чем эти технологии отличаются одна от другой и в чем их назначение.
Для сложных бизнес-сценариев иногда создают делегатов, реализованных в виде управляемых объектов CDI или EJB в зависимости от требований. Эти делегаты находятся в пакете управления. Сущности реализуются в виде POJO, иногда с описаниями, чтобы интегрировать такие технические функции, как отображение базы данных или сериализация.