Sunday, January 30, 2011

Configuring Missing Contribution Folders for Oracle UCM 11g and WebCenter 11g PS3

After installation of Oracle UCM 11g (Enterprise Content Management Suite 11g), you will see that there are no UCM Contribution Folders by default (folder structure is missing). At least, this happened to me and my colleague - we were following standard installation procedures for ECM Suite 11g. Because there are no Contribution Folders enabled by default, WebCenter ADF Task Flows for UCM document management will not work.

After doing some research on UCM, we found that Folders_g component must be configured in UCM, for Contribution Folders to be enabled. If you will search ECM Suite 11g installation guide for Folders_g, will find one entry:

Chapter 5.7 is about Desktop Integration Suite configuration, however it gives some insights about Folders_g configuration as well - it is possible to enable this component from UCM Administration wizard home page (open UCM Admin Server and scroll down on its home page to Folders section):

Select check-box for Folders_g component from UCM Admin home screen, restart UCM Managed Server and here we go - Contribution Folders available:

To enable UCM connection from WebCenter Spaces, first enable RIDC access to UCM by specifying IP Address Filter. This can be done through Oracle Enterprise Manager, I have set access for any IP and 7777 port for RIDC connections:

Configure WebCenter Spaces to access UCM through RIDC socket connection:

WebCenter Spaces 11g PS3 Document service works fine, ADF Task Flows for UCM document management allow to upload/download content:

Saturday, January 29, 2011

WebCenter Spaces PS3 - Discussion Server Plug and Play

I'm positively surprised about how much is simplified Discussion Server configuration with WebCenter Spaces PS3. Almost one year ago I was blogging about Discussion Server setup with WebCenter Spaces PS2 - WebCenter 11g Discussion Service in Oracle ADF, honestly it was a bit of nightmare to setup all these security certificates and make it work properly. You can forget this now, setup processes is simplified to the minimum and can be completed in few minutes. I will walk you through Discussion Server setup with WebCenter Spaces PS3 and will give few hints for WebCenter PS3 setup on Oracle XE database, where you had previously installed PS2 RCU schemas.

