Archive for August, 2006

ApEx 2.2 released

Oracle just released ApEx version 2.2. Here is the list of changes. Most of the changes do not come as a surprise as they were already mentioned in the roadmaps as stated earlier this year.

Most interesting new features include the packaged installation, which makes deployment easier. Also Component-level export is interesting for those who want to reuse functionality in other applications. It might put some momentum in the ApEx community, when smart solutions can be exchanged more easily.

 Further, there are the usual improvements in navigation and wizards. Also help is improved and the support of the TIMESTAMP datatype is added.

Meta Data Driven User Interface with Dojo and Spring MVC

What I mean with a meta data driven user interface is an application whose appearance and behavior is managed by a special set of data that is stored in a database and that is linked to attributes of the user. For instance the organization to which the user belongs has a contract whith the web application provider that enables the user to get certain types of information and disables other types. Therefore, a user interface widget, as for example a tree, should display nodes according to the set meta data that is connected to this user. Question is now how set up this stuff using Dojo for the presentation layer and Spring for the server side?

.... Read the rest of this entry »

The UNKNOWN null.

We all are at least a bit aware of the awkward behaviour of NULL in Oracle. But it still is difficult every time we encounter it in a function or where-clause.
Some examples to keep in mind when comparing NULL values:

1. null equals what?

Null equals nothing, in fact. It equals even not to it self. .... Read the rest of this entry »

Search ADF Faces Tree – show only nodes satisfying Query Criteria

We are still refining and enriching our ADF Faces application and in particular the Tree based pages. One of the more advanced user requests we have to deal with, is the desire to be able to search the tree in its entirety. That is: provide a search criterium, press a button and get the tree displayed with only the nodes that satisfy the search criterium – and all their ancestors in order to make it still a tree. The end result would have to look a little like this:

 

In this article I will discuss how I implemented this search the tree feature

.... Read the rest of this entry »

Article Introducing JHeadstart 10.1.3 for ADF Faces (Dutch)

We just published an article on JHeadstart 10.1.3, written for the Dutch Oracle Developer’s Magazine Optimize – the September issue. The article gives an overview of the most important new functionality, some real life experiences and great illustrations (well, nice anyway). The article is in Dutch (the images are not), so perhaps not useful to all of you…

See: http://www.amis.nl/tech_artikelen.php?id=374
 

Oracle SOA Suite Developer Preview (10.1.3.1.0) available for download

I just learned that the Oracle SOA Suite is available for download at: http://www.oracle.com/technology/software/products/ias/soapreview.html This download – a mere 560 Mb- provides us with a preview of number of key components for building a true Service Oriented Architecture built on the Oracle Fusion Middleware Technology. The main components in this suite:

  • Integrated Service Environment (ISE) to develop services (JDeveloper)
  • Oracle BPEL Process Manager to orchestrate services into business processes
  • Enterprise Service Bus (ESB) to connect existing IT systems and business partners as a set of services
  • Oracle Business Rules for dynamic decisions at runtime that can be managed by business users or business analysts
  • Oracle Business Activity Monitoring (BAM) to monitor services and disparate events and provide real-time visibility into the state of the enterprise, business processes, people, and systems.
  • Oracle Web Services Manager to secure and manage authentication, authorization, and encryption policies on services that is separate from your service logic
  • UDDI registry to discover and manage the lifecyle of Web services.
  • Oracle Application Server 10g Release 3 (10.1.3.1.0) to provide a complete Java 2, Enterprise Edition (J2EE) 1.4-compliant environment for your J2EE applications.

We have discussed the SOA Suite and most of the constituent components on our weblog over the past year. In May we attended and reported on the ESB Beta Workshop in The Netherlands and predicted that late August would see the first preview release of the SOA Suite. I did not really believe it myself back then – but Oracle proved true to its word this time. Before too long you can see more articles on our weblog on the SOA Suite, as we are deep into SOA, BPEL and getting started on the ESB as well.

.... Read the rest of this entry »

Programmatic Client Side Activation of JSF Components

