понедельник, 21 ноября 2011 г.

Основные принципы создания веб-формы. Создание проекта

После запуска Jdeveloper щелкаем правой кнопкой мыши на “Applications” и выбираем
New OA Workspace. Таким образом, мы создаем рабочую область, в которой будут содержаться OA Framework проекты. По умолчанию автоматически создается OAF Project




Шаг 1. Указываем имя проекта и пакет по умолчанию, в котором будут создаваться новые объекты. По соглашению, принятому при разработке приложений на OA Framework, стандартные приложения располагаются относительно $JAVA_TOP в каталогах oracle.apps. При разработке своих кастомных приложений, их необходимо помещать в <3rd party identifier>.oracle.apps. Например: mycompany.oracle.apps. или xx.oracle.apps. После apps через “.” указывается код приложения, для которого предназначена данная разработка. Например: .per. – Модуль Human Resources в OEBS.

Затем идет произвольное имя приложения и наконец указываем “webui”. В примере, на иллюстрации выше пакет xx.oracle.apps.per.xx_xxxx_demo.webui означает следующее: xx – нестандартное приложение, расширение. oracle.apps – остается всегда неизменным. per – разработка делается для модуля Human Resources. xx_xxxx_demo – имя разработки. И webui – остается неизменным.


Шаг 2. Указываем, использовать ли соединение с БД при проектировании приложения. Требуется для создания Entity Object, View Object и т.д., когда необходимо указывать таблицы, проверять SQL запросы на корректность синтаксиса, смотреть планы разбора и .т.д.


Если объект соединения не создан и нам требуется его использовать, нажимаем кнопку “New” и создаем объект.






Шаг 3. На данном шаге мы должны указать DBC File, который мы получили выше, логин и пароль для входа в OEBS, и полномочия, под которыми мы будет запускать наше приложение. Для того, чтобы определить код приложения и ключ полномочий, под которыми мы в данный момент работаем, нужно внизу страницы нажать “О данной странице” и перейти на вкладку “Контекст страницы”. В полях Приложение и Полномочия будут указаны необходимые нам данные. В примере на иллюстрации ниже: ID приложения – 242. Application Short Name – AMW. Название приложения – Внутренний контроль.
ID полномочий – 50207. RESPONSIBILITY_KEY – AMW_SSW_NEW_RESP. Имя полномочий – Oracle Internal Controls Manager – суперпользователь (Веб).


На иллюстрации ниже ApplicationShort Name – PER – Это короткое имя модуля Human Resources в OEBS и GLB_SHRMS_MANAGER – Ключ полномочий “Глобальный суперпользователь – руководитель СУПЕР”. Для получения списка полномочий и ключей используем следующий запрос: select v.RESPONSIBILITY_NAME, v.RESPONSIBILITY_KEY from fnd_responsibility_vl v. Для того, чтобы получить имена полномочий на русском языке, перед запросом выполняем команду alter session set nls_language=RUSSIAN.


Проект создан. В следующей статье создадим простейшую OAF страницу

Необходимый инструментарий разработки и его первоначальная настройка

Для разработки OAF приложений в OEBS R12 используется специальная сборка Oracle JDeveloper 10g под названием Oracle JDeveloper 10G OA Extension. Сборки зависят от версии патча OEBS, поэтому для начала необходимо определить версию OA Framework окружения, для которого будет осуществляться разработка.

Заходим в ОЕБС и на главном меню внизу страницы слева нажимаем ссылку “О Данной Странице”. Если ссылки нет, то необходимо назначить Вашему пользователю профиль “БОП:Диагностика” (FND:Diagnostics), устанавливаем значение “Y” на уровне пользователя.

После перехода на экран “О Данной Странице” выбираем вкладку “Компоненты технологии”. Нас интересует поле “Структура OA”


Переходим по ссылке https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=HOWTO&id=416708.1 и находим нужную нам сборку JDeveloper.


