Создание, обновление и удаление данных с помощью ADF Form в ADF BC

View more categories:

1- Цель руководства

В данной статье я покажу вам как создать приложение  ADF Fusion позволяющее отображать данные на  ADF Form, с Row Navigation (Навигация по строкам). ADF Form позволяет вам добавлять, и редактировать данные записи, удалять запись.
Это иллюстрация приложения:

2- Создать приложение

Для начала вам нужно создать приложение  ADF Fusion со следующими базовыми настройками:
  1. Создать приложение "ADF Fusion Web Application".
  2. Подключить к базе данных.
  3. Создать Application Module.
  4. Создать Entity Object.
  5. Создать ​​​​​​​View Object по умолчанию.
Вы можете посмотреть инструкцию по ссылке:
После шагов выше, вы получите приложение как в изображении ниже:

3- Создать LOV View Object

Когда вы создаете нового сотрудника (Таблица EMPLOYEES) вам нужно выбрать отдель (Таблица DEPARTMENTS) для данного сотрудника через  ComboBox, ListBox, LOV (List Of Values),..
Вам нужно создать  LOV View Object, они будут использованы во многих функциях приложения.
На  JDeveloper выберите:
  • File/New/From Gallery...
    • >> Bussiness Tier/ADF Bussiness Components/View Object
Введите:
  • Package: org.o7planning.adf.model.lovviews
  • Name: LOVDepartments
Select Dep.Department_Id
      ,Dep.Department_Name
      ,Loc.City
From   Departments Dep
      ,Locations   Loc
Where  Dep.Location_Id = Loc.Location_Id(+)
Order By Dep.Department_Name
View Object ( LOVDept) создан:

LOVJobs

Индентично создайте другой  LOV View Object с названием  LOVJobs:
Select j.Job_Id
      ,j.Job_Title
From   Jobs j
Order By j.Job_Title
Next .. Next ... Next

4- Создать View Object (V01Employees)

На  JDeveloper ​​​​​​​выберите:
  • File/New/From Gallery...
    • >> Bussiness Tier/ADF Bussiness Components/View Object
Зарегистрировать  V01Employees с  Application Module:
После регистрации  V01Employees виден на  Data Controls.

5- Создать подскаки для интерфейса пользователя (UI Hints)

Когда вы делаете дизайн для вебсайта. Например  V01Employees имеет 11 атрибутов (attribute), соответствующие 11 столбцам в таблице базы данных. Инструмент  ADF поможет вам создать  ADF Form (Форма для ввода данных).
Вам нужно создать (Hint) для ADF Tool (Инструмент ADF).
Открыть  V01Employees ( View Object):

Создать UI Hints для атрибута DepartmentId.

Выбрать атрибут  DepartmentId (DepartmentId attribute) и создать для него новый  "List Of Values".
Выбрать  LOVDept ( LOV View Object), который вы создали в предыдущем шаге.
Здесь я настраиваю отображение столбца  DepartmentId вида  ComboBox. Если вы хотите отобразить  DepartmentId вида  LOV (List Of Values) вы можете ссылать на другое руководство по ссылке :
Переключиться на TAB: UI Hints.

Создать UI Hints для атрибута JobId

Тестировать V01Employees используя Oracle ADF Model Tester:

6- Создать View - emp

Открыть  adf-config.xml и переместить в него объект  View.
Двойное нажатие мыши на  emp (View) на  adf-config.xml, чтобы создать соответствующую страницу.
Поиск с ключевыми словом  "deco" и перетащить объект  "Decorative Box (ADF Faces.Layout)" в экран  emp.jsf.

7- Создать ADF Form

Перетащить  V00Emp1 (View Object) из  Data Controls в регион  Center в emp.jsf, и выбрать  ADF Form, как в изображении ниже:
OK, теперь вы можете запустить приложение. Выберите  emp (View) на  adf-config.xml и нажмите  Run или   F11.

8- Submit & Commit

ADF создает для вас кнопку  "Submit" чтобы сделать  submit веб страницу, но данные еще не были  "Commit". Поэтому ничего не меняется для данных в базе данных.
Когда пользователь нажимает на кнопку  "Submit", данные обновляются в  View Object, и ничего не меняется в базе данных.
Чтобы создать изменения на уровне базы данных, вам необходимо выполнить функцию Commit. У вас есть 2 способа сделать это:
  1. Способ 1: Вызвать Commit при каждом Submit.
  2. Способ 2: Создать кнопку Commit.