The issue is the following: my web application is riddled with buttons and hyperlinks – things the end user can click on in order to start actions: submit a form, start some sort of background AJAX-style data exchange, navigate or interact with packaged (JSF or otherwise) components like trees, shuttles, data grids etc. My challenge here is that I am in need of ways to activate these controls: instead of the user pressing the designated button or hyperlink, I want to pretend the end user did that. I want programmatic control – responding to other events like the user changing and leaving a field or pressing a button of my own devices instead of the one integrated with the component I want to activate. I want to trick the JSF component – or any other component for that matter – into believing the approriate control was activated by the end user and respond accordingly.

My most immediate challenge was to have a button on one side of the screen be pressed and have the Tree component react as if a tree node – implemented as a JSF Command Link – is selected. I have attempted many server side approaches, one of the things JSF supposedly caters for, but the Tree component would not give way. In the end the solution I arrived at was JavaScript based.

.... Read the rest of this entry »

Expand tree node all the way down in the ADF Faces Tree Component

We are still very much busy developing our ADF Faces application around the Tree Component. In previous articles we have discussed creating the tree in the first place, using various Tables as underlying data sources, adding intermediate nodes with node category labels, correctly displaying the node-as-folder vs node-without-children icon and generating the Tree based application using JHeadstart. In a next post I will discuss how to navigate the tree using keyboard keys instead of the mouse. This post addresses another tree-related issue: how to expand (and collapse) a node with all its off-spring, all the way down to the lowliest details.

 

It turns out it is quite difficult to do this in a very precise way, but very easy in a more general, just as effective fashion.

I will assume a simple application with ADF Faces Tree Component. It can be generated using JHeadstart – as discussed in Building an ADF Faces Tree Component with mixed (DEPT and EMP) nodes in 5 minutes using JHeadstart 10.1.3 and   Generating an Advanced ADF Faces Tree based application with JHeadstart 10.1.3 – or built directly with drag & drop from the ADF Data Control palette – as illustrated in Creating Multi-Type Node Children and Child Node labels in ADF Faces Tree Component – or even without any ADF binding with only the ADF Faces components and simple POJO style managed beans.  

.... Read the rest of this entry »

When Procedures are not Allowed to Run in Parallel… Using DBMS_LOCK to Synchronize Processes

One of our tables stores configuration data. Two stored procedures interact with this table; One of them uses the data for further processing; The other procedure is used to maintain the data.
Changes to the configuration data were usually done during a maintenance window, and the activation date was set in the future (at least one day ahead). During the backup of the database, the database was brought down so you could be sure that none of the "users of the data"-processes were still connected.

The requirements changed however, the activation procedure needed to run whenever they saw fit. That means that at any time, the business can decide that a new setting needs to be activated.
While there are still transactions active that use this configuration data, changes to this configuration data table can not be done. The need arose to "cut in" the active transactions and make the changes.
We have to allow running processes that consumed the configuration setting that we now want to change to complete with the current/old value. However, we do not want new processes to start before we have changed the setting – i.e. made the new record the active one. So we have to prevent the procedure that wants to activate this new setting from barging in while processes that used that setting are running, but we want to prevent new processes that will use it from actually using it before we activated the new setting.

Current processes continue to run, activate the very moment the last of the current setting-consuming-processes completes and immediately afterwards set free those impatient processes waiting to consume the new setting.
How do we do that?
.... Read the rest of this entry »

KC Web en Java: de OpenOffice.org Java API

Op donderdag 10 augustus presenteerde ik het KC Web en Java over de OpenOffice.org Java API. Klik hier om de presentatie te bekijken (ja, in Powerpoint formaat omdat ik niet verwacht dat je er speciaal OpenOffice.org voor gaat installeren). Bij de presentatie hoort natuurlijk een workshop en die kun je hier downloaden. Voor de workshop heb je een JDeveloper 10.1.3 project nodig en die staat hier. Veel succes ermee. Mail me als je problemen mee hebt of er vragen over hebt.