Oracle ADF - introduction of a Binding Framework

advertisement

Oracle’s Application Development
Framework (ADF) en JHeadstart –
Tijd om de balans op te maken
Sandra Muller en Peter Ebell (Oracle) en Lucas
Jellema (AMIS)
AMIS Query, Donderdag 26 mei 2005

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
1
Agenda

 Welkom en introductie
 Inleiding ADF Binding Framework
 ADF en WebServices
 ADF UIX – Customizing the Look & Feel through
Skins
 ADF en JHeadstart – status en toekomst
 Diner (18.00 uur)
 Workshop (tot 20.30?)

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
2
Oracle Application Development Framework

 Preview Fall 2003
 Production Spring 2004
 ADF label on JClient, UIX
and BC4J
 Core of ADF (JSR 227):
DataBinding Framework
 Valuable facilities:
 LifeCycle support in Struts and JClient
 Integration with IDE:
•
•
Easy registration of DataControls
Drag and drop DataControlBinding and UI generation

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
3
JHeadstart

 Toolset for Declarative Application Development
 Started life in 2001 within Oracle Consultancy
 Late 2004: 10.1.2 release – support for ADF
 Generation of View and Controller based on Model and
XML-based application definition
 Oracle 9iAS MVC Framework and Struts
 JSP and UIX
 BC4J (ADF BC) and Toplink (only in 9.0.5.x release)
 Support for generation from Oracle Designer
 Run-time libraries
 Struts enhancements; for example Multi Record DML, messages
 Client Side: calendar window, no changes to commit
 Before ADF: data binding between VC and M

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
4
JHeadstart

 Next (Patch) Release – end of June
 Fixes and New features!
 Only available through Supplement Option
 NOT on OTN
 Do not take the software with you!

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
5
Model-View-Controller

•Request
•Event
•Call/Invocation
View
HTML – JSP or UIX (WebApp)
GUI – Swing (Java Client)
SOAP/ XML (WebService)
Controller
PDF, Excel, Email (Java App)
Context
Model
Business Service
ADF BC op Oracle
RDBMS
Query Data
Manipulate Data (update, insert, delete)
Invoke methods: calculations, validations,…
Business Service
POJO
• TopLink op MySQL
• Spring Framework
Bu
WebService op BPEL

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
Business Service
6
MVC and Role Separation

 Model is View-unaware
 Model provides services, regardless of who will use
them
 View is Model-unaware
 View receives data (POJO) to make use of without
knowing where the data originates from
 Controller is Model-implementation unaware
 Controller invokes Model services without needing to
know the specific technical implementation

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
7
ADF Binding Framework

 Model provides DataControls that implement generic
interfaces
 Attribute
•
getValue, setValue
 Collection
•
First, Last, Next, Previous, Next Set, Previous Set
 Method
•
setParameters, Invoke (doIt), getResult
 Business Service
•
Operations: Commit, Rollback
 ADF contains AdapterClasses that implement the
DataControl interfaces for different technologies
 Some or more equal than others
 For example: ADF BC ViewObject wrapped to implement a Setstyle DataControl

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
8
ADF Binding Framework
Registering DataControls for a Business Service

HrmService
raiseSalaries
employees
name
job
Model
Business Service
ADF BC op Oracle
RDBMS
Business Service - POJO
HrmService
Employee

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
9
Applications register DataControl Bindings

 Applications are consumers of DataControls
 Application components register Usage of
DataControls (aka DataControl Bindings)
 In the UI Model (aka Binding Container)
 A bit similar to Oracle Designer’s Module Component
with table-usages and column-usages
 Depending on Application Technology, we will
have one UI Model per
 Struts Action (== JSP or UIX page)
 JClient Frame
 Java Class

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
10
ADF Binding Framework - Registering
DataControl Usages – Creating UI Model

Struts + JSP
HrmService
JClient
(Swing GUI)
raiseSalaries
SimpleClient
(Java program)
employees
name
job
Model

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
11
ADF Binding Framework - Registering
DataControl Usages – Creating UI Model

HrmService
raiseSalaries
employees
name
job
Model

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
12
Demo – Register DataControls and Build UI
Models

 ADF Business Components HrmService
 ViewObject employees based on Table scott.EMP
 Method raiseSalaries()
 Struts + JSP WebApplication
 DataControl Usage = ControlBinding (iterator binding)
for employees as Read Only Table
 DataControl Usage = ControlBinding (action binding)
for raiseSalaries as button
•
And Method Result as display text
 Simple Client Java Application
 Iterator Binding employees + Action Binding
raiseSalaries

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
13
Switching Business Services

 The application accesses generic DataControl
Binding interfaces
 It is unaware of the business service or the actual
implementation
 The application only needs:
•
•
Name of DataControl
Type of DataControl (Attribute, Collection, Action)
 If an alternative Business Service provides the
same set of Data Controls
 Same name, same type
 … Then the application should without any
change be able to run with the alternative service

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
14
Alternative set of HrmService DataControls –
based on ADF BC Business Service

HrmService
raiseSalaries
employees
name
job
Model
Business Service - POJO
HrmService
Employee
Business Service – ADF Business Components
Application Module
HrmService

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
ViewObject
Employee
15
Applications running against an alternative
Business Service – same set of DataControls

HrmService
Model
raiseSalaries
employees
name
job
Business Service – ADF Business Components
Application Module
HrmService

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
ViewObject
Employee
16
Demo – Switch Business Service

 Introduce alternative HrmService, POJO based
 public Collection getEmployees()
•
beanClass = nl.amis.hrm.Employee
 public Double raiseSalaries()
 Publish DataControls for POJO HrmService
 Struts + JSP WebApp
 Update UIModel
•
•
Base employees Iterator on POJO HrmService
Base raiseSalaries ActionBinding on POJO HrmService
 Simple Client
 JClient application

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
17
Questions

 How will ADF Faces and ADF Binding Framework
work together?
 What will happen with JSR-227
 Will there be development of more (advanced)
DataControl Adapter classes
 For Hibernate, Spring Framework, TopLink
 Will there be ADF Binding Framework (JSR-227)
plugins for Eclipse?
 Will the IDE be enhanced in 10.1.3?
 What is the take-up in the market for ADF?

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
18
Discussion and Conclusion

 ADF Binding Framework effectively decouples Model from
View & Controller
 Allowing for clear roles in development projects
 ADF allows for quick first steps in application
development, while respecting MVC
 The typical “next steps” are still quite complex
 Especially for non-J2EE Web Developers
 ADF can only be used with JDeveloper 10g
 ADF is somewhat sparse for non-BC services
 Even support for Oracle TopLink is limited
 Integration between ADF and UIX is not always optimal
 ADF is part of the strategical tool-stack for Oracle Apps

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken
19
Download