devstory

Créer, mettre à jour et supprimer des données en utilisant ADF Form dans ADF BC

  1. L'objectif de la leçon
  2. Créer l'application
  3. Créer un objet LOV View
  4. Créer View Object (V01Employees)
  5. Créer des conseils pour l'interface utilisateur (UI Hints)
  6. Créer View - emp
  7. Créer le ADF Form
  8. Submit & Commit
  9. Attacher une valeur à la colonne de la séquence lors de la création d'un enregistrement.
  10. Créer un nouvel enregistrement
  11. Supprimer l'enregistrement

1. L'objectif de la leçon

Dans cette leçon, je vous explique comment créer une application ADF Fusion qui permet d'afficher des données sur le ADF Form avec Row Navigation (La navigation des lignes d'enregistrement). Le ADF Form vous permet d'ajouter, de modifier les données d'un enregistrement ou de supprimer un enregistrement.
Voici est l'image de l'application :

2. Créer l'application

Tout d'abord, vous devez créer une application ADF Fusion avec des base de réglages suivants :
  • Créer l'application "ADF Fusion Web Application".
  • Se connecter à une base de données.
  • Créer un Application Module.
  • Créer des Entity Object.
  • Créer des View Object par défaut.
Vous pouvez voir les instructions ci-dessous :
Après effectuer les étapes ci-dessus, vous avez une application comme l'illustration suivante :

3. Créer un objet LOV View

Lorsque vous créez un nouveau personnel (Tableau EMPLOYEES) vous devez sélectionner un département (Tableau DEPARTMENTS) pour cet employé via un ComboBox, ListBox, LOV (List Of Values),..
Vous devez créer des LOV View Object qui sera utilisés dans plusieurs fonctions de l'application.
Sur JDeveloper sélectionnez:
  • File/New/From Gallery...
    • >> Bussiness Tier/ADF Bussiness Components/View Object
Saisissez :
  • 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) a été créé :
LOVJobs
De la même manière, continuez de créer un autre LOV View Object nommé LOVJobs:
Select j.Job_Id
      ,j.Job_Title
From   Jobs j
Order By j.Job_Title
Next .. Next ... Next

4. Créer View Object (V01Employees)

Sur JDeveloper sélectionnez:
  • File/New/From Gallery...
    • >> Bussiness Tier/ADF Bussiness Components/View Object
S'inscire à V01Employees avec Application Module:
Après l'inscription V01Employees qui a été montré sur Data Controls.

5. Créer des conseils pour l'interface utilisateur (UI Hints)

