Skip to main content

ODTUG Kscope 11: My story on ADF in the Fusion MiddleWare Track

From June 26th to June 30th the KScope 11 conference was in Long Beach California. Nice setting for a great conference. It was the first time that KScope had a Fusion Middleware Track. For me it was a very busy conference with three presentations, handson workshops, live demonstrations and a Boff session with the EMG. In this post some of my highlights.

Friday and Saturday
On Friday in the airplane and Saturday in Long Beach I wrote a review for Sten Vesterli's book. The review can be found here on the AMIS Technology Blog.

Sunday Symposium
The symposium started very early. That is 7.30 including breakfast and registration.
Then some great sessions on ADF and SOA and Webcenter. Chris Muir and John King talked about ADF, Sten Vesterli and Hajo Norman about WebCenter, Lonneke Dikmans and Chris Judson talked about SOA and BPM. Finally Madhuri Kolhatkar \was presenting on User Experience Design Patterns. She pointed out a very usefull resource where you can find OBIEE Design Patterns that are just as well applicable to FMW and ADF Applications. Image
Too bad that currently the site is down (

Day started after a hilarious opening session in the Long Beach Performing Arts Center. I attended two sessions and spent some time on preparing my own sessions for Tuesday. The first session "WebCenter Spaces: A Beginner's Guide to Enterprise 2.0 By Maicho Rocha of Oracle Corporation."
In this webcenter spaces session maiko showed how to recreate the kscope website with spaces. Very nice. Maiko also revealed that Webcenter Release 12 will introduce 'iGoogle' like functionality to add components to your personal space. Maiko had a live kscope WebCenter portal that we could play with during his presentation. Very cool indeed !

The other one "Introduction to JPA and How to Use it with Oracle ADF by Shay Shmeltzer of Oracle Corporation." Introducing the key concepts of JPA and explain how it works. It will show you how you can leverage JPA as the database access layer in an Oracle ADF application, and what special features you get from this integration. I didn't learn a lot new features, however, the fact that in JDeveloper 11gR2 named criteria, UI hints, validations and more ADF BC related features are also available for JPA was new for me. As was the fact that named criteria defined on a JPA entity can be dragged from the datacontrol and dropped as an adf queryform.

Monday evening there was the ADF-EMG Boff Session. A (for a Boff) nice headcount in the audience (about 25), and we discussed existing and new topics for the EMG, derived from the 'new member questionnaire'.

A busy (Actually way too busy) day for me with two sessions. The presentations can be found on slideshare. The first one "ADF Developers : Make the database work for you" did go very good. In this session I discussed the various points of interaction between database and ADF and when to use which. I also highlighted some special database features - flashback, View with Instead Of Trigger, and Analytical Functions and DB Query ResultSet Change Notification.

The second one : "A Picture paints a thousand words" did also go pretty good. It was about how to present data with ADF DVT and how to use DVT components for data analysis. From pretty straightforward usage of gauges, graphs, and maps, to more sophisticated features like time selectors, drill down functionality, data manipulation in DVT, and real time update via server push. A had a good crowd, considering that @DuncanMills was presenting next door on ADF debugging.

In between I also managed to follow two other sessions. The first one called Going Social: Enriching Your ADF Applications with Webcenter by Maiko Rocha of Oracle Corporation.

The second one Skinning ADF - Getting the Look You Want by Shay Shmeltzer of Oracle Corporation.
Some very nice demos of the new visual skin editor. Also a nice tip on how to use firebug in order to know what elements you actually need to skin. Just add an entry to the web.xml file to prevent ADF Faces from compressing the HTML that is generated. The entry is for you will be looking for is:
Set it to true. This is very useful when you work on creating the skin, but don't forget to un-set it before you go production. And look what was created in just under an hour.....

More resources on this session can be found here : the video of the #JDeveloper ADF Faces Skin Editor, based on Shays KScope session and a blog

The day started with the third of my sessions "....and thus your forms automagically disappear", about considerations to make when you are about to decide whether or not to leave Forms and go for ADF. You will see the process of conversion step by step starting with the business case and ending at the new ADF application. You will hear about issues you run into when using Forms2ADF for automated conversion and you will get hints on how to use Forms2ADF.

Because of the cancellation of my "ADF Mobile client" session I helped out Steven Davelaar with organizing two JHeadstart Handson sessions. Besides that I had a great discussion with the 3 people that did show up for my cancelled ADF Mobile session about Mobile development with ADF. The handson session were pretty well visited and Steven Davelaar, Wilfred van der Deijl and me were around to help people out when needed.
Oracle JHeadstart: Superior Productivity in Developing Best-practice ADF Web Applications by Steven Davelaar of Oracle Corporation.
The day ended with an excellent party at the Queen Mary.

The final day of KScope 11, but what a day that was. Thursday thunder was a huge succes. A bunch of FMW cracks (Peter Ebell, Edwin Biemond, Ronald van Luttikhuizen, Steven Davelaar and Luc Bors (thats me)) set down to do a 4 hour live development session using the Fusion Middleware toolstack. We build an ADF Dashboard to display statistics on KScope data, and an end to end process for submitting abstracts, using a queue to get an event into the business process, sending an email from the process to notify when the abstract is accepted, and finally uploading the presentation. The session was being moderated by Chris Muir, Lonneke Dikmans and Duncan Mills.

We were somewhat afraid of how the audience (if any) would respond to this session. Would there be an audience, and if so, would they stay, or would they leave after a few minutes. It turned out that we a good audience (I think some 75 people) and most of them returned after the one hour KScope Closing Session. In that session a personal succes for me was announced. It turned out that attendees of the Fusion Middleware Track choose me and one of my sessions to be rewarded the "KScope 2011 FMW track Best Speaker Award". I had to learn that via twitter, because I not attending that session. I was preparing the second part of the Thursday Thunder Session. All in all a great session and according to the blogosphere <> this will be repeated in some form at the UKOUG conference in December.

On my way back home I reviewed Grant Ronalds Whitepaper on Forms Modernization. The result can be found here.

KScope 2012
Next year KScope is in San Antonia TX from June 24th - June 28th. I'll be there.
Registration and abstract submission is now open. Find the links on


Baig said…
Thanks for great knowledge sharing.

Zeeshan Baig

Popular posts from this blog

ADF 12.1.3 : Implementing Default Table Filter Values

In one of my projects I ran into a requirement where the end user needs to be presented with default values in the table filters. This sounds like it is a common requirement, which is easy to implement. However it proved to be not so common, as it is not in the documentation nor are there any Blogpost to be found that talk about this feature. In this blogpost I describe how to implement this.

The Use Case Explained
Users of the application would typically enter today's date in a table filter in order to get all data that is valid for today. They do this each and every time. In order to facilitate them I want to have the table filter pre-filled with today's date (at the moment of writing July 31st 2015).

So whenever the page is displayed, it should display 'today' in the table filter and execute the query accordingly. The problem is to get the value in the filter without the user typing it. Lets first take a look at how the ADF Search and Filters are implemented by the f…

ADF 12.2.x : Conditional Showing Message Instead of List of Values Popup

Today I had to fix an issue in one of our ADF applications. For those of you working with ADF (as I do too occasionally) this might be valuable, so I decided to share this. The application is based on an old Oracle Forms applications and I had to implement the following functionality:

FRM-41830 : List of Values contains no entries.

In other words (more ADF like) : If you are about to render a List of Values and that List of Values contains no rows, just show a message instead of showing the List of Values.

In this post I will describe how I was able to implement this although it turned out to be a challenge.
Below are the steps that I took. Note that the Application can be downloaded from GIT.

1) I use a UI pattern where we use readonly table and do edits in a popup. That means that any List of Values will add an additional popup to the UI.

2) The List of Values that I use in this sample only shows entries where the minimum salary is less then the employees current salary. Not that …

ADF 11g Quicky 3 : Adding Error, Info and Warning messages

How can we add a message programatically ? Last week I got this question for the second time in a months time. I decided to write a short blogpost on how this works.

Adding messages is very easy, you just need to know how it works.
You can add a message to your faces context by creating a new FacesMessage. Set the severity (ERROR, WARNING, INFO or FATAL ), set the message text, and if nessecary a message detail. The fragment below shows the code for an ERROR message.

1: public void setMessagesErr(ActionEvent actionEvent) {
2: String msg = "This is a message";
3: AdfFacesContext adfFacesContext = null;
4: adfFacesContext = AdfFacesContext.getCurrentInstance();
5: FacesContext ctx = FacesContext.getCurrentInstance();
6: FacesMessage fm =
7: new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, "");
8: ctx.addMessage(null, fm);
9: }

I created a simple page with a couple of buttons to show the result of setting the message. When the butto…