Wednesday, November 28, 2012

Oracle SOA: Huh, how to resolve "Get initiable processes error BPM-70805" or how to remove damaged composite, ORABPEL-30017 Invalid task definition, part 2

Hello

I totally forgot to write how to solve the problem about which I wrote in one of my previous posts: http://my-java-planet.blogspot.com/2012/09/oracle-soa-huh-how-to-resolve-get.html

So far I have found two solutions. Since the first solution worked well, I didn't try the next.

But let's start from the beginning. After small investigation I found probable cause of the problem. My issue appeared after a failed redeployment of composite application.

I assumed that the easiest way to fix the error is removing the composite. This meant I had to find a place where informations about composites are stored.

After some googling and reviewing may "private library" I found a candidate: the table BPM_CUBE_PROCESS from SOAINFRA schema.
And Bingo!!! After checking the BPM_CUBE_PROCESS table and setting for the invalid process the status to -1,  invalid composite disappeared form Enterprise Manager console.

This was first solution. In the meantime, I came to another track. If the cause of your problem appears some differently, it can be MDBTaskNotificationConsumer issue. If JMS invokes onMessage() in MDBTaskNotificationConsumer before the Fabric engine starts up, this results in failure to load the task component required for notification processing. Unfortunatelly in this case you need patch your SOA/BPM installation

Saturday, November 24, 2012

BPM getLastPerformer() issue: Error when evaluating workflow service XPath extension function, ORABPEL-30043

Few days ago I encountered next :) unexpected Oracle BPM error. Furthermore the error occured when I tried to calculate relatively simple xpath expression bpm:getLastPerformer() to get last performer name (last user who completed a human task). Although I missed this error very quickly, till now I have doubt regarding getLastPerformer function.

Below we have the error message stack:

Error in evaluating workflow service XPath extension function.
[[ Error in evaluating task service XPath extension function {1}.
Check the error stack and fix the cause of the error. Supplemental Detail
ORABPEL-30043

Error in evaluating workflow service XPath extension function.
Error in evaluating task service XPath extension function {1}.
Check the error stack and fix the cause of the error.

at oracle.bpm.bpmn.engine.runtime.xpath.functions.GetLastPerformer.evaluate(GetLastPerformer.java:142) at oracle.xml.xpath.JXPathContext$JXFunction.invoke(JXPathContext.java:159) at oracle.xml.xpath.JXPathContext$JXFunction.invoke(JXPathContext.java:126) at oracle.xml.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:264) at oracle.xml.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:260) at oracle.xml.xpath.JXPathExpression.evaluate(JXPathExpression.java:203) at oracle.bpm.bpmn.engine.runtime.xpath.BPMNXPathUtil.evaluate(BPMNXPathUtil.java:104) at oracle.bpm.bpmn.engine.runtime.BPMNExpression.evaluateXPath(BPMNExpression.java:263) at oracle.bpm.bpmn.engine.runtime.BPMNExpression.evaluate(BPMNExpression.java:242) at oracle.bpm.bpmn.engine.runtime.BPMNExpression.evaluateObject(BPMNExpression.java:185) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.performCopy(DataHandlingUtils.java:1586) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.performAssignmentOperation(DataHandlingUtils.java:1288) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.processInputData(DataHandlingUtils.java:402) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.processInputData(DataHandlingUtils.java:328) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.processInputDataForServiceActivities(DataHandlingUtils.java:294) at oracle.bpm.bpmn.engine.model.runtime.microinstructions.MIProcessMessageInputDataAssociationsForService.doProcessInput(MIProcessMessageInputDataAssociationsForService.java:93) at oracle.bpm.bpmn.engine.model.runtime.microinstructions.MIProcessMessageInputDataAssociationsForService.doExecute(MIProcessMessageInputDataAssociationsForService.java:66) at oracle.bpm.bpmn.engine.model.runtime.microinstructions.MIProcessMessageInputDataAssociationsForService.doExecute(MIProcessMessageInputDataAssociationsForService.java:32) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MISequenceBlock.doExecute(MISequenceBlock.java:68) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.callMicroInstruction(MicroInstructionContext.java:201) at oracle.bpm.bpmn.engine.microkernel.MICall.doExecute(MICall.java:38) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MISequenceBlock.doExecute(MISequenceBlock.java:68) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.callMicroInstruction(MicroInstructionContext.java:201) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.callProcedure(MicroInstructionContext.java:208) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.executeProcedure(MicroInstructionContext.java:325) at oracle.bpm.bpmn.engine.model.runtime.MIBPMNActivityWMP.executeProcedure(MIBPMNActivityWMP.java:391) at oracle.bpm.bpmn.engine.model.runtime.MIBPMNActivityWMP.__executeStatements(MIBPMNActivityWMP.java:308) at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:158) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2561) at com.collaxa.cube.engine.CubeEngine._handleWorkItem(CubeEngine.java:1166) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1072) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:328) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4457) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4388) at com.collaxa.cube.engine.CubeEngine._callbackPerformer(CubeEngine.java:1358) at com.collaxa.cube.engine.CubeEngine.callbackPerformer(CubeEngine.java:1290) at com.collaxa.cube.engine.delivery.DeliveryHelper.callbackPerformer(DeliveryHelper.java:401) at com.collaxa.cube.engine.delivery.DeliveryService.handleCallback(DeliveryService.java:1059) at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleCallback(CubeDeliveryBean.java:322) at sun.reflect.GeneratedMethodAccessor8648.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54) at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy291.handleCallback(Unknown Source) at oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliveryBean_of8dk6_ICubeDeliveryLocalBeanImpl.__WL_invoke(Unknown Source) at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39) at oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliveryBean_of8dk6_ICubeDeliveryLocalBeanImpl.handleCallback(Unknown Source) at com.collaxa.cube.engine.dispatch.message.instance.CallbackDeliveryMessageHandler.handle(CallbackDeliveryMessageHandler.java:47) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:140) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:88) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:64) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)

