19
1 AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken 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

26may Adfjheadstart Intro

Embed Size (px)

DESCRIPTION

Ttitles

Citation preview

Page 1: 26may Adfjheadstart Intro

1AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 2: 26may Adfjheadstart Intro

2AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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?)

Page 3: 26may Adfjheadstart Intro

3AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 4: 26may Adfjheadstart Intro

4AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 5: 26may Adfjheadstart Intro

5AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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!

Page 6: 26may Adfjheadstart Intro

6AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

Model-View-Controller

View

Controller

Model

Business Service Business Service Business ServiceADF BC op Oracle RDBMS

POJO• TopLink op MySQL• Spring Framework

WebService op BPEL

HTML – JSP or UIX (WebApp)GUI – Swing (Java Client)SOAP/ XML (WebService)PDF, Excel, Email (Java App)

Context

Query DataManipulate Data (update, insert, delete)Invoke methods: calculations, validations,…

Business Service

•Request•Event•Call/Invocation

Page 7: 26may Adfjheadstart Intro

7AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 8: 26may Adfjheadstart Intro

8AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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 Set-

style DataControl

Page 9: 26may Adfjheadstart Intro

9AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

ADF Binding FrameworkRegistering DataControls for a Business Service

Model

Business Service Business Service - POJOADF BC op Oracle RDBMS

HrmService Employee

HrmService employeesraiseSalaries name job

Page 10: 26may Adfjheadstart Intro

10AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 11: 26may Adfjheadstart Intro

11AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

ADF Binding Framework - Registering DataControl Usages – Creating UI Model

Model

HrmService employeesraiseSalaries name job

Struts + JSP JClient (Swing GUI)

SimpleClient (Java program)

Page 12: 26may Adfjheadstart Intro

12AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

ADF Binding Framework - Registering DataControl Usages – Creating UI Model

Model

HrmService employeesraiseSalaries name job

Page 13: 26may Adfjheadstart Intro

13AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 14: 26may Adfjheadstart Intro

14AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 15: 26may Adfjheadstart Intro

15AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

Alternative set of HrmService DataControls – based on ADF BC Business Service

Model

Business Service – ADF Business Components

HrmService

Business Service - POJOHrmService Employee

employeesraiseSalaries name job

Application ModuleHrmService

ViewObjectEmployee

Page 16: 26may Adfjheadstart Intro

16AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

Applications running against an alternative Business Service – same set of DataControls

Model

HrmService employeesraiseSalaries name job

Business Service – ADF Business Components

Application ModuleHrmService

ViewObjectEmployee

AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

Page 17: 26may Adfjheadstart Intro

17AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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

Page 18: 26may Adfjheadstart Intro

18AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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?

Page 19: 26may Adfjheadstart Intro

19AMIS Query - Oracle ADF en JHeadstart, Tijd om de balans op te maken

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