Demo of AJAX enabled ADF Faces
21 June 2006 at 20:41 CEST | In Demos, JDeveloper, Oracle | 8 CommentsOn my third and final day at ODTUG I attended a session by Frank Nimphius about “Building Rich Internet Applications with AJAX and JSF” I was hoping to see the Ajax enabled ADF Faces components demoed. They wre quickly shown in a keynote earlier this week and looked very promising. At the end Frank did give a demo and I managed to get it on video!
He started the session by explaining what Ajax is and how you would hand-code this sort of stuff. He then did a very short introduction of JSF and how the combination of the two make you future-proof. Who says Ajax is here to stay. What new technology might we have in 3-5 years. If you hand-code all this Ajax stuff or use Ajax libraries you might be stuck with old legacy stuff in 5 years. When using a components based approach you just have to get your vendor to upgrade the rendering of their components and you can ride the waves of whatever new technology comes along. Basically Oracle is doing that right now. The current ADF components have something called partial page rendering, which is Ajax-alike but uses IFrames. In the version 11 it will all be Ajax, but it’s still the same components. You current IFrame using components will just start using Ajax as a new underlying technology.
That’s what I always say about Ajax. I think it’s a great technology that can enable a lot of cool new features, but it’s something for the component developers not for me as a business developer.
Duncan gave a short demo building the new Rich Table in JDeveloper 11g. I managed to get a short movie of that with my photo camera. The quality is not that great, but you get the idea. In the movie you can see that normal horizontal scrollbars can be used to browse through your table. When scrolling quickly it even shows a nice spinning clock to indicate it is busy. You can also see that in the thumbnail. You can even reorder all the columns and do things like sorting.
He than continued with a more lengthy (and prepared) demo they also gave at JavaOne. I’ve split that up in a number of smaller videos showing the different features. The first one shows the use of expaning and collapsing accordeons. The next one shows a rich table with details below it. You can see the details refreshing on row-navigation without any apparent page refresh. The third video shows the possibility of drag-and-drop which I think is really cool. The fourth video shows the reordering of columns in a rich table as we also saw on the first demo. The fifth demo shows a link that automitcally requerys, reorders and refreshes a rich table in another accordeon. The sixth and final video shows the recalculation of the shipping costs when you click a shipper.
It al seems very smooth and user friendly. I’ve put the entire demo in a 3 minute movie at the end. Just click the thumbnails to download the movies.
Update 2 February 2007: Oracle has also published a demo showing ADF Faces with Ajax technology.

Initial demo showing the new RichTable component (1:00 - 5.8Mb)

Demo of the new Accordeon (0:34 - 3.2Mb)

RichTable component with details below the table (0:07 - 0.8Mb)

Drag-and-drop demo (0:15 - 1.4Mb)

Reordering of columns in a RichTable (0:06 - 0.6Mb)

