As part of the announcement on July 1st around Oracle Fusion Middleware 11g, Oracle released the next point release (18.104.22.168.2 => 22.214.171.124.0) of JDeveloper. And while the change is only in the fourth digit, there are still quite a few very interesting new options, features and components new in this release. In this article a brief and by no means exhaustive list of some of those new things as I have discovered them in the last few months.
This release 126.96.36.199.0 release had the internal code name of Bulldog and I have been referring to that name a few times before. One of the important changes since its predecessor (188.8.131.52.0, internally known as Boxer) is that now the full Fusion Middleware 11g R1 release is available, for which JDeveloper provides the design time environment. So the Bulldog release launched today has the design time for SOA Suite 11g and WebCenter 11g, to name but two. The WebLogic server that ships with this JDeveloper release is now the latest 10.3.1 – the foundation for FMW 11g.
Integration ADF 11g with FMW 11g
Not only is JDeveloper the design time for the aforementioned parts of FMW 11g, there is integration between ADF and the new run times of both SOA Suite and WebCenter.
Some interesting examples of this integration:
- ADF BC Entity Objects can publish Events onto the Event Delivery Network in the SOA Suite (that in turn may trigger Mediator or BPEL services)
- ADF BC Application Modules can be published as SDO (Service Data Object) compliant Data Services (that can easily be consumed in for example BPEL, as a BPEL Variable can be based on an SDO Entity)
- ADF Task Flows can be created for Human Workflow definitions in SOA Suite; these taskflows take care of all interaction with the Workflow Service without need for programming against the Workflow Service API.
- WebCenter Services can be consumed in any ‘normal’ ADF application
- ADF Taskflows can be published as WSRP 1.0 or 2.0 Portlets; ADF pages can also consume Portlets, including interesting Portlets such as WebClipping and OmniPortlet.
New Functionality in ADF 11g
The most visible new features in this release are several new ADF Faces Rich Client components. New components in this release:
Calendar – a databound component that presents appointments in the way Web Mail clients do – with Month, Week, Day and List view and support for drag and drop appointments, recurrence and notifications. Furthermore, interactions like click and double click can be configured with for example Popup, Context Menu or Navigate to details.
Dashboard – layout container to quickly create a portal-like UI with multiple columns of panel boxes and built in support for reorganizing the page (dashboard) through drag & drop operations
Hierarchy Viewer (DVT) – a new Data Visualization Component that allows visualization of hierarchical or network data structures; this component renders a graphical view of these data structures and allows navigation through the tree or network structure. User actions can be intercepted and turned into meaningful operations on the Hierarchy.
Active Data Service (ADS)
One interesting area in user interface design and implementation is the area of Server Push (aka Reverse Ajax or Comet-style applications) where it seems as if the Server sends events to the Browser out of its own accord. The effect of this Server Push is an interface that can refresh as events occur on the server. ADF 11g provides the Active Data Service (ADS) that allows components to register for server push and refresh when events arrive from the server. WebLogic 10.1.3.X has some facilities for the ADS and its scalability.
Desktop Integration – Excel as the ADF Client
The new Desktop Integration allows the use of MS Excel as the (desktop) client in ADF. In addition to allowing end users to work on the data & services from ADF in the tool of their choice (!), it also allows them to work in off-line or disconnected mode. Data can be downloaded from the ADF Server to Excel. Then Excel can be taken off-line and the user can not only view the data but also edit it. When the Excel client comes back on line, the data is synchronized with the server end of the application.
Meta Data Services (MDS) and Customization
Not every application will have the same appearance or functionality for each one of its users. Depending on their role, their department or country, the application may take on a slightly different disguise. Some departments want to have this extra field, others use slightly different terminology or workflows. Such customization of applications is supported by ADF 11g; at design time the developer (or customizer) can run JDeveloper in customization mode where the base application can be subjected to specific customizations. These then can be stored in the run time repository of customizations, the MDS. When the application is run, ADF can dynamically determine (per session) which customizations should be applied. At that time, JSPX files and many other XML based resources are processed by MDS and potentially customized before being executed. Note: some customizations are static, This means that these customizations have to be same for all users in the same instance of the application. Different instances of the application can have different sets of static customizations applied. Customization of ADF BC and ADF Model will always be static – determined at deployment time. The latter means that a single application is created and possibly deployed on multiple sites where each site will have a different customization profile applied at deployment time. From a single code base, multiple slightly (or substantially) different instances can be deployed.
In addition to the design time customizations that can either be static or dynamic, there can be run time customizations, created by the end user or some application administrator (or implementation consultant). These run-time customizations are always dynamic. Run time customization can be used by the ADF Faces components that allow run-time manipulation by end users (Panel Accordion, Panel Dashboard, Table,…) as well as by custom components on which the developer can create code to store changes to be reapplied by the framework.