New: Reusable ADF Taskflows Generator!
By Steven Davelaar on Sep 26, 2010
Last week I attended Oracle Open World 2010. I was pleased to see how much focus there was on the Oracle Application Development Framework. With about 40 sessions, ADF was a major topic on this conference, as it should be!
Overall, the ADF sessions were of high quality and well attended. The drawback of so many sessions is overlap, sometime there were 2 or even 3 ADF sessions at the same time. For my session on JHeadstart, I had to compete with a presentation on functional patterns in ADF and an ADF hands on session. Thanks to a bit of twitter marketing and retweeting by JDeveloper, I nevertheless had about 35 people, while only 20 people preregistered for my session.
This time, I slightly changed the way I presented and positioned JHeadstart. In previous sessions I usually demoed for about 50 minutes, hurrying through the intro and wrap up slides. With earlier versions of ADF, my motto "seeing is believing" was enough, and the audience left mumbling things like "What you just showed me in 1 hour, has taken me 6 months to build".
Now, ADF11 is so impressive by itself, that I noticed somehow people start to think there is less of a need for JHeadstart. And of course, you can perfectly build ADF 11 applications without JHeadstart. But hey, don't you want to get things right the first time, and as fast as possible? Well, I do, and I am convinced that the above statement about saving 6 months is more true than ever with ADF11. ADF11 is immensely powerful when used in the proper way, following best practices, proven design patterns and advanced techniques. And this is the crux, despite more than 2000 pages of official documentation, and a couple of books on ADF, most of this info to really get it right is scattered around the web, in OTN articles and blogs of various ADF experts, or simply not yet documented.
It takes a couple of months before you figured it all out. Unfortunately, the typical project manager does not give you so much time, so you don't get it right the first time and you'll discover along the way that you should have chosen a different approach, applying other, more advanced techniques. And then you have a nasty choice to make: leave it as it is, a-less-functional-less-flexible-and-costlier-application to maintain, or go for a major refactoring......
Well, with JHeadstart you will get it right the first time! Which brings me to the title of this blog entry, I did a "major announcement" during my session, introducing the "Reusable ADF Taskflows Generator" (RATG). And the good news is, you don't have to wait for the next JHeadstart release to use it, it is already there in the current release! Only the name is slighty different: "JHeadstart Application Generator" (JAG). We have chosen the name JAG 8 years ago, when we launched JHeadstart, and ADF did not even exist. But RATG is probably a better name right now. Sure, JHeadstart still generates a complete and fully functional ADF web application, but the core of the application consists of highly reusable and highly configurable task flows.
The generated taskflows can be (re-)used
- in a "traditional" tabbed menu (also generated with JHeadstart)
- in the more modern "UI Shell with dynamic tabs". I demoed the excellent JHeadstart support for this pattern in the upcoming JHeadstart 18.104.22.168 release. (You can use the pattern already with current release, requires a bit of coding)
- in handbuilt drag-and-drop pages, see the JHeadstart tutorial for an example
- as a child in another parent region, minimizing duplication of UI logic. Again, see the JHeadstart tutorial for an example.
- in combination with ADF Human workflow tasklist, deeplinking to the task specific object instance within the taskflow
- in pop up windows. And again, see the JHeadstart tutorial for an example.
- as WebCenter portlets
- in WebCenter Composer allowing the end user to add taskflows at runtime
To enable all these reuse cases, the generated taskflows are highly configurable. They
can be configured
- to start in create mode (displaying a new row)
- to show one specific row (deeplinking)
- initially launch a summary page or specific deeplink detail page
- to hide action buttons (ike Save, Cancel, Browse)
- to hide search region
- to show in read-only mode
And if you don't care for 100% generation, you have the freedom to skip generation at any time, and proceed with the visual design editor in JDeveloper to finish off your pages.
I believe that this message of advanced design patterns, reuse, and superior productivity without compromizing on flexibility, was well understood by the crowd. And the demo although shorter was still impressive enough, showing off many of the built in features that will save you additional months of development time. The crowd was "sold" as a couple op attendees said at the end, and made clear in tweets from respected ADF experts like Chris Muir and Wilfred van der Deijl!
Yes, OOW10 was inspiring and provided me with new energy to blog about JHeadstart.
OOW10 made me realize we should communicate more about many of the smart ADF techniques used in JHeadstart. There are still way too many people not using it, ignorant of all the good stuff. So, keep an eye on this blog in the next weeks!
Slides of my presentation can be viewed and downloaded here.