Способ 1: Вызвать Commit при каждом Submit.

Вызвать функцию  Commit, когда пользователь нажимает на кнопку  Submit.
На  окне  emp.jsf переключиться на  TAB Bindings, Нажимите на иконку  чтобы добавить  "Binding".
На окне  emp.jsf переключиться на  TAB - Design, выберите кнопку  "Submit" и измените значения атрибута  ActionListener:
  • AcionListener = #{bindings.Commit.execute}

Способ 2: Создать кнопку Commit

Каждый раз когда вы меняете запись, и нажимаете на  Submit, изменения будут обновлены в  View Object. В конце, нажмите на  Submit, чтобы обновить все записи с изменениями в базу данных.
Перетащить объект  "Commit" из  "Data Controls" в окно  emp.jsf чтобы создать  "ADF Button":

9- Прикрепить значение к столбцу Sequence при создании записи

Когда вы создаете новую запись для таблицы EMPLOYEES, к столбцу  EMPLOYEE_ID будут прикреплены значения из  sequence - EMPLOYEES_SEQ. Вам нужно сказать об этом  ADF конфигурацией на  Entity Object ( Employees).
Открыть  Entity Object: Employees
Атрибут (attribute) Empno на данный момент имеет вид  Integer, измените его на вид  Number (как в изображении ниже):
Вам нужно создать соответствующий класс с  Employees (Entity Object).
Класс  EmployeesImpl создан.
Java вызовет метод  EmployeesImpl.create(AttributeList) чтобы создать запись  EMPLOYEE. Поэтому в данном методе вам нужно получить значения от Sequence чтобы прикрепить к столбцу  EMPLOYEE_ID.
Добавить следующий код к классу  EmployeesImpl:
** EmpoyeesImpl **
import oracle.jbo.server.SequenceImpl;

// ....

protected Number getNextSequenceValue(String sequenceName) {
    SequenceImpl seq = new SequenceImpl(sequenceName, getDBTransaction());
    return seq.getSequenceNumber();
}


/**
* Add attribute defaulting logic in this method.
* @param attributeList list of attribute names/values to initialize the row
*/
protected void create(AttributeList attributeList) {
    super.create(attributeList);

    // Set value for Empno        
    this.setEmployeeId(this.getNextSequenceValue("EMPLOYEES_SEQ"));
}

10- Создать новую запись

Выше вы создали  ADF Form, позволяющую вам редактировать записи. В следующей части вам нужно создать новую запись.
Вам нужно перетащить 2 оператора  "Create" или  "CreateInsert" из  "Data Controls" в окно дизайна ( emp.jsf) чтобы создать  ADF Button.

Create vs CreateInsert

Что происходит, когда вы используете оператор  "Create"?
** Create **
// Create a new row for the View Object
Row newRow = yourViewObject.createRow();

// Mark the row as being "initialized", but not yet new
newRow.setNewRowState(Row.STATUS_INITIALIZED);
Что происходит, когда вы используете оператор​​​​​​​ "CreateInsert"?
** CreateInsert **
// Create a new row for the View Object
Row newRow = yourViewObject.createRow();

// Mark the row as being "initialized", but not yet new
newRow.setNewRowState(Row.STATUS_INITIALIZED);

// Insert the new row into the View Object's default rowset
yourViewObject.insertRow(newRow);
Перетащить объект  "CreateInsert" в окно  emp.jsf чтобы создать  "ADF Button".
Перезапустите ваш вебсайт:
Когда пользователь нажимает на  "CreateInsert", создается строка данных (row) и вставлена в  "RowSet" в  View Object. Пользователь вводит информацию, и нажимает на  Submit, изменения обновлены на  View Object. Никакие записи не будут созданы в database (база данных) пока не будет вызван Commit.
  • Вы можете посмотреть подробное объяснение в части "Submit & Commit" выше.

11- Удалить запись

Перетащить объект  "Delete" из  "Data Controls" в окно дизайна  emp.jsf чтобы создать  "ADF Button":
Когда пользователь нажимает на кнопку  "Delete", текущая строка данных (row) будет удалена из  "RowSet" в View Object, это значит, что запись на самом деле еще не удалена из database. Она только удалена из  database при вызове  Commit.
  • Вы можете посмотреть подробное объяснение в части "Submit & Commit" выше.
Перезапустите ваш вебсайт:

View more categories: