With our SOA server, we constantly ran into issues where the server was looking for composite versions that were already undeployed. This manifests in the BPM Workspace – When a user attempts to create a new view or modify an existing view, the application throws an uncaught exception. Looking at the logs, I saw that the application had references to old versions of some composites which were undeployed and did not list in em.
There were a few different scenarios when this occurred
1) The non-existent versions of composites were still referenced in the deployed-composites/deployed-composites.xml file in the MDS. The solution in this case was to export the MDS using EM, altering the xml file to remove the references and importing back the modified MDS files.
2) In another scenario, this issue occurred even though the XML file was clean. The stack trace looked something like this
at oracle.bpel.services.workflow.fabric.WorkflowServiceEngine.getComponentModel(WorkflowServiceEngine.java:2806) at oracle.bpel.services.workflow.fabric.WorkflowServiceEngine.getTaskDefinition(WorkflowServiceEngine.java:2421) at oracle.bpel.services.workflow.metadata.impl.TaskMetadataCache.getTaskDefinition(TaskMetadataCache.java:355) at oracle.bpel.services.workflow.metadata.impl.TaskMetadataCache.getWorkflowConfiguration(TaskMetadataCache.java:619) at oracle.bpel.services.workflow.metadata.impl.TaskMetadataService.populateOutcomes(TaskMetadataService.java:2069) at oracle.bpel.services.workflow.metadata.impl.TaskMetadataService.populateTaskMetadataDerivedValues(TaskMetadataService.java:2043) at oracle.bpel.services.workflow.metadata.impl.TaskMetadataService.listTaskMetadata(TaskMetadataService.java:436) at sun.reflect.GeneratedMethodAccessor19307.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at oracle.bpel.services.workflow.common.WorkflowServiceCacheEventAdvice.invoke(WorkflowServiceCacheEventAdvice.java:91) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at oracle.bpel.services.workflow.test.workflow.ExceptionTestCaseBuilder.invoke(ExceptionTestCaseBuilder.java:155) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy280.listTaskMetadata(Unknown Source)
Naturally, I went digging into the code (hat tip to JD-GUI!) and discovered that there were orphan references in the WFTASKMETADATA table. Deleting the unnecessary rows from this table followed by a restart of the server resolved the issue for us.