0 Replies Latest reply on Jul 18, 2008 9:02 AM by Christoph Salvisberg

    BPEL Correlation & Eventhandling

    Christoph Salvisberg Newbie

      For my bachelor thesis I am working on the implementation of a specific BPEL Process and I am stuck since days with an CorrelationViolation.
      I optain an CorrelationViolation when I invoke the openServiceCall operation. If I delete the whole Eventhandler part, the invoking of the openServiceCall isn't a problem at all, and the correlation worked with before with several recieve/return paires instead of event handler, but this won't serve the purpose.

      Any kind of help would highly be appreciated.
      Thanks


      Environment:
      AS: jboss-4.2.2.GA
      BPEL Engine: jbpm-bpel-1.1.GA
      OS: Windows XP Pro SP2

      optained error

      15:00:39,640 ERROR [StartListener] request delivery failed due to non-recoverable exception, giving up
      org.jbpm.bpel.graph.exe.BpelFaultException: org.jbpm.bpel.graph.exe.FaultInstance@1be6f3c[name={http://docs.oasis-open.org/wsbpel/2.0/process/executable}correlationViolation]
       at org.jbpm.bpel.integration.exe.CorrelationSetInstance.checkInitialized(CorrelationSetInstance.java:117)
       at org.jbpm.bpel.integration.exe.CorrelationSetInstance.getProperties(CorrelationSetInstance.java:92)
       at org.jbpm.bpel.integration.def.Correlations.getReceptionProperties(Correlations.java:72)
       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:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
       at org.jbpm.bpel.integration.def.Correlations_$$_javassist_43.getReceptionProperties(Correlations_$$_javassist_43.java)
       at org.jbpm.bpel.integration.jms.RequestListener.formatSelector(RequestListener.java:106)
       at org.jbpm.bpel.integration.jms.RequestListener.<init>(RequestListener.java:80)
       at org.jbpm.bpel.integration.jms.JmsIntegrationService.jmsReceive(JmsIntegrationService.java:80)
       at org.jbpm.bpel.integration.jms.JmsIntegrationService.receive(JmsIntegrationService.java:70)
       at org.jbpm.bpel.graph.exe.ScopeInstance.enableEvents(ScopeInstance.java:221)
       at org.jbpm.bpel.integration.def.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:144)
       at org.jbpm.bpel.integration.def.ProcessInstanceStarter.visit(ProcessInstanceStarter.java:61)
       at org.jbpm.bpel.integration.def.ReceiveAction.initializeProcessInstance(ReceiveAction.java:87)
       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:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
       at org.jbpm.bpel.integration.def.ReceiveAction_$$_javassist_93.initializeProcessInstance(ReceiveAction_$$_javassist_93.java)
       at org.jbpm.bpel.integration.jms.StartListener.deliverRequest(StartListener.java:210)
       at org.jbpm.bpel.integration.jms.StartListener.onMessage(StartListener.java:168)
       at org.jboss.mq.SpyMessageConsumer.run(SpyMessageConsumer.java:682)
       at java.lang.Thread.run(Thread.java:595)
      



      createServiceCall.bpel
      <process
       name="createServiceCall"
       targetNamespace="http://coresystems.ch/bt/bpel/createServiceCall"
       xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:tns="http://coresystems.ch/bt/bpel/createServiceCall"
       xmlns:nswsdl="http://coresystems.ch/bt/wsdl/createServiceCall" xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor" xmlns:ns0="http://www.coresystems.ch/webservices" xmlns:ns1="http://coresystems.ch/bt/xsd/createServiceCall">
      
       <!-- IMPORTS OF WSDL FILES -->
       <import namespace="http://coresystems.ch/bt/wsdl/createServiceCall" location="createServiceCall.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
      
       <!-- PARTNER LINK DECLARATION -->
       <partnerLinks>
       <partnerLink name="ClientPartnerLink" partnerLinkType="nswsdl:ClientPartnerLink" myRole="customer"/>
       </partnerLinks>
      
       <!-- VARIABLE DECLARATIONS -->
       <variables>
       <variable name="businessPartnerID" type="xsd:string"/>
       <variable name="serviceCallID" type="xsd:string"/>
       <variable name="systemOrEquipIsChosen" type="xsd:boolean"/>
       <variable name="openServiceCallInput" messageType="nswsdl:openServiceRequestInMessage"/>
       <variable name="openServiceCallOutput" messageType="nswsdl:openServiceRequestOutMessage"/>
       </variables>
      
       <!-- PROCESS ITSELF -->
       <correlationSets>
       <correlationSet name="serviceCallCreation" properties="nswsdl:requestID"/>
       </correlationSets>
       <eventHandlers>
       <onEvent partnerLink="ClientPartnerLink" operation="getSystems" portType="nswsdl:openServiceRequest" variable="getSystemsIn" messageType="nswsdl:getSystemsOperationRequest">
       <correlations>
       <correlation set="serviceCallCreation" initiate="no"/>
       </correlations>
       <scope name="Scope1">
       <variables>
       <variable name="getSystemsOut" messageType="nswsdl:getSystemsOperationResponse"/>
       <variable name="getSystemsIn" messageType="nswsdl:getSystemsOperationRequest"/>
       </variables>
       <sequence name="Sequence1">
       <assign name="Assign1">
       <copy>
       <from variable="serviceCallID"/>
       <to>$getSystemsOut.getSystemsObject/serviceCallID</to>
       </copy>
       </assign>
       <reply name="replyGetSystems" partnerLink="ClientPartnerLink" operation="getSystems" portType="nswsdl:openServiceRequest" variable="getSystemsOut">
       <correlations>
       <correlation set="serviceCallCreation" initiate="no"/>
       </correlations>
       </reply>
       </sequence>
       </scope>
       </onEvent>
       </eventHandlers>
       <sequence name="mainSequence">
       <receive name="openServiceCall" createInstance="yes" partnerLink="ClientPartnerLink" operation="openServiceRequest" portType="nswsdl:openServiceRequest" variable="openServiceCallInput">
       <correlations>
       <correlation set="serviceCallCreation" initiate="yes"/>
       </correlations>
       </receive>
       <assign name="assignIDs">
       <copy>
       <from>$openServiceCallInput.openServiceObject/businessPartnerID</from>
       <to variable="businessPartnerID"/>
       </copy>
       <copy>
       <from>$openServiceCallInput.openServiceObject/serviceCallID</from>
       <to variable="serviceCallID"/>
       </copy>
       <copy>
       <from>$openServiceCallInput.openServiceObject/serviceCallID</from>
       <to>$openServiceCallOutput.openServiceObject/serviceCallID</to>
       </copy>
       <copy>
       <from>true()</from>
       <to>$openServiceCallOutput.openServiceObject/serviceCreationSuccessfull</to>
       </copy>
       </assign>
       <reply name="openServiceCallReturn" partnerLink="ClientPartnerLink" operation="openServiceRequest" portType="nswsdl:openServiceRequest" variable="openServiceCallOutput">
       <correlations>
       <correlation set="serviceCallCreation" initiate="no"/>
       </correlations>
       </reply>
       </sequence>
      </process>
      


      createServiceCall.wsdl
      <?xml version="1.0" encoding="UTF-8"?>
      <definitions name="createServiceCall" targetNamespace="http://coresystems.ch/bt/wsdl/createServiceCall"
       xmlns="http://schemas.xmlsoap.org/wsdl/"
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:tns="http://coresystems.ch/bt/wsdl/createServiceCall"
       xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
       xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:ns0="http://coresystems.ch/bt/xsd/createServiceCall" xmlns:ns1="http://coresystems.ch/bt/xsd/createServiceCall">
      
      
       <!-- MESSAGES -->
       <types>
       <xsd:schema targetNamespace="http://coresystems.ch/bt/wsdl/createServiceCall" xmlns:tns="http://coresystems.ch/bt/wsdl/createServiceCall" xmlns:ns2="http://www.coresystems.ch/webservices">
       <xsd:import schemaLocation="createServiceCallSchema.xsd" namespace="http://www.coresystems.ch/webservices"/>
       <xsd:element name="openServiceRequestInType">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element name="businessPartnerID" type="xsd:string"></xsd:element>
       <xsd:element name="serviceCallID" type="xsd:string"></xsd:element>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       <xsd:element name="openServiceRequestOutType">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element name="serviceCreationSuccessfull" type="xsd:boolean"></xsd:element>
       <xsd:element name="serviceCallID" type="xsd:string"></xsd:element>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       <xsd:element name="getSystemsInType">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element name="serviceCallID" type="xsd:string"></xsd:element>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       <xsd:element name="getSystemsOutType">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element name="serviceCallID" type="xsd:string"></xsd:element>
       <xsd:element name="systemArray" type="ns2:ArrayOfBPSystemInfo"></xsd:element>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       </xsd:schema>
       </types>
       <message name="openServiceRequestInMessage">
       <part name="openServiceObject" element="tns:openServiceRequestInType"/>
       </message>
       <message name="openServiceRequestOutMessage">
       <part name="openServiceObject" element="tns:openServiceRequestOutType"/>
       </message>
      
       <message name="getSystemsOperationRequest">
       <part name="getSystemsObject" element="tns:getSystemsInType"/>
       </message>
       <message name="getSystemsOperationResponse">
       <part name="getSystemsObject" element="tns:getSystemsOutType"/>
       </message>
       <portType name="openServiceRequest">
       <operation name="openServiceRequest">
       <input name="input" message="tns:openServiceRequestInMessage"/>
       <output name="output" message="tns:openServiceRequestOutMessage"/>
       </operation>
       <operation name="getSystems">
       <input name="input1" message="tns:getSystemsOperationRequest"/>
       <output name="output1" message="tns:getSystemsOperationResponse"/>
       </operation>
       </portType>
      
       <!-- PARTNERLINKS -->
       <plnk:partnerLinkType name="ClientPartnerLink">
       <plnk:role name="customer" portType="tns:openServiceRequest"/>
       </plnk:partnerLinkType>
      
       <vprop:property name="requestID" type="xsd:string"/>
       <vprop:propertyAlias propertyName="tns:requestID" messageType="tns:openServiceRequestOutMessage" part="openServiceObject">
       <vprop:query>/tns:openServiceRequestOutType/serviceCallID</vprop:query>
       </vprop:propertyAlias>
       <vprop:propertyAlias propertyName="tns:requestID" messageType="tns:getSystemsOperationRequest" part="getSystemsObject">
       <vprop:query>/tns:getSystemsInType/serviceCallID</vprop:query>
       </vprop:propertyAlias>
       <vprop:propertyAlias propertyName="tns:requestID" messageType="tns:getSystemsOperationResponse" part="getSystemsObject">
       <vprop:query>/tns:getSystemsOutType/serviceCallID</vprop:query>
       </vprop:propertyAlias>
       <vprop:propertyAlias propertyName="tns:requestID" messageType="tns:openServiceRequestInMessage" part="openServiceObject">
       <vprop:query>/tns:openServiceRequestInType/serviceCallID</vprop:query>
       </vprop:propertyAlias>
      </definitions>