пятница, 18 января 2013 г.

Создание Master-Detail формы в JDeveloper 11.1.1.6.0

          Создадим форму с таблицами, у которых имеется связь "Master-Detail".
   Будем использовать таблицы Dept и Emp из демонстрационной схемы Oracle  Scott(user:scott,password:tiger).
           Подразумевается что у вас уже установлена БД Oracle, Jdeveloper и вы  умеете создавать Entity Object(EO),View Object(VO),Application Module(AM),Link и Association.
Если нет, то вот ссылки на предыдущие сообщения блога:
Ссылки на пошаговые инструкции по установке Oracle Database,JDeveloper и Weblogic;
Создание простого приложения ADF в Jdeveloper.

- Создайте приложение "MyAppMD";

- Создайте соединение к демонстрационной схеме Scott;
- Создайте Бизнес компоненты EO(Dept,Emp), VO(DeptView,EmpView). Если вы создавали EO и VO c помощью "File-> New(или Ctrl+N)->ADF Business Components->Business components from Tables", то автоматически был создан ViewLink. Если нет, то выполните следующие действия:
 -Нажмите  правой кнопкой по DeptView и выберите "New View Link ..."
           Появится следующее окно, в котором в Name напишите "FKDeptnoLink" и нажмите "Next"

         
 В появившемся окне в "Select Source Attribute" раскройте VO DeptView и выделите поле Deptno, в "Select Source Attribute" раскройте EmpView и выберите  там Deptno.Нажмите "Add",а "Next".

           Нажмите "Finish".
           В нашем проекте появился новый объект ViewLink с название "FKDeptnoLink" который связывает два View объекта "DeptView",  "EmpView" по полю Deptno.
Далее заходим в AppModule во вкладку Data Model.Там из окна "Avaliable objects" перенесите "DeptView" и "EmpView via FKDeptnoLink " в "Data Model "
           Все.Наши VO связаны и готовы к использованию.Для проверки, нажмите правой клавишей  по  AppModule и нажмите "Run".В появившемся окне нажмите  два раза по "FKDeptnoLink1". Должны появится две таблицы связанные между собой.
           Теперь приступим к созданию собственно самой формы.
- Создайте  страницу index.jspx
           Если взглянуть в наш Data Controls, то он будет выглядеть так:
           В созданную страницу перенесите с Data Controls вложенную в DeptView1 EmpView1 и в появившемся меню выберите подчеркнутые на следующей картинке пункты:
           Форма "Master-Detail" готова. Такой способ создания "Master-Detail"  имеет свои недостатки:
- Создаются Read-only объекты.
- Пользователю не предлагается выбор создаваемых полей в таблице и форме.

           Используем  другой способ: 
-Перенесите "DeptView1" на страницу и в появившемся меню выберите "Form->ADF Form".В появившемся окне поставьте галочку около "Include Navigation Controls"и нажмите "ОК". На странице появилась форма таблицы Dept c кнопками навигации по ней. Сама форма представлена в виде трех полей компонент "af:inputtext". 
- Перенесите "EmpView1" на страницу и в появившемся меню выберите "Table->ADF Table".Появится окно мастера создания таблицы. В котором мы на наше усмотрение  можем включить функции сортировки и фильтрации(Enable SortingEnable Filtering), установить способ выделения строки(None,Single RowMultiple Rows), и выбрать какие строки и с каким именем столбца они будут выводиться. Выберем :"Enable Sorting", "Enable Filtering ","Single Row"  и жмем "OK".
           Форма создана.Нам остается добавить операции создания,удаления и сохранения записи. Это как уже говорилось в первой статье делается с помощью вкладки Data Controls. В ней каждый объект имеет вкладку "Operations". В которой есть такие операции как "Delete","CreateInsert" и др. Путем простого переноса на страницу создаются кнопки к этим операциям.  Сам Data Control(в нашем случае "AppModuleDataControl" имеет всего две операции:Commit(Сохранить), Rollback(Вернуть). После создания этих кнопок и изменения свойства Width  на значение 900 нашей таблицы.Должна получиться такая форма :