Lors que vous concevez l'interface d'un site web. Par exemple V00Employees a 11 attributs (attribute), cela est équivalent à 11 colonnes dans le tableau de la base de données. L'outil de ADF vous aide de créer ADF Form (Le formulaire d'entrée de données).
Vous devez créer des conseils (Hint) pour ADF Tool (L'outil de ADF).
Ouvrez V01Employees (View Object):
Créer des conseils de l'interface utilisateur (UI Hints) pour l'attribut DepartmentId.
Sélectionnez l'attribut DepartmentId (DepartmentId attribute) et créez sa nouvelle "List Of Values".
Sélectionnez LOVDepartments (LOV View Object) que vous avez créé dans les étapes ci-dessus.
ici je définis pour afficher la colonne DepartmentId par le type ComboBox. Si vous voulez afficher la colonne DepartmentId par le type LOV (List Of Values) Vous pouvez faire des références dans autres instructions suivantes:
Passez à TAB: UI Hints.
Créer UI Hints pour l'attribut JobId
Test V01Employees utilise Oracle ADF Model Tester:

6. Créer View - emp

Ouvrez adf-config.xml puis faites-y glisser l'objet View.
Double- cliquez sur emp (View) dans adf-config.xml afin de créer une page correspondante.
Cherchez le mot-clé "deco" et faites-y glisser l'objet "Decorative Box (ADF Faces.Layout)" au écran de emp.jsf.

7. Créer le ADF Form

Faites glisser et déposez V01Employees1 (View Object) de Data Controls au zone Center de emp.jsf et sélectionnez ADF Form, comme l'illustration ci-dessous :
OK, maintenant vous pouvez exécuter l'application. Sélectionnez emp (View) sur adf-config.xml et cliquez sur le bouton Run ou F11.

8. Submit & Commit

ADF crée un bouton "Submit" pour vous afin de submit la page web mais des données ne sont pas "Commit". Par conséquent, il n'y a pas de changement de données dans la base de données.
Lorsque l'utilisateur appuie sur le bouton "Submit" des données seront mises à jour dans View Object et il n'y a auccun changement à la base de données.
Afin de faire des changement au niveau de la base de données, vous devez effectuer la fonction Commit. Vous avez 2 choix de le faire :
  • Manière 1: Appelez Commit à chaque fois que vous Submit.
  • Manière 2: Créez le bouton Commit.
Méthode 1: Appelez Commit à chaque fois que vous Submit.
Appelez la fonction Commit chaque fois lorsque l'utilisateur appuie le bouton Submit.
Sur la fenêtre emp.jsf, passez au TAB - Bindings, Cliquez sur l'icône afin d'ajouter un "Binding".
Sur la fenêtre emp.jsf, revenez à TAB - Design, sélectionnez le bouton "Submit" et changez des valeurs de l'attribut ActionListener:
  • AcionListener = #{bindings.Commit.execute}
Méthode 2: Créer le bouton Commit
Chaque fois que vous modifiez un enregistrement et que vous appuyez sur Submit, les modifications seront mises à jour dans View Object. Enfin, appuyez sur Commit pour mettre à jour tous les enregistrements modifiés dans la base de données.
Faites glisser et déposez l'objet "Commit" de "Data Controls" à la fenêtre emp.jsf afin de créer un "ADF Button":

9. Attacher une valeur à la colonne de la séquence lors de la création d'un enregistrement.

Lorsque vous créez un nouvel enregistrement pour le tableau EMPLOYEES, la colonne EMPLOYEE_ID sera attachée des valeurs de sequence - EMPLOYEES_SEQ. vous devez le dire à ADF en configurant sur Entity Object (Employees).
Ouvrez Entity Object: Employees
L'attribut (attribute) EmployeeId est du type Integer, changez le par le type Number (Comme l'illustration ci-dessous):
Vous devez créer une classe correspondante avec Employees (Entity Object).
La classe EmployeesImpl a été créée.
Java appelera la méthode EmployeesImpl.create(AttributeList) pour créer un enregistrement EMPLOYEE. Par conséquent, pour cette méthode, vous devez obtenir des valeurs de Sequence pour attacher à la colonne EMPLOYEE_ID.
Ajoutez un extrait de code à la classe 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. Créer un nouvel enregistrement

Ci-dessus, vous avez créé un ADF Form permettant d'éditer des enregistrements. Dans cette section, vous devez créer un nouvel enregistrement.
Vous devez faire glisse et déposer un deux opérateurs "Create" ou "CreateInsert" de "Data Controls" au fenêtre de conception (emp.jsf) afin de créer un ADF Button.
Create vs CreateInsert
Qui se produira-t-il lorsque vous utilisez l'opérateur "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);
Que se passe-t-il si vous utilisez l'opérateur "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);
Faites glisser et déposez l'objet "CreateInsert" à la fenêtre emp.jsf pour créer un "ADF Button".
Réexécutez votre page de site web :
Lorsque l'utilisateur appuie sur le bouton "CreateInsert", une ligne (row) de données est créée et insérée dans le "RowSet" de View Object. L'utilisateur saisit des informations et appuie sur Submit, les modifications sont mises à jour à View Object. Aucun enregistrement ne sera créé dans la database tant que Commit n'aura pas été appelé.
Vous pouvez voir plus d'explications à la section "Submit & Commit" ci-dessus.

11. Supprimer l'enregistrement

Faites glisser et déposez l'objet "Delete" de "Data Controls" à la fenêtre de conception de emp.jsf afin de créer un "ADF Button":
Lorsque l'utilisateur appuie sur le bouton "Delete", une ligne (row) de données est suprimée et insérée dans le "RowSet" de View Object. Cela signifie que l'enregistrement n'a pas été supprimé déjà dans la database. Il est uniquement supprimé dans la base de données lors de l'appel de Commit.
Vous pouvez voir plus d'explications à la section "Submit & Commit" ci-dessus.
Réexécutez votre page de site web :