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