Caused by:
oracle.fabric.common.xml.xpath.XPathFunctionException: Internal Error : getLastPerformer received null BPMN Workflow XPath Context at oracle.bpm.bpmn.engine.runtime.xpath.functions.GetLastPerformer.evaluate(GetLastPerformer.java:100) at oracle.xml.xpath.JXPathContext$JXFunction.invoke(JXPathContext.java:159) at oracle.xml.xpath.JXPathContext$JXFunction.invoke(JXPathContext.java:126) at oracle.xml.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:264) at oracle.xml.xpath.XPathExtFunction.evaluate(XPathExtFunction.java:261) at oracle.xml.xpath.JXPathExpression.evaluate(JXPathExpression.java:204) at oracle.bpm.bpmn.engine.runtime.xpath.BPMNXPathUtil.evaluate(BPMNXPathUtil.java:104) at oracle.bpm.bpmn.engine.runtime.BPMNExpression.evaluateXPath(BPMNExpression.java:263) at oracle.bpm.bpmn.engine.runtime.BPMNExpression.evaluate(BPMNExpression.java:242) at oracle.bpm.bpmn.engine.runtime.BPMNExpression.evaluateObject(BPMNExpression.java:185) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.performCopy(DataHandlingUtils.java:1586) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.performAssignmentOperation(DataHandlingUtils.java:1288) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.processInputData(DataHandlingUtils.java:405) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.processInputData(DataHandlingUtils.java:328) at oracle.bpm.bpmn.engine.model.runtime.util.DataHandlingUtils.processInputDataForServiceActivities(DataHandlingUtils.java:294) at oracle.bpm.bpmn.engine.model.runtime.microinstructions.MIProcessMessageInputDataAssociationsForService.doProcessInput(MIProcessMessageInputDataAssociationsForService.java:93) at oracle.bpm.bpmn.engine.model.runtime.microinstructions.MIProcessMessageInputDataAssociationsForService.doExecute(MIProcessMessageInputDataAssociationsForService.java:66) at oracle.bpm.bpmn.engine.model.runtime.microinstructions.MIProcessMessageInputDataAssociationsForService.doExecute(MIProcessMessageInputDataAssociationsForService.java:32) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MISequenceBlock.doExecute(MISequenceBlock.java:68) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.callMicroInstruction(MicroInstructionContext.java:201) at oracle.bpm.bpmn.engine.microkernel.MICall.doExecute(MICall.java:38) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MISequenceBlock.doExecute(MISequenceBlock.java:68) at oracle.bpm.bpmn.engine.microkernel.MIBase.execute(MIBase.java:34) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.callMicroInstruction(MicroInstructionContext.java:201) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.callProcedure(MicroInstructionContext.java:208) at oracle.bpm.bpmn.engine.microkernel.MicroInstructionContext.executeProcedure(MicroInstructionContext.java:325) at oracle.bpm.bpmn.engine.model.runtime.MIBPMNActivityWMP.executeProcedure(MIBPMNActivityWMP.java:391) at oracle.bpm.bpmn.engine.model.runtime.MIBPMNActivityWMP.__executeStatements(MIBPMNActivityWMP.java:358) at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:158) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2561) at com.collaxa.cube.engine.CubeEngine._handleWorkItem(CubeEngine.java:1167) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1072) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:328) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4457) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4389) at com.collaxa.cube.engine.CubeEngine._callbackPerformer(CubeEngine.java:1358) at com.collaxa.cube.engine.CubeEngine.callbackPerformer(CubeEngine.java:1290) at com.collaxa.cube.engine.delivery.DeliveryHelper.callbackPerformer(DeliveryHelper.java:401) at com.collaxa.cube.engine.delivery.DeliveryService.handleCallback(DeliveryService.java:1059) at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleCallback(CubeDeliveryBean.java:322) at sun.reflect.GeneratedMethodAccessor8648.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54) at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy291.handleCallback(Unknown Source) at oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliveryBean_of8dk6_ICubeDeliveryLocalBeanImpl.__WL_invoke(Unknown Source) at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39) at oracle.bpm.bpmn.engine.ejb.impl.BPMNDeliveryBean_of8dk6_ICubeDeliveryLocalBeanImpl.handleCallback(Unknown Source) at com.collaxa.cube.engine.dispatch.message.instance.CallbackDeliveryMessageHandler.handle(CallbackDeliveryMessageHandler.java:47) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:140) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:88) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:65) ... 2 more

