I have rewritten the question with more details. Apologies for not giving enough details. I am facing issue in Apache ODE while creating an instance with flow activity. I am able to create an instance through soap ui. The issue is that though the branches begin to execute in parallel only one branch completes the execution while other branch does not complete execution of all the activities in that parallel branch.
The bpel process that I authored has 2 flow branches. One branch calculates the sum of 2 numbers, waits for a fixed period and adds a fixed offset to the sum. The other branch calculates the product of 2 numbers, waits for a fixed period and adds a fixed offset to the product. Please note that there are no invokes in the process. I have pasted the code for reference.
When I see the ode logs, I see InstanceNotFoundException. But the instance is present in BPEL_INSTANCE table. I have pasted the logs below. I am not sure if this is related to the current issue I am facing.
I inspected the BPEL_EVENT table and saw that not all ode events are logged for the process. At a high level following activity events are only logged for the flow activity:
Flow1 start, FlowSequence2 start, AssignProduct start, FlowSequence1 start, AssignSum start, AssignSum end, wait1 start, AssignProduct end, wait2 start, wait1 end, Assign1 start, Assign1 end, FlowSequence1 end
If you notice above there are no events logged for wait2 end, Assign2 start & end, FlowSequence2 end, ProcessCompletionEvent. The instance is not completed and is in active state.
If I create another instance, the activities of FlowSequence2 might fully complete, but that of FlowSequence1 will not be completed.
I have deployed apache ode 1.3.5 on tomcat 6 with Oracle 11g as the database.
Find below the code:
BPEL
<?xml version="1.0" encoding="UTF-8"?>
<process
name="ParallelProcess"
targetNamespace="http://www.example.com/BPEL/ParallelProcess"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.com/BPEL/ParallelProcess"
xmlns:pwsdl="http://www.example.com/WSDL/ParallelProcess"
xmlns:pxsd="http://www.example.com/Schema/ParallelProcess"
>
<import namespace="http://www.example.com/WSDL/ParallelProcess" location="ParallelProcess.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<partnerLinks>
<partnerLink name="ParallelProcess_plink" partnerLinkType="pwsdl:ParallelProcess" myRole="ParallelProcessProvider" partnerRole="ParallelProcessRequester"/>
</partnerLinks>
<variables>
<variable name="ParallelProcessIn" messageType="pwsdl:ParallelProcessRequestMessage"/>
<variable name="ParallelProcessOut" messageType="pwsdl:ParallelProcessResponseMessage"/>
</variables>
<sequence>
<receive name="ReceiveInput" createInstance="yes" partnerLink="ParallelProcess_plink" operation="initiate" portType="pwsdl:ParallelProcess" variable="ParallelProcessIn"/>
<assign name="AssignInit">
<copy>
<from>
<literal><pxsd:ParallelProcessResponse><pxsd:Sum/><pxsd:Product/></pxsd:ParallelProcessResponse></literal>
</from>
<to>
$ParallelProcessOut.payload
</to>
</copy>
</assign>
<flow name="Flow1">
<sequence name="FlowSequence1">
<assign name="AssignSum">
<copy>
<from>$ParallelProcessIn.payload/pxsd:Number1 + $ParallelProcessIn.payload/pxsd:Number2</from>
<to>$ParallelProcessOut.payload/pxsd:Sum</to>
</copy>
</assign>
<wait name="Wait1">
<for>'PT5S'</for>
</wait>
<assign name="Assign1">
<copy>
<from>$ParallelProcessOut.payload/pxsd:Sum + 2</from>
<to>$ParallelProcessOut.payload/pxsd:Sum</to>
</copy>
</assign>
</sequence>
<sequence name="FlowSequence2">
<assign name="AssignProduct">
<copy>
<from>$ParallelProcessIn.payload/pxsd:Number1 * $ParallelProcessIn.payload/pxsd:Number2</from>
<to>$ParallelProcessOut.payload/pxsd:Product</to>
</copy>
</assign>
<wait name="Wait2">
<for>'PT5S'</for>
</wait>
<assign name="Assign2">
<copy>
<from>$ParallelProcessOut.payload/pxsd:Product + 2</from>
<to>$ParallelProcessOut.payload/pxsd:Product</to>
</copy>
</assign>
</sequence>
</flow>
</sequence>
</process>
WSDL
<?xml version="1.0"?>
<definitions name="ParallelProcess"
targetNamespace="http://www.example.com/WSDL/ParallelProcess"
xmlns:tns="http://www.example.com/WSDL/ParallelProcess"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:psns="http://www.example.com/Schema/ParallelProcess">
<types>
<schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://www.example.com/WSDL/ParallelProcess"
xmlns="http://www.w3.org/2001/XMLSchema">
<import schemaLocation="ParallelProcess.xsd" namespace="http://www.example.com/Schema/ParallelProcess"/>
</schema>
</types>
<message name="ParallelProcessRequestMessage">
<part name="payload" element="psns:ParallelProcessRequest"/>
</message>
<message name="ParallelProcessResponseMessage">
<part name="payload" element="psns:ParallelProcessResponse"/>
</message>
<portType name="ParallelProcess">
<operation name="initiate">
<input message="tns:ParallelProcessRequestMessage"/>
</operation>
</portType>
<portType name="ParallelProcessCallback">
<operation name="onResult">
<input message="tns:ParallelProcessResponseMessage"/>
</operation>
</portType>
<plnk:partnerLinkType name="ParallelProcess">
<plnk:role name="ParallelProcessProvider" portType="tns:ParallelProcess"/>
<plnk:role name="ParallelProcessRequester" portType="tns:ParallelProcessCallback"/>
</plnk:partnerLinkType>
<binding name="ParallelProcessBinding" type="tns:ParallelProcess">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="initiate">
<soap:operation
soapAction="http://www.example.com/WSDL/ParallelProcess/initiate"/>
<input>
<soap:body use="literal"/>
</input>
</operation>
</binding>
<binding name="ParallelProcessCallbackBinding" type="tns:ParallelProcessCallback">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="onResult">
<soap:operation
soapAction="http://www.example.com/WSDL/ParallelProcess/onResult"/>
<input>
<soap:body use="literal"/>
</input>
</operation>
</binding>
<service name="ParallelProcess">
<port name="ParallelProcessPort" binding="tns:ParallelProcessBinding">
<soap:address location="http://localhost:8086/ode/processes/ParallelProcessPort"/>
</port>
</service>
<service name="ParallelProcessCallback">
<port name="ParallelProcessPortCallbackPort" binding="tns:ParallelProcessCallbackBinding">
<soap:address location="http://localhost:8086/ode/processes/ParallelProcessPortCallbackPort"/>
</port>
</service>
</definitions>
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/Schema/ParallelProcess"
xmlns:tns="http://www.example.com/Schema/ParallelProcess"
elementFormDefault="qualified">
<xsd:complexType name="ParallelProcessRequestComplexType">
<xsd:sequence>
<xsd:element name="Number1" type="xsd:integer"/>
<xsd:element name="Number2" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ParallelProcessResponseComplxType">
<xsd:sequence>
<xsd:element name="Sum" type="xsd:integer"/>
<xsd:element name="Product" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ParallelProcessRequest" type="tns:ParallelProcessRequestComplexType"/>
<xsd:element name="ParallelProcessResponse" type="tns:ParallelProcessResponseComplxType"/>
</xsd:schema>
ODE Log
org.apache.ode.bpel.pmapi.InstanceNotFoundException: InstanceNotFoundException 500
at org.apache.ode.bpel.engine.ProcessAndInstanceManagementImpl.genInstanceInfoDocument(ProcessAndInstanceManagementImpl.java:740)
at org.apache.ode.bpel.engine.ProcessAndInstanceManagementImpl.access$700(ProcessAndInstanceManagementImpl.java:152)
at org.apache.ode.bpel.engine.ProcessAndInstanceManagementImpl$7.run(ProcessAndInstanceManagementImpl.java:403)
at org.apache.ode.bpel.engine.ProcessAndInstanceManagementImpl$7.run(ProcessAndInstanceManagementImpl.java:401)
at org.apache.ode.bpel.engine.BpelDatabase$1.call(BpelDatabase.java:76)
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284)
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
at org.apache.ode.bpel.engine.BpelDatabase.exec(BpelDatabase.java:74)
at org.apache.ode.bpel.engine.ProcessAndInstanceManagementImpl.getInstanceInfo(ProcessAndInstanceManagementImpl.java:401)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.ode.il.DynamicService.invoke(DynamicService.java:71)
at org.apache.ode.axis2.service.ManagementService$DynamicMessageReceiver.invokeBusinessLogic(ManagementService.java:126)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)