Скачиваем архив по ссылке и распаковываем его в папку на диске. Желательно без пробелов в именах путей ( Например: C:/JDev10GR12 ).

Устанавливаем переменную окружения JDEV_USER_HOME. В данном каталоге будут создаваться проекты JDeveloper.


Теперь, для того, чтобы JDeveloper смог устанавливать связь с OEBS и запускать приложения, нам необходимо взять с сервера FND DBC файл. Есть несколько способов. Если есть доступ к файловой системе сервера приложений, то файл можно скопировать непосредственно из файловой системы. Файл лежит в каталоге $FND_SECURE. Файлов может быть несколько. Чтобы определить, какой именно файл нам нужен, заходим в OEBS и в окне “О данной странице” выбираем вкладку “Системные свойства Java”. Там ищем параметр DBCFILE, который указывает на каталог и файл, который нам нужен и забираем этот файл. На DBC файл так же указывает поле “База данных” во вкладке “Контекст страницы”.



Если нет доступа к файловой системе, этот файл можно получить следующим образом. Заходим на домашнюю страницу OEBS, например путь в строке браузера выглядит так: http://host:port/OA_HTML/OA.jsp?OAFunc=OAHOMEPAGE, меняем OA.jsp?OAFunc=OAHOMEPAGE на jsp/fnd/aoljtest.jsp и переходим по новой ссылке. Ссылка теперь имеет вид http://host:port/OA_HTML/jsp/fnd/aoljtest.jsp Вводим параметры подключения к БД данного окружения (например, берем параметры из TNS_NAMES.ora) и нажимаем кнопку test.


После успешного подключения внизу страницы переходим по ссылке “Enter AOL/J Setup Test”


После перехода, видим 2 окна, слева выбираем ссылку “Locate DBC File” и затем в правом окне отображается содержимое DBC файла. Создаем файл и копируем в него текст между строками “DBC file found, content:” и “Next (Verify settings in DBC file)”. Копируем полученный файл в каталог: куда_распаковали_архив\jdevhome\jdev\dbc_files\secure.


Создаем ярлык на рабочем столе для быстрого запуска JDeveloper. Путь к исполняемому файлу куда_распаковали_архив\jdevbin\jdev\bin\jdevw.exe

Запускаем JDeveloper и в меню Tools -> Embedded OC4J Server Preferences -> Global -> Startup устанавливаем “Default Local IP Address”


В следующий раз рассмотрим создание простой формы, работу с БД и перенос простой формы на рабочее окружение

воскресенье, 20 ноября 2011 г.

Что происходит при запросе OAF страницы

Когда браузер обращается к OAF странице, http слушатель(listener) получает запрос и перенаправляет его серверу приложений для обработки(в oebs r12 используется OC4J), OA.jsp servlet, являющийся центральным контроллером начинает обработку запроса. OA.jsp, по имени страницы, читает метаданные страницы из MDS репозитория, для того, чтобы создать иерархию элементов страницы (web beans). Для каждого элемента, с которым связан контроллер, OA Framework вызывает метод processRequest() для инициализации свойств элементов страницы. Когда обработка завершена, OA Framework передает web bean иерархию в UIX framework, который генерирует HTML и отправляет его браузеру. Когда браузер инициирует отправку данных посредством вэб формы (например, пользователь нажимает кнопку), OA Framework при необходимости пересоздает иерархию (иерархия кэшируется между запросами к страницам, и необходимость ее пересоздания возникает только в исключительных ситуациях), и затем вызываются методы processFormRequest() для обработки событий. Когда выполнение кода обработчиков завершено, HTML страницы снова создается и отправляется пользователю

Обзор основных компонентов Oracle Application Framework

Уровень MODEL
BC4J : Business Components for Java

BC4J это набор java библиотек и xml файлов, описывающих объекты, которые отражают объекты базы данных, такие как view, tables и связи между ними, например View Objects (VOs), Entity Objects (EOs), View Links, Entity Associations. Так же в BC4J входит такой объект как Application Module (AM).
Все BC4J компоненты на сервере приложений располагаются в каталогах относительно пути, на который указывает переменная окружения $JAVA_TOP, например:

