Tuesday, August 31, 2010

MDS saved search brakes application module browser

In order to save search criteria through MDS you need to add configuration in adf-config.xml according to Fusion Developer's Guide for Oracle ADF :
27.2.3 How to Persist Saved Searches into MDS
Yet after you do that if you try to run any application module you get exception:
(oracle.jbo.ConfigException) JBO-33003: Connection name hrconn is not defined.
and in server log:
SEVERE: MDSConfigurationException encountered in parseADFConfigurationMDS-01335: namespace "/persdef" mapped to metadata-store-usage "mdsstore" but its definition was not found in MDS configuration. oracle.mds.config.MDSConfigurationException: MDS-01335: namespace "/persdef" mapped to metadata-store-usage "mdsstore" but its definition was not found in MDS configuration. at oracle.mds.config.PConfig.populateNamespaceConfigList(PConfig.java:811) at oracle.mds.config.PConfig.loadFromBean(PConfig.java:717) at oracle.mds.config.PConfig.(PConfig.java:504) at oracle.mds.config.MDSConfig.loadFromBean(MDSConfig.java:692) at oracle.mds.config.MDSConfig.loadFromElement(MDSConfig.java:749) at oracle.mds.config.MDSConfig.(MDSConfig.java:407)
...

The workaround we found is to remove specific configuration and add it again when we want to deploy.
Is this a bug?
Test case:
http://adfbugs.googlecode.com/files/MDSTest.zip

Tuesday, August 10, 2010

MDS User customization capabilities and cost

I was investigating lately MDS user customization capabilities and cost in order to apply it to our application.
I used the following References
Guides
34 Customizing Applications with MDS
http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/customize.htm
35 Allowing User Customizations at Runtime
http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/ad_persist.htm#CIHHEHCF
13 Managing the Metadata Repository
http://download.oracle.com/docs/cd/E15523_01/core.1111/e10105/repos.htm#CIHDCHCF

Articles
http://www.oracle.com/technology/pub/articles/adf-development-essentials/part8.html

Tutorial
http://www.oracle.com/technology/products/jdev/11/cuecards111/adf_set_18/ccset18_ALL.html
Blogs
http://biemond.blogspot.com/2009/07/customize-and-personalize-your-jsf.html
http://andrejusb.blogspot.com/2009/09/persisting-query-criteria-results.html

I created a demo application:
http://adfbugs.googlecode.com/files/MDSTest.zip
Where user1/welcome1 has customizations:

And user2/welcome2 has not:

And tested also our application with MDS enabled
I came up with the following conclusions :

User customization Persist user changes through MDS is very powerful framework and all users would like to have it, yet it has it limitation and its cost:

Limitations:

1. Save Search: If you Use MDS then you need to configure also Saved search, or else you get exception when you try to save it
2. Components Not all components and attributes are persisted by default and they might override your custom business logic.



3. Deployment: New deployment file is needed (MAR) and configuration in order to define MDS repository domain. Investigation is needed for continues integration and deployment processes and update deployment scripts

Cost
> Performance
-- Increased resources needed on weblogic (memory and disc io)
-- Increased resources needed on database (mds_repository)
-- Lower response time on customisable components
> Increase testing needs
> Increase Administration needs (database, weblogic, metadata management)
> Saved search may break integration between Pages. Workaround may be needed for specific search pages. This will increase development needs
> Increase Support needs.