Link to requery a RichTable (0:09 - 0.9Mb)
Tuesday at ODTUG 2006
21 June 2006 at 20:36 CEST | In Oracle | Leave the first commentTop ten problems with the Object-Oriented paradigm by Marc de Oliveira
The first session I attended was on ten problems with the object-oriented paradigm. The presenter had a hard time explaining to the audience what he exactly ment by these problems. He didn’t use any examples and I guess that made it a bit vague and academic for people to really get what he was telling. This made the audience came up with their own examples which ended in long discussions. As a result the presentor wasn’t able to finish in time and had to cut short to about 6 or 7 problems and not the intended 10.
At the same moment Alex Nuijten and Lucas Jellema from Amis were giving their SQL and PL/SQL quiz. It sounds like they had a lot of fun and that is educational to the attendents at the same time. What a great combination. It might a good idea to invite them over to Eurotransplant to do the quiz there.
Also at the same time, Grant Ronald was giving a presentation about Oracle Forms strategy and how you could integrate Forms with the new J2EE/SOA world. I didn’t attend the presentation as I had the feeling there wasn’t a lot of new stuff for me personally. I did walk by to finally meet Grant since we’ve had frequent phone and email contact. Nice to finally put a face to the name.
ADF Recipes by Duncan Mills
The second presentation I attended was by Duncan Mills on ADF Recipes. He showed how to accomplish three things that might look difficult at the beginning. In the end, he showed us that’s not all that difficult to get these things working. The main message here was to get to know some of the key ADF techniques and make you understand why they work. Do not constantly rely on the drag-and-drop stuff JDeveloper gives you. Don’t be afraid to look under the hood wat has been generated for you. It can be a real learning experience and for some things you mustn’t be afraid to “get your hands dirty”.
He first showed how to build a page with a query form at the top and the result table at the bottom. By default both the query form and the result table will use the same Iterator causing all sorts of problems. The key is to create a second iterator for the same ViewObject and use a different Iterator for the query form and result table. Het also showed us how to use a <invokeaction> tag in the <executables> of the pagedefinition. This allows you to invoke an action each time the page is rendered. This enabled Duncan to force the query form in actual query mode and keep it there.
The second example was a “google style” search, where you enter only a simple string. This string is then used to search both the FirstName and LastName fields and wildcards should be added automatically. Duncan showed this by using bind variables in the ViewObject query and then bind the ViewObject’s ExecuteWithParams method to a button on the form. He also showed some Expression Language (EL) basics to hide the results table when no rows are found.
The third and final example was the use of SelectOne pick-lists. This can be done easily by drag-and-drop. But what if you want to reference the value of the SelectOne item in some sort of EL expression. As it turns out you cannot get the actual value from the item. If you get the inputValue it will just return a index indicating which item was selected in the poplist. The trick is to either have a second value binding to the same ViewObject attribute or do not use the drag-and-drop but create your own Table binding for the lookup table. You then use <af:selectOneChoice> and <af:forEach> to construct the poplist. This is also the only way to get a poplist working in an ADF Table. I know understand why I couldn’t get this to work earlier.
This was a very insightfull session and showed WHY some stuff is working as it is.
ADF Best practices by Duncan Mills
After the lunch I attended another session by Duncan Mills. This time he had a presentation about ADF Best Practices. This again was a very insightfull session. There were so many things he discussed, I’m going to write them all down here. You’re probably better waiting for the presentation to appear on the ODTUG site.
Advanced BPEL development by Clemens Utschig
I ended the day with a session on advanced BPEL development by Clemens Utschig. I haven’t worked with BPEL yet, although I did attend some seminars and stuff. The things Clemens showed were sometimes a bit too advanced for me, but I think I got the big picture.
After that final session I sat down at the pub to watch the final part of England-Sweden with Mark Rittman and some guys from Oracle Business Intelligence. We ended up drinking a few after which we went to the dinner with a performance by Capital Steps a political satire group.
That ended my second day at ODTUG.
My first day at ODTUG 2006
20 June 2006 at 18:09 CEST | In AppServer, JDeveloper, Oracle, Workshops & trainings, XML Publisher | Leave the first commentI won’t bother you all with my sightseeing adventures of Washington D.C. I walked around for about 10 miles (16 kilometers) and my feet are aching
I also cannot include any pictures of my sightseeing and the presentations, since I forgot the USB cable to connect my camera to my laptop
I already met up with a lot of people. That’s one of the interesting things of these conferences. You get to meet up with a lot of people that you otherwise wouldn’t meet. This is where you hear all the really interesting stuff!
I attended my first session on Sunday afternoon, but that didn’t really teach me anything new. That’s the risk you run when choosing for a certain presentation based on a very short abstract in the conference schedule.
The end of the Sunday afternoon was the kickoff for the Business Intelligence Summit. It was supposed to shed light on Oracle’s Business Intelligence strategy. But to be honest, it’s still not clear to me. It was well over an hour of marketing bla-bla about Oracle BI Enterprise Edition, the re-branded Siebel Analytics product. The session ended with a 15 minute demo by Mark Rittman, which was very insightful. He has a short demo of two new features of Oracle Warehouse Builder 10gR2. It all looked very promising although we not a user (yet) of Warehouse builder.
Monday morning we had a keynote by Marco Tilli from Oracle presenting about they Fusion Middleware strategy. There were two interesting things I picked up in this session. The first is a (non official) release road map:
version 10.1.2 is production (Q1-2006)
version 10.1.3 is production (Q3-2006)
version 10.1.3.1 is the addition of the SOA Suite available before the end of 2006
version 10.1.3.2 is the addition of the Workspace Suite (not really sure what that is yet). No date was given for that release
and finally we will have version 11, for which Marco didn’t give a release date. But from the Forms version 11 webcast I had I expect this to be summer 2007.
They also did two demos during Marco’s presentation. The first one was on BPEL and Oracle Business Rules. For people following all the Oracle news, this was nothing new. The other presentation featured some of the new JSF components. This has been called RIA (Rich Internet Application) components or ADF Faces.Next. Basically, it’s AJAX enabled ADF Faces components. I already saw some of them at Oracle OpenWorld last year.
Oracle doesn’t have a release date for these new components, but they hope to have some sort of early adopter release out by the end of this year. These components look very very promising and I can’t wait to get my hands on them. Frank Nimphius will also cover these components in a presentation on Wednesday, so I’ll certainly will attend that one. I’ll see if I can get some more information there.
Oracle XML Publisher - What’s it all about? by Mark Rittman
The next session I had on Monday was by Mark Rittman on XML Publisher. This was by far the most useful session I went to so far. Mark explained what XML Publisher is and did a 45 minute demo. It all looked very interesting. He basically demoed the step-by-step he published on OTN. Take a look to get a good feeling of what XML Publisher can do.
For us. XML Publisher could be a great replacement for Oracle Reports. XML Publisher brings a clear separation between data and layout/presentation. The data can come from a SQL query over JDBC, a HTTP request feeding XML data or a call to a web service. You then apply a template to this data to build the presentation. The great thing is that you can build multiple templates for the same data-set and let the user decide which template to use. This enables things like summary reports and detail reports from the same data. The user can also select their own publishing format (HTML, PDF, XLS, etc).
The template design is done in Microsoft Word (or Adobe Acrobat). This is really great, since it is much more user friendly then the Oracle Reports builder. A small macro plug in is installed in Microsoft Word. This gives you a wizard to create a first-cut report based on the previously defined data-set. This basically gives you a simple table in Word. In each table cell a Field that represents a data item from your data set. You can then use all the layout features in MS Word you like. Mark even told us you can do some (simple) scripting in the Field items. This can make you do things like conditional formatting or displaying, although it is not as powerful as the PL/SQL triggers in Oracle Reports.
The template is then uploaded to the XML Publisher server and is available for the users. As a XML Publisher admin you can set things like security making certain reports available to only specific user(groups).
You also have two ways to deliver the data in a MS Excel (XLS) file. The most advanced one installs a .Net based plug-in to MS Excel and this allows for some fancy stuff. You can do all sorts of analysis in Excel, which goes back to the XML Publisher server to retrieve the data if necessary. You can also export to a “dumb” XLS file without any active components which might be more suitable for some users.
There’s even an online Analyzer in your browser. You can do things like cross-tabs, wit summaries and filters right in your browser. Users can take this and analyze their data without even going to Excel. This is all right from your browser, with active AJAX style components.
XML Publisher comes in a number of flavours, targeted at the different Application suites within Oracle. There’s also a standalone version of XML Publisher. This is the one you should have if you’re not running Oracle Applications. You cannot get it (yet) from OTN, so you have to go to Oracle e-delivery to get your hands on it. Mark explained that the previous 5.5 version was still a bit complex to install and get running. It required quite some handwork, whereas the latest 5.6.2 version installs and runs out-of-the-box.
By-the-way: XML Publisher will be re-branded to BI Publisher later this year and will be included in the Oracle Business Intelligence Enterprise Suite priced for a whopping 225,000 dollar per processor. XML Publisher is (and will remain) available as a standalone product. This is still priced at 40,000 per processor or 30,000 as a Application Server add-on. It’s my personal opinion that this is way overpriced. Let’s hope Oracle will one day just include it in the Application Server Enterprise Edition. Perhaps I’ll do some asking around if they have any plans in that direction.
Oracle BI Roadmap by Christina Kolotouros
The next session I visited was advertised as explaining the roadmap for the Oracle Business Intelligence Suite. This one didn’t really give me the information I was hoping for. We’re not a heavy BI user, we just use some of the traditional tools within Oracle to do some reporting. This means mainly Oracle Reports and I’m trying to figure out where Oracle is heading with it and what we should be doing. This session didn’t really help me answer these questions.
It just gave me the impression that Oracle is really focusing on integrating their BI people with the former Siebel BI people and all the attention seems to go to the high end market with their BI Enterprise Edition products. This is way out of our league.
Web Application Security Part 2 by Duncan Mills
The last session for yesterday I visited was by Duncan Mills on locking down your ADF applications. This was another really interesting session. Duncan emphasised that although your using an (advanced) framework like AFD, security is your responsibility. He went on explaining about container managed security and some of the differences between JSP/Struts and JSF regarding this. Struts has some more built-in features for securing certain actions and flows. JSF does not, so you have to group your pages in directories in your web application. These directories can then easily be secured by container managed security specified in your web.xml.
He showed a very nice open source framework he’s working on, named JSF-Security. You can find it on sourceforge and it extends the JSF Expression language with securityScope. This enables you to check if security is enabled, the username of the logged on user, the authentication type or if the logged on user is in a role. This is all done by simple EL expressions that you can use anywhere in JSF. You can typically use this with the rendered property to hide items or you can make items read-only.
But do remember that this is only security by obscurity. You shouldn’t rely on this. It is just making things hidden or read-only in the user web browser as it should. There’s nothing stopping a user (or hacker) still sending this data changed in the next HTML form post. So be sure to really check for security elsewhere also. For example in your ADF Business Components, which is the second demo he showed.
Duncan also showed the use of SYS_CONTEXT to store addition metadata in your database session. Since most web applications use features like session pooling, they all use the same database user to connect to the database. This means you cannot use the USER pseudo-column to determine which user is logged in things like triggers. The same goes for things like role grants. Duncan showed how to override the prepareSession() method in your application module. You can use this method to pass the “real” end user to the database and store it in a SYS_CONTEXT.
We already do something very similar so this wasn’t really new to me. But I sat next to a guy who’s also on the customer advisory board of Development Tools whom I met at OpenWorld last year. He told me they’re also doing the same thing, but they also use role grants in the whole setup. Their big application user has all the necessary roles granted but they’re initially all disabled. During the prepareSession() stage only the roles appropriate for the current user are enabled. We didn’t think of that yet, but that’s adding an extra layer of security. I must make sure to put this in a RFC when I’m back in the office.
This completed my session for Monday. In the evening I went for dinner with the guys from Amis, who’re also here and run a couple of presentations. I’ve also agreed to meet up with Mark Rittman tomorrow for a couple of beers, and I’m looking forward to that. Socializing is one of the perks of attending these conferences and is where you get all the in-depth information. I’ll blog again with a summary of the sessions on Tuesday.
Off to ODTUG Kaleidoscope
16 June 2006 at 09:18 CEST | In Oracle | Leave the first commentIn half an hour I’m leaving for the airport to attend the annual ODTUG conference next week. During the conference, I’ll try to update this blog as much as possible to keep you all up-to-date. So, make sure to check regularly or subscribe to the RSS feed.
Oracle’s plans for Forms version 11g
7 June 2006 at 21:44 CEST | In Forms, Oracle, Patches and upgrades | 41 CommentsTonight Oracle Product Management held a webinar about their future plans with Oracle Forms version 11 for the Customer Advisory Board for Development Tools. As you might know I’m a member of that advisory board, so I attended the webinar.
In this blog entry I would like to outline the plans as they were presented. Of course the webinar had the usual disclaimer that it was for informational purposes only and it is not a commitment to deliver these features.
Forms version 11 is planned to be part of Oracle Application server version 11, which is planned in 12-15 months, which means summer 2007. Forms will not participate in the 10.1.3 platform, so the version 11 will be the first after the current 10.1.2 line.
The primary focus for this new Forms version is with three areas; Interoperability, Deployment and Administration. In total, Oracle presented 8 new features that are approved and scheduled for version 11. Some of the features are even already being worked on. There’s a fair chance that all of these 8 new features will make it into Forms 11. This means it is not guaranteed that all these new features will make it in the final version. I assume that’s due to the normal time and budget limitations.
Let’s get on with describing the eight new features:
External Events
The first very exiting new feature is External Events. This will make it possible to call into Forms from the outside world. Currently we just have user initiated events and timers that can trigger code being executed in the Form (and thus on the Forms server). With External Events, Forms can be triggered by messages in Oracle Advanced Queuing in the database. Since BPEL can also communicate with Oracle AQ, this enabled triggering events in Oracle Forms from Oracle BPEL.
This strengthens the central position Oracle BPEL seems to take in the Service Oriented offering by Oracle. BPEL can already communicate with a whole range of external sources (monitor changing files, web services, mail, wireless, JMS, database data, .Net services, B2B, EDI, etc.). Using Oracle Advanced Queuing and Oracle BPEL all of these external systems can basically trigger events in Oracle Forms asynchronously.
But how can an event triggered on the server propagate to the client? The Forms client uses the HTTP protocol which is by its nature request/response only. If the user is actively working with the Forms session, any server side triggered event can propagate to the client. For example, if the triggered event changes some visual attribute, the client is synchronized on the next user interaction. But what if the user is idle? Oracle solved this with a polling mechanism. There is a MAX_EVENT_WAIT setting that sets the polling interval. You can define this in your configuration file, but you can also change this at runtime with SET_APPLICATION_PROPERTY.
The External Events sounds like an interesting new feature to Oracle Forms, but the downside is the extra resources used by the polling mechanism. You have to be wise in setting the polling interval.
Scheduled pre-starts
Back in the old days, every new user session had to create a new Forms server process on the fly. This resulted in delays for every new session. In Forms 10g, pre-starting was introduced. This allows you to define a number of pre-started sessions. This reduces the startup time of new sessions.
This works fine, but is a bit rigid. With Forms 11 you can schedule pre-starts. You manage this from the Enterprise Manager. You can schedule in a number of ways; define the number of pre-starts at server startup (what we have today in 10g), set a number of pre-starts to be effective immediately, schedule a number of pre-starts delayed (e.g. tomorrow at 11:00 AM pre-start 25 sessions), daily, weekly and monthly. This enables you to have a different number of pre-started sessions available at different moments. For example, be sure to have 25 extra pre-started session every Friday at 11:30 AM when the end-of-week cycle starts and user load increases.
JavaScript integration
The third (and for me most interesting) feature presented was the JavaScript integration. This goes both ways. JavaScript in the web page can raise Forms events and you can call JavaScript from Forms. This JavaScript integration enables you to mix and match your “old” forms with newer web applications (e.g. JSP or JSF).
The Forms applet has an extra method raiseEvent that can be called from JavaScript. This method accepts two arguments: the name of the event and a payload. A snippet of JavaScript to illustrate this:
function raiseFormsEvent(data) {
forms=document.getElementById('frm');
forms.raiseEvent('myEvent', data);
};
If this JavaScript function is called it will fire a WHEN-CUSTOM-JAVASCRIPT-EVENT trigger in Forms. This trigger can access two new system variables: javascript_event_name (the name of the event) and javascript_event_value (the data/payload). An example of such a WHEN-CUSTOM-JAVASCRIPT-EVENT trigger:
declare
eventName varchar2(30) := :system.javascript_event_name;
eventValue varchar2(100);
begin
if (eventName='myEvent') then
eventValue := :system.javascript_event_value;
handleMyEvent(eventValue);
end if;
end;
It also works the other way around. You can call JavaScript from Forms with a new function javascript_eval in the already existing web package:
function web.javascript_eval (expression varchar2, target varchar2 default null) return varchar2;
With the target argument you can specify the window in which to evaluate the javascript. If not specified, the window the applet is in is used.
Java Events
In version 10g, Java Components extending VBean (Java Beans) can raise server events. In version 11, all Pluggable Java Components (PJCs) will be able to raise these events. This will no longer be restricted to VBean childs.
We don’t use Java Components (yet), so this is not a very exiting feature for our environment.
Proxy User support
Forms 11 will be able to connect to the database thru a Proxy user. A proxy user only has the privileges to connect only. It does not have privileges to modify or select any data. The proxy user is allowed to connect “on behalf” of another user. This “other user” is the real user using Forms. That user does not require connect privileges in this scenario. This keeps these users out of the database directly with tools like SQL*Plus or ODBC connections.
Both in the database and in Forms you can get both the proxy user name and the “real user” name. In Forms this will be through GET_APPLICATION_PROPERTY calls.
PL/SQL tracing
Forms 10g already has a tracing facility. Unfortunately this trace does not log the names and parameters for called PL/SQL. This will change in version 11. This will log the name of all called procedures and functions, including the IN and OUT parameters, whether the call is to a local program unit or stored PL/SQL in the database.
Performance tuning
Forms 11 will include a Performance Tuning Tool that can identify and correct common performance draining application constructs. It will start by making a duplicate of the form(s) to scan, it will scan it and suggest ways to tune performance. You can call it by using a GUI or via the command line.
Typical constructs it will scan for:
- Raise on entry property set for initially not displayed canvasses.
- Unnecessary boilerplate objects
- Prompt vs. boilerplate text
- Explicit to implicit cursors. Back in the old days explicit cursors were preferred due to performance. But since (probably) version 9.2 of the database implicit cursors have been highly optimized and should now be preferred over explicit cursors.
- Calls to SYNCHRONIZE
- Use of CLIENT_TEXT_IO
- URL_To_Client vs. AS_To_Client
- Timers
- Interaction mode
- Query array size
- Number of records buffered
- Bind vs. PL/SQL variables
- Mouse-Up and Mouse-Down triggers
I guess it will be similar to the Forms Migration Assistant that is based on the JDAPI.
Oracle Diagnostics Logging (ODL)
All the different components of the Application Server have their own logging strategy, which basically makes it a mess. You are left with dozens of log files in very different locations with very different naming strategies.
Oracle has developed the common logging mechanism ODL (Oracle Diagnostics Logging). This has to be used by all Application Server 11 components. It extends the Java logging framework in J2SE (java.util.logging API). In the first incarnation only the Forms Servlet will use the ODL framework.
Using OLD means that the log files will be easily accessible from Enterprise Manager. It also enables correlation of messages in different log files. It also handles things like log file rotation and file size restrictions.
Conclusion
Personally I was impressed with all the new planned (and scheduled) features for Forms version 11. Lots of people have been saying that Oracle Forms is dead and that Oracle is abandoning Forms and minimizing development. To me, this proves otherwise. Oracle is not allocating the amount of resource to Forms as it does to JDeveloper, but I don’t think it is necessary for a mature product like Forms. Especially features like External Events and the JavaScript Integration opens up Forms for integration with other technologies. This means Forms can be part of your architecture for years to come and can integrate with all the new BPEL, SOA and other stuff coming our way. It means Oracle is protecting your investments in Forms technology while still enabling you to start using newer technologies while integrating both.
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.