Такие объекты как Application Module, View Object, View Link для приложения project, который принадлежит модулю pa должны располагаться в каталоге $JAVA_TOP/oracle/apps/pa/project/server/
Controller должен находится в каталоге $JAVA_TOP/oracle/apps/pa/project/webui/
Entity Object должен находиться в каталоге $JAVA_TOP/oracle/apps/pa/project/schema/server/

View Object
Данный объект хранит результат выполнения SQL запроса. Предоставляет механизмы для работы с данными и строками. Не предназначен для внесения изменений в таблицы БД, служит только для отображения данных. View Object может быть основан на SQL запросе, на Entity Object, а так же может содержать произвольные столбцы и заполняться программно произвольными данными (например, получаем список файлов в директории и заполняем VO именами файлов, чтобы затем отобразить набор данных пользователю).

Entity Object
Объект представляет собой связь с таблицей БД или использует процедуры PL/SQL для изменения данных (PL/SQL based entity). Если нам необходимо не только отображать данные, но и изменять их, мы должны использовать Entity Object. Каждое поле таблицы ставится в соответствие "Entity Attribute".

Application Module
Данный объект является контейнером для BC4J объектов, а так же AM предоставляет доступ к соединению БД для выполнения команд БД, таких как INSERT, UPDATE, выполнения хранимых объектов БД и т.д., предоставляет доступ к OEBS окружению, а так же позволяет фиксировать или откатывать транзакции.


Уровень VIEW

Страница (Page)
Страница находится на уровне VIEW в шаблоне проектирования MVC, представляет собой xml документ и является набором регионов (header(заголовок), table(таблица) и т.д. ) и каждый регион может содержать как элементы интерфейса, такие как field(поля ввода), button(кнопки), checkbox(триггеры вкл/выкл) так и другие регионы.

Регион (Region)
Регион так же как и страница находится на уровне VIEW в шаблоне проектирования MVC и представляет собой xml документ, который содержит как элементы пользовательского интерфейса, так и другие регионы. Отличие региона от страницы в том, что один регион можно использовать во множестве страниц. Для того, чтобы использовать регион, находящийся в репозитории, на своей странице необходимо создать элемент необходимого типа, например table (region2 на иллюстрации ниже), затем в Property Inspector для region2 выбрать свойство Extends и нажать … Открывается окно, в котором выбираем нужный нам регион, находящийся в репозитории MDS.

Обратите внимание, что свойства импортированного региона изменять нельзя

View реализуется с помощью технологии UI XML (UIX). UIX использует XML для описания компонентов и их иерархии для страницы. UIX Framework преобразовывает web bean иерархию в HTML, который затем отображается в браузере. Метаданные, используемые для описания пользовательского интерфейса хранятся в репозитории, который называется Meta-Data-Service(MDS) в БД. В репозиторий загружаются страницы, регионы и персонализации страниц. Репозиторий и работа с ним более детально будут рассмотрены позднее, при описании переноса приложения на рабочее окружение.

Уровень CONTROLLER

Controller

Обычный java класс, являющийся подклассом oracle.apps.fnd.framework.webui.OAControllerImpl. Присоединяется к регионам на страницах и служит для обработки событий, происходящих на страницах, таких как нажатие на кнопку или вызов списка значений. Имеет всего 3 метода:
1. ProcessRequest – Срабатывает при загрузке страницы, перед отображением страницы пользователю.
2. ProcessFormData – Обычно не используется. Служит для передачи параметров формы при POST запросе в соответствующие BC4J.
3. ProcessFormRequest – Обработка событий. Наиболее часто используемый метод.

суббота, 19 ноября 2011 г.

Данный блог создавался для накопления информации и обмена опытом по Oracle Applications Framework. В примерах используется Jdeveloper 10G и окружение OEBS R12.