200 likes | 422 Views
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. Agenda. Welkom en introductie Inleiding ADF Binding Framework ADF en WebServices
E N D
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
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?)
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
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
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!
Model-View-Controller • Request • Event • Call/Invocation View HTML – JSP or UIX (WebApp) GUI – Swing (Java Client) SOAP/ XML (WebService) PDF, Excel, Email (Java App) Controller Context Model Query Data Manipulate Data (update, insert, delete) Invoke methods: calculations, validations,… Business Service Business Service Business Service Business Service • POJO • TopLink op MySQL • Spring Framework WebService op BPEL ADF BC op Oracle RDBMS
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
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
ADF Binding FrameworkRegistering DataControls for a Business Service HrmService raiseSalaries employees name job Model Business Service - POJO Business Service HrmService Employee ADF BC op Oracle RDBMS
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
ADF Binding Framework - Registering DataControl Usages – Creating UI Model Struts + JSP JClient (Swing GUI) SimpleClient (Java program) HrmService raiseSalaries employees name job Model
ADF Binding Framework - Registering DataControl Usages – Creating UI Model HrmService raiseSalaries employees name job Model
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
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
Alternative set of HrmService DataControls – based on ADF BC Business Service HrmService raiseSalaries employees name job Model Business Service - POJO Business Service – ADF Business Components HrmService Employee Application ModuleHrmService ViewObjectEmployee
Applications running against an alternative Business Service – same set of DataControls HrmService raiseSalaries employees name job Business Service – ADF Business Components Model Application ModuleHrmService ViewObjectEmployee AMIS 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
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?
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