Dive into Oracle ADF

Send me a mail
 Dive into Oracle ADF   Click to see the XML version of this web page.   (Updated: 2/3/2008; 9:15:59 PM.)
Tips and tricks from Steve Muench on Oracle ADF Framework and JDeveloper IDE

Search blog with Google:
 

Search BC4J JavaDoc:
 

January 2005
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Dec   Feb

Get Firefox!

Thursday, January 27, 2005

If you like Oracle ADF and it's helpful to you in your job, you might kindly consider making your opinion known in the JDJ 2004 Reader's Choice Awards at the link below:

 http://www.sys-con.com/java/readerschoice2004/vote.cfm

Oracle ADF is nominated for two awards:

  • Best Java Component: Oracle ADF Business Components
  • Best J2EE Application Development Framework: Oracle ADF - Oracle JDeveloper

JDeveloper is nominated for several IDE category awards in addition to having Oracle BPEL Process Manager, Oracle TopLink, and the Oracle database in the running in other categories, too.


2:37:26 AM    



After becoming much more literate in ADF UIX over the last two days in the workshop, today was the day to see how JHeadstart could take us to the next level of productivity. The executive summary was that I was very impressed after getting real hands-on time using the facilities that it brings to the table. The seamless ADF JHeadstart plugin for JDeveloper 10.1.2 installed in a second and made itself useful in short order. Starting from a new ADF application module exposing the data model to support several "back office" use cases involved in the workshop, we generated a default JHeadstart application structure file. This XML file captures declarative info about how you want your application UI organized into logical groups of information. The JHeadstart plugin adds declarative editors to let you tweak all of the various preferences that control the generated application and automate the process of generating and/or regenerating the application based on these preferences using the JHeadstart Application Generator.

To start the process off quickly, the JHeadstart plugin gives you a default application organization that reflects the hierarchical structure of your application module's data model, including picking up all the places where foreign-key lookups make sense. You can start from this and evolve it to be what you need for your application, introducing different groupings, nested groupings, logical regions of related information within a group. We iteratively advanced our backoffice application by changing some preferences, using the JHeadstart Application Generator, then running our application, all from the comfort of the JDeveloper environment.

We went through progressive refinements of the initial design by picking from a rich set of layout styles including table displays, form displays, and trees, and make quick work of configuring how the user would be able to "drill down" from some master information to its one or more details. We explored setting preferences to generate our foreign-key lookups as both drop-down lists and Oracle Forms style filterable LOV's with use-LOV-for-validation, or alternatively as basic drop-down lists. A nice touch was that table displays could support multi-row editing, master/detail editing on the same page, and that the drop-down lists automatically would include "null" entries in the list when fields were optional. By indicating which fields were important enough to be in a summary table display, other fields were automatically moved to be shown only when the user clicked to see more info. We added powerful quicksearch filtering fields or full-fledged advanced search forms to our pages where needed with other settings in the application structure file.

The cool thing is that what JHeadstart is generating is not any new Java code. It's fully leveraging the ADF framework and its various extensibility points and best practice techniques, but saves you the time of individually creating the pages in the application, their UI Models containing relevant ADF bindings, and the event-driven page flow between the pages. The generated result, to complement your existing ADF business service, is the full "view" and "controller" layer to go with it. This comprises a set of JSP or UIX pages, their corresponding ADF binding UI model files, the struts-config.xml entries to describe the page flow between the pages, and nicely organized message bundles if you indicate you want an internationalizable web application. Some of the more sophisticated application features depend on having a few extended JHeadstart versions of classes like the ADF application module and the ADF data action, but the JHeadstart Application Generator takes care of setting this usage up for you. Such framework extensions are a best practice you will find leveraged in virtually every well-written ADF-based application. The only difference is that the JHeadstart team wrote them instead of your having to. Once you're iterative application generation arrives at an application that has the look, organization, and navigation that you like, should you need to you can customize the application artifacts in JDeveloper in exactly the same way as for pages that you have built without the generator. The JHeadstart Application Generator has properties you can set to selectively "freeze" areas of the application structure after doing this kind of post-generation customization so that those certain pages won't get re-generated by the JAG. We'll learn more about it tomorrow in the last day of the workshop, but the exercises we did today hinted at how the JAG is template-driven to have good control over customizing what gets generated by default as well.

In summary, in the first two days of the workshop we proved to ourselves that the features like what JHeadstart generates can be achieved by building the pages incrementally using JDeveloper's Struts Page Flow diagrammer, Visual Web Page Editor, Data Control Palette, Property Inspector, UI Model window, and Code Editor.  Knowing how to use the base JDeveloper editors and ADF features to build such pages is important in order to build your applicaton's showcase pages that require a custom UI treatment that the JAG might not yet be able to automatically generate. However, for cranking out the large majority of your ADF-based web application in a consistent, highly functional, and declarative way, leveraging the JHeadstart application generator seems like a really compelling jumpstart from where I'm sitting.


2:23:30 AM    


This morning at 7:45 my Palm Pilot's alarm sounded in time to make it down to breakfast with some of my other JHeadstart coursemates at 8:00am. Since I lost a previous Pilot to accidentally dropping it screen-down onto the leg of an office chair, I have had a hard metal case protecting its replacement. Since it was low on batteries last night, I plugged it into my mobile charger while I slept. As I stood up from bed and reached over to pick up the Pilot, my touching it gave me shock of static electricity. Dry hotel air. Ruggy hotel floors. You know the drill. After thinking, "ouch", I then thought, "interesting", since I'd noticed that just the act of touching the Pilot's metal case had turned off the alarm ringing. That was odd, but perhaps a feature I thought. Upon opening the metal screen cover, I was shocked to see a "Welcome to Palm Pilot" screen, asking me to proceed with tapping the stylus to calibrate the touch-screen.  "Ok. The static shock must have soft-reset the thing..." I thought, and proceeded to click where it asked me to. However, the date had been reset to January 1st, 2003. Whatever... Easy to fix. I changed the current date back to 2005, and clicked the button to see today's events. Nothing.  I went backward and forward a few days. Nothing. I looked at my contacts, and my todo list. Nothing. The static electricity spark had wiped the memory completely. Not a great way to start the day...
12:57:32 AM    


© Copyright 2008 Steve Muench.