In my case, after WebCenter Spaces PS3 setup was completed (I'm using Oracle XE with proper parameters for Oracle Fusion installation), WebCenter Managed Server was starting with MDS PL/SQL error - MDS_INTERNAL_SHREDDED package is missing (this error is happening after you drop PS2 RCU schemas and install PS3 on the same database). I have fixed this error, by opening DEV_MDS schema and recompiling problematic package - it was compiled successfully. If you will face same problem with MDS PL/SQL package, try to recompile it same as I did:

You can recompile PL/SQL package inside DEV_MDS schema directly from JDeveloper:

WebCenter Spaces PS3 Managed Server should start without errors - up and running:

Thats only one configuration issue I have faced, the rest was working all smooth. To configure Discussion Server with WebCenter Spaces PS3, open Oracle Enterprise Manager and go to WebCenter Spaces PS3 Service Configuration:

Select Discussions and Announcements from the list:

Provide following Discussion Server configuration parameters:

Connection Name: DiscussionsServer (or other name)
Active Connection: Yes
Server URL: (change according your environment)
Administrator User Name: weblogic
Authenticated User Web Service Policy URI: WSS 1.0 SAML Token Client Policy
Public User Web Service Policy URI: None

Authenticated User Web Service Policy URI allows to authenticate from WebCenter Spaces PS3 to Discussion Server without defining security certificates.

Its time to open WebCenter Spaces PS3, product load time performance simply can't be compared with previous release PS2 (huge performance improvements in PS3). I personally prefer to set Fusion Side Navigation model for WebCenter Spaces PS3, this will allow to render WebCenter Spaces user interface environment similar to Facebook - change Default Page Template through Configuration settings:

WebCenter Spaces PS3 landing page - looks cool:

Let's create new Space for Discussion service:

Select predefined Discussion Site template for newly defined Space:

We can post forum questions now directly from WebCenter Spaces portal:

Post answers as well to the forum associated with Red Samurai Support Space:

The same forum can be opened and viewed directly from Discussion Server:

Discussion group was automatically created and associated with our Space, we can see this from Discussion Task Flow path:

Facebook type announcement service displays recent activity from Red Samurai Support Space:

Wednesday, January 26, 2011

ADF 11g PS3 Runtime Performance 2-3 Times Faster vs. ADF 11g PS2

There are really exciting news with ADF 11g PS3, I did some practical test experiments and can see that ADF runtime performance with the new release is about 2-3 times faster comparing to previous ADF 11g PS2 release. Performance tests were done on production project, I replicated the same tests on sample application based on standard example HR schema from Oracle XE database. Both tests for PS2 and PS3 were done on the same machine, the same ADF application. I will not only describe performance improvements in PS3, but will go a bit deeper and describe performance friendly patterns for CRUD type operations. I will be focusing on editable/read-only ADF tables comparison for CRUD type operations - CRUD Operations in Oracle ADF 11g Table Without Auto PPR.

Download typical Master-Detail ADF sample application - All experiments in this blog post will be done based on that sample.

This application contains Master data page for Departments - tests will performed with DepartmentId = 50:

Detail data - editable Employees table at first run is opened in 3.97 seconds (PS2):

During second run, same table is opened in 2.13 seconds (PS2):

Logically, second run is faster, because required components static data (Java Script, images, etc.) was already loaded during the first run.

Will repeat the same actions with PS3. At first run, detail table is loaded in 2.97 seconds (PS3). Which is by 1 second faster comparing to previous PS2 release - good improvement:

During second run, same screen opens in 1.13 seconds (PS3). Again, exactly by 1 second faster, comparing to the same test on PS2 release:

Okej, it was editable table test. Let's try to achieve less than 1 second opening for the detail screen. Will try to enable clickToEdit mode for editable ADF table - change Editing Mode property:

The same detail screen on PS2 opens in 3.63 seconds (PS2) at first run, there is slight improvement, but not much:

During second run, it opens in 2.2 seconds (PS2) - even slower or almost the same as editable table:

It looks like there is no difference in terms of performance to use directly editable table or clickToEdit functionality.

Let's look how the same mode (clickToEdit) will perform on PS3. First run of detail screen gives 2.38 seconds (PS3). This is faster then editable PS3 and PS2, but still more than 1 second:

Finally, second run gives 1.08 seconds (PS3) - we are close to 1 second (clickToEdit helps us in PS3):

What if we consider different approach and will use read-only table, user will be allowed to edit records by invoking editable ADF Faces popup (description - CRUD Operations in Oracle ADF 11g Table Without Auto PPR). From my experience, this approach is quite popular and users prefer it especially for large and complex tables. We create read-only table for detail data:

Will enable row selection, this will help user to open popup through double-click on the row:

In order to enable popup opening by row double-click, add clientListener and serverListener to the table component:

clientListener will handle row double-click event:

serverListener will call backing bean method to raise popup:

JSF Fragment component contains Java Script for clientListener:

serverListener calls simple backing bean method and opens popup component:

During first run, it gives now 2.83 seconds (PS2) for read-only table, obviously faster comparing to editable or clickToEdit approaches:

Yes, during second run we have 781 mili-seconds (PS2), finally less than a second ! Here we go:

User can double-click on the record - editable popup is opened in 1.13 seconds (PS2):

On the second run, editable popup is opened faster in 813 mili-seconds (PS2):

Pop-up is closed in 672 mili-seconds (PS2):

Now we will test read-only table opening performance on PS3. During first run, it opens record fast - just 1.05 seconds (PS3):

Second run for read-only table is completed super fast - in 329 mili-seconds (PS3):

Editable pop-up opening is done in 703 mili-seconds (PS3):

Pop-up is closed in 234 mili-seconds (PS3):

I'm really happy to see such great ADF 11g PS3 runtime performance improvements !

Thursday, January 20, 2011

WebCenter PS3 Navigation Model - Menu Out Of The Box

With the new release of JDeveloper - PS3, we can install WebCenter PS3 extensions (use Check for Updates, see here). There are tons of new features, and bugs also? Let's hope that no :) Product is definitely improving with new features and becoming really attractive. New term is introduced - WebCenter Portal Framework application. This means we are not building anymore just WebCenter applications based on ADF framework. We are implementing portals ! Sounds inspiring - too good to be true? :) Well we will see, how stable this product will be - I will cover many topics from functionality to performance, in my future posts. Seems like lots of material for blogging this year ! :) On positive note - remember early ADF 11g TP releases, it takes time to make it solid. Now we can work with really stable framework.

Today I will start with easy topic - introduce WebCenter PS3 Navigation Model. Remember those times when we were implementing database driven dynamic menus ? Good - now you can forget it, now we have declarative dynamic menu provided by WebCenter PS3. One of the key things - its not limited to work only with one type of content. It supports everything - pages, ADF task flows, UCM content, external Web pages. Please read - Building a Navigation Model for Your Portal and Visualizing Your Portal Navigation from WebCenter PS3 developer guide. Its very useful to be aware of different options for Expression Language related to navigation.

Download sample application - This application is created as WebCenter Portal Application:

Wizard will guide you through application setup steps - Portal creation:

Make sure you configure your application with standard Portal features in the same wizard (otherwise forget it to make it working right):

WebCenter Portal application is generated without Model project. I have created one manually and implemented ADF BC objects:

Portal project contains predefine folder structure - don't touch it, it should stay like that. In order to be able to consume all WebCenter Portal Framework features, you should create your components inside that structure as well. For example, I have created ADF task flow with fragment:

You should create ADF task flow inside predefined folder structure. Same applied for JSF fragments:

In order to define menu model, open default-navigation-model.xml file, add menu items there:

You can point to different targets, external pages, ADF task flows or other resources. Here I'm pointing to ADF task flow:

This simple application will work with anonymous access, we will not test security model now (new pages hierarchy wizard):

Anonymous role is granted to the ADF task flow as well:

From ADF Faces page we are simply referencing navigation model and rendering menu nodes:

You should keep in mind that WebCenter Portal Application entry file is index.html:

Right click on Portal project and choose Run:

WebCenter Portal Application screen will be rendered - default menu defined in default-navigation-model.xml file is rendered as well:

Click on Oracle menu item - external page is rendered inside ADF page automatically:

Same works for the second menu item:

Third link brings ADF task flow and allows to update information retrieved from database: