Sunday, January 29, 2012

BPM 11g complex human task MDSException

Oracle BPM 11g offers 'complex' user tasks which are helpful in defining complex user tasks - for instance dynamically define participant list using business rules. This is all fine. However, while compiling the BPM process where complex user task builds participant list using business rules, we might stumble upon a compilation error;

Error: BPM-71504: Unexpected error parsing ‘oramds:///soa/shared/workflow/TaskEvidenceService.xsd’.  Cause: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/soa/shared/workflow/TaskEvidenceService.xsd does not exist..  Action: Verify that file is valid and accessible

This is a known issue as the process is unable to read the workflow related schemas' from MDS repository. This is due to the fact that there are additional slashes added to the oramds url at design time. The fix is to manually remove them from the XSD files created. Open the generated XSD files in the BPM project and ensure that additional slashes are removed from the schema imports.


oramds:///soa/shared/workflow/TaskEvidenceService.xsd should read as oramds:/soa/shared/workflow/TaskEvidenceService.xsd [2 additional slashes must be removed manually].

JDeveloper "oramds" protocol support not available error

Recently I stumbled upon an issue in JDeveloper where 'execData' element under the 'Data Associations' of user task activity would show an 'error'. This means that none of the process runtime variables available within this element could be used within the process.

On closer observation, I noticed that there were warnings when JDeveloper is booted as shown below;

"oramds" protocol support not available because no application was associated with IDE context.
Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/WorkflowTask.xsd".
"oramds" protocol support not available because no application was associated with IDE context.
Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/WorkflowCommon.xsd".
"oramds" protocol support not available because no application was associated with IDE context.
Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/TaskEvidenceService.xsd".
"oramds" protocol support not available because no application was associated with IDE context.
Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/TaskEvidenceService.xsd".

However, I was not using any MDS connections in my BPM process. Issue was that if there is any open project in JDeveloper which uses MDS and if it is not the first project to load while JDeveloper starts, other projects are unable to load the execData information.

Solution is to either close the BPM project that uses MDS connection or ensure that it is the first project to load when JDeveloper loads. Now, there would be no warnings during JDeveloper boot and execData elements are accessible within user tasks.