слой представления (view) — описывает пользовательский интерфейс приложения (веб-клиент, толстый клиент или мобильный клиент);
слой управления (controller) — блок управления для навигации в веб-приложении;
слой модели (model) — реализует модель данных для обеспечения согласованной работы с данными для слоёв управления и представления;
Business Services-слой — инкапсулирует доступ к данным из различных источников и бизнес-логику (data services).
Связывание данных для слоёв представления и управления происходит в модельном слое. В основном оно осуществляется двумя видами компонентов — элементами управления данными (data controls) и элементами привязки данных (data bindings), которые описываются метаданными.
Поддерживаемые технологии
Базируясь на MVC-архитектуре, Oracle ADF может поддерживать любую комбинацию следующих технологий:
Открытаяинтегрированная среда разработкиJDeveloper обеспечивает графический интерфейс для разработки приложений с использованием ADF. Oracle также предлагает Eclipse-базированный инструментарий для ADF в Oracle Enterprise Pack For Eclipse.
Oracle ADF Mobile — гибридный фреймворк для мобильной разработки, обеспечивает создание приложений как для iOS-, так и для Android-устройств. Кодирование выполняется на языке Java. UI-слой может быть разработан с использованием набора компонентов (AMX), которые генерируют HTML5-интерфейс пользователя. Кроме того, Oracle ADF Mobile может включать локальные HTML5-страницы и удалённый HTML-контент, созданный на других серверах.
Oracle ADF Mobile включает в себя слой контроллера на основе ADF-TaskFlow-концепций, а также поддержку ADF-связывания (binding) для доступа из пользовательского интерфейса к любым сервисам. Oracle ADF Mobile поддерживает взаимодействие с функциями мобильных устройств, как GPS, адресная книга, SMS и многое другое.
Компоненты
ADF Faces — библиотека компонентов графического интерфейса, созданная как расширение Apache MyFaces Trinidad. Компоненты пользовательского интерфейса могут быть обновлены в браузере технологиями AJAX или Server Push без выполнения нового HTTP-запроса. ADF-Faces-фреймворк поддерживает частичную загрузку страниц (partial page rendering, PPR), потоковую передачу данных (streaming), ADF-привязку данных (binding), серию оконных элементов управления (диалоги, всплывающие окна, меню), drag-and-drop-функции. Реализовано полное JavaScript API. Также поддерживаются шаблоны, настройка посредством CSS, специализированный язык выражений (expression language). Компоненты могут быть развёрнуты в любых Java-EE-совместимых сервлет-контейнерах. Данные хранятся на клиентской стороне в DOM, а на серверсной — как дерево в памяти (in-memory tree). Визуализация обеспечивается для различных оконечных устройств (мобильных устройств, браузеров).
ADF Task Flow — компонент слоя управления, расширяющий контроллер JSF многократно используемыми компонентами управления (task flow components).
ADF Model — ядро Oracle ADF, обеспечивающее абстракцию между слоями бизнес-сервисов и пользовательского интерфейса. Впервые была представлена с Oracle JDeveloper 9.0.5 (до этого разработчик был сам ответственен за связи между уровнем представления и бизнес-службами, например, нужно было использовать JSP-теги для подключения текстового поля к атрибуту бизнес-службы). Основано на спецификации JSR 227. ADF Model обеспечивает единый интерфейс программирования для различных бизнес-служб — веб-сервисов, Enterprise JavaBeans, Java, JDBC и других. При более высокой внутренней сложности эта архитектура имеет ряд преимуществ:
разработчики представления могут сосредоточиться на разработке пользовательского интерфейса, не зная особенностей бизнес-служб;
бизнес-сервис может быть заменён независимо от графического интерфейса — необходимы только соответствующие коррективы в ADF Model;
все приложения используют один и тот же интерфейс прикладного программирования (API) и один тот же формат метаданных для описания привязки данных.
Разработчик бизнес-сервиса реализует так называемые элементы управления данными (data controls), в которых реализуются необходимые методы, предоставляемые для слоёв представления и управления. Разработчик представления связывает эти элементы с компонентами графического интерфейса и, таким образом, создаёт так называемые привязки данных (data binding). Для определения привязок используется синтаксис JSTL специализированного языка выражений. Oracle ADF обеспечивает для распространённых технологий бизнес-служб предопределённые реализации.
ADF Business Components (ADF BC) — интерфейс доступа к данным реляционной базы данных (persistence layer) с соответствующими транзакционными и блокировочными механизмами. Кроме того, данные компоненты обеспечивают возможность реализации управляемой событиями модели (event-driven model). ADF-BC-объекты содержат опорные точки (hook points) для инъекции пользовательского Java-кода. ADF BC предоставляют переписываемые методы, которые могут изменить поведение приложения, например, до и после выполнения операции доступа к данным, commit, создания новой записи. К наиболее важным типам ADF BC относятся:
сущности (entity objects);
представления (view objects);
ассоциации (association) и ссылки (viewlink);
модули приложений (application modules);
тестеры бизнес-компонентов.
Сущность как правило соответствует таблице реляционной базы данных, в ней определяются типы данных атрибутов таблицы, правила проверки на тип данных, первичные ключи и дополнительные вспомогательные конструкции (бизнес-логики) для записи данных в целевую таблицу, то есть, сущность служит основным средством доступа и манипуляций (CRUD-операций) с соответствующей таблицей базы данных.
Представление можно понимать как некоторую структуру данных, связанную с одной или несколькими сущностями. Представление может быть основано на сущности (подмножестве её атрибутов) или SQL-запросе. Хотя некоторые возможности проверки корректности доступны для представлений, на практике рекомендуется инкапсулировать всю логику проверки в сущностях, потому что эта логика кешируется внутри сущности для всех представлений на её основе (это похоже на нормализацию на уровне базы данных).
Ассоциации описывают отношения между сущностями и могут рассматриваться как реализации внешних ключей в таблицах базы данных. Ссылки указывают на взаимосвязь между представлениями и определяют условия соединения, подобно тому, как это делается в SQL. Ссылки могут базироваться на атрибутах или ассоциациях.
Модуль приложения объединяет набор представлений и служит как средство управления транзакциями; с точки зрения конечного пользователя возможности транзакций поставляются именно модулями приложения.
Тестеры — средства тестирования бизнес-компонент и модели данных без обращения к пользовательскому интерфейсу.
Важным средством декларативной разработки корпоративных приложений с использованием ADF являются службы метаданных (Metadata Services, MDS). С их помощью приложения приобретают свойство мультиарендности и приспосабливаемости к индивидуальным параметрам (пользователю, его роли). Метаданные для каждого значения параметра могут храниться в файлах или в СУБД. Адаптация возможна вниз лишь до уровня ADF-компонентов. Обычно создается базовый набор метаданных (базовый документ) в XML-представлении. Этот базовый документ может быть заменен для каждого частного случая новым документом, также находящимся в хранилище.
История
Некоторые компоненты Oracle ADF были опубликованы уже в 1999 году, как, например, ADF Business Components — сначала под названием «JBO» (Java Business Objects), а затем — «BC4J» (Бизнес-компоненты для Java). Современный слой связывания (binding) данных был введен в составе JDeveloper 9.0.5.
В июне 2006 года Oracle передал большую часть библиотеки компонентов ADF Faces (JSF реализация Oracle, с более чем 100 компонентами) в проект с открытым кодом MyFaces Trinidad[англ.].
Литература
Frank Nimphius und Lynn Munsinger: Oracle Fusion Developer Guide, ISBN 0-07-162254-3.
Duncan Mills, Peter Koletzke , Avrom Roy-Faderman: Oracle JDeveloper 11g Handbook — A Guide to Oracle Fusion Web Development, ISBN 0-07-160238-0.
Ronald Grant: Quick Start Guide to Oracle Fusion Development, ISBN 0-07-174428-2.
Sten E. Vesterli: Oracle ADF Enterprise Application Development — Made Simple, ISBN 1-84968-188-0.
Nick Haralabidis: Oracle JDeveloper 11g R2 Cookbook, ISBN 1-84968-476-6.