Hi Sathwick,
Please find attached the process artifacts. I am attaching the
individual files as I am not sure if the zip file gets stripped off.
I have not tried deploying the same on ode 1.3.6 as we use Oracle as
the back end. This needs a set of changes to the ode.war. I will confirm to
you if this happens on ode 1.3.6 once I check on the same.
Thank you for the reply. Awaiting your response.
Regards,
Vinay
> -----Original Message-----
> From: Sathwik B P [mailto:[email protected]]
> Sent: Friday, April 10, 2015 3:15 PM
> To: [email protected]
> Subject: Re: Issue with execution of process having parallel activity
>
> Hi Vinay,
>
> Are you in production with ODE 1.3.5?
>
> Can you check if this happens on ODE 1.3.6?
>
> Can you attach the complete process artifacts? Will try on my side.
>
> regards,
> sathwik
>
> On Thu, Apr 9, 2015 at 6:54 AM, Vinay Official <[email protected]>
> wrote:
>
> > Hi,
> > 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)
> >
>
<?xml version="1.0"?>
<definitions name="ParallelProcess"
targetNamespace="http://www.abc.com/EPM/WSDL/ParallelProcess"
xmlns:tns="http://www.abc.com/EPM/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.abc.com/EPM/Schema/ParallelProcess">
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE DEFINITION - List of services participating in this BPEL process
The default output of the BPEL designer uses strings as input and
output to the BPEL Process. But you can define or import any XML
Schema type and us them as part of the message types.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<types>
<schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://www.abc.com/EPM/WSDL/ParallelProcess"
xmlns="http://www.w3.org/2001/XMLSchema">
<import schemaLocation="ParallelProcess.xsd" namespace="http://www.abc.com/EPM/Schema/ParallelProcess"/>
</schema>
</types>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MESSAGE TYPE DEFINITION - Definition of the message types used as
part of the port type defintions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<message name="ParallelProcessRequestMessage">
<part name="payload" element="psns:ParallelProcessRequest"/>
</message>
<message name="ParallelProcessResponseMessage">
<part name="payload" element="psns:ParallelProcessResponse"/>
</message>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PORT TYPE DEFINITION - A port type groups a set of operations into
a logical service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- portType implemented by the ParallelProcess BPEL process -->
<portType name="ParallelProcess">
<operation name="initiate">
<input message="tns:ParallelProcessRequestMessage"/>
</operation>
</portType>
<!-- portType implemented by the requester of ParallelProcess BPEL process
for asynchronous callback purposes
-->
<portType name="ParallelProcessCallback">
<operation name="onResult">
<input message="tns:ParallelProcessResponseMessage"/>
</operation>
</portType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PARTNER LINK TYPE DEFINITION
the ParallelProcess partnerLinkType binds the provider and
requester portType into an asynchronous conversation.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<plnk:partnerLinkType name="ParallelProcess">
<plnk:role name="ParallelProcessProvider" portType="tns:ParallelProcess"/>
<plnk:role name="ParallelProcessRequester" portType="tns:ParallelProcessCallback"/>
</plnk:partnerLinkType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BINDING DEFINITION - Defines the message format and protocol details
for a web service.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<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.abc.com/EPM/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.abc.com/EPM/WSDL/ParallelProcess/onResult"/>
<input>
<soap:body use="literal"/>
</input>
</operation>
</binding>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SERVICE DEFINITION - A service groups a set of ports into
a service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<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>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.abc.com/EPM/Schema/ParallelProcess"
xmlns:tns="http://www.abc.com/EPM/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>
<?xml version="1.0" encoding="UTF-8"?>
<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
xmlns:proNs="http://www.abc.com/EPM/BPEL/ParallelProcess"
xmlns:ns2="http://www.abc.com/EPM/WSDL/ParallelProcess"
>
<process name="proNs:ParallelProcess">
<active>true</active>
<in-memory>false</in-memory>
<provide partnerLink="ParallelProcess_plink">
<service name="ns2:ParallelProcess" port="ParallelProcessPort" />
</provide>
</process>
</deploy>