As I suppose the key to this mystery is bolded part of cited message: "getLastPerformer received null BPMN Workflow XPath Context". But just now I don't know why workflow context passed to getLastPerformer function is null.

To be continued ...

Friday, November 16, 2012

ADF how-to: How to remove Automatic Component Bindings

I spend some time investigating how to remove automatically created component bindings. And finally I found solution which is described here: http://tompeez.wordpress.com/2011/08/28/remove-automatic-component-bindings/

Wednesday, October 31, 2012

JSF Component Generator is just around the corner

Anyone who has ever tried to create custom JSF components knows how it is tedious and time-consuming.

As someone once said "JSF component if pretty complicated beast". To create fully functional custom component, it is not enough to define component logic in custom UIComponent class and also to create custom Renderer. Additionaly you have to create a lot of attributes with special getter’s and setters that interacts with StateHelper in your UIComponent class, you have to spent some time on creating faces configuraion file and tag library descriptors for facelets and maybe for jsp technologies. Regarding TLD's, you have to write TagHandler class. In addition, it may be necessary to create additional handlers or listeners, and so on and so on ...

There remains a question whether much of this work can be automated?

It really can! I hereby announce the solution of mentioned problems, the generator of JSF components. If you will be interested, please check my blog in few days, the beta version will be available to download.

Saturday, October 27, 2012

ADF Essentials: at first sight all looks great

A few weeks ago Oracle released new, free distribution of Application Development Framework. To the surprise of developers the ADF Essentials contains a key technologies from "adult" ADF framework distribution:
  • ADF Faces 
  • ADF Data Visualization Tools 
  • ADF Controller 
  • ADF Model/Databinding 
  • ADF Business Components
If you believe in the media announcements and commentary, only ADF security is not included in the set. But ... there are some additional elements not contained in ADF Essentials pack:
  • ADF Security 
  • ADF Desktop Integration 
  • ADF Mobile Browser / Trinidad 
  • ADF Swing 
  • ADF Business Composer 
  • MetaData Services (MDS)(MetaData Services (MDS) may only be used in read-only mode with ADF Essentials. Use of MDS for cross-session personalization or persisted customization with ADF Essentials is not permitted.) 
I not verified till now the ADF Essentials functionality in practice, but I would check this ASAP:) Anyway I can only tell you: at first sight all looks pretty good.

You can download Oracle ADF Essentials libraries from this page: http://www.oracle.com/technetwork/developer-tools/adf/downloads/index.html.

Wednesday, October 10, 2012

WebcenterPortal oracle.adf.controller.ControllerException: ADFC-06002: Unhandled exception

The exception which I got today in Webcenter Portal application revealed a relatively strange message:


The page on which the message appears contains a region with embedded task-flow. Of course task-flow wasn't loaded. The strange in this case was that everything worked perfectly for several days, furthermore there wasn't any changes implemented in application or middleware.

I suspected that the clue of problem lays in errors in MDS. And voilĂ , after a little cleaning all again works perfectly.

But. The question is, what the hell was this !!!