ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From George <george.n...@gmx.net>
Subject Unexpected behaviour working with correlation
Date Mon, 08 Aug 2011 16:55:55 GMT
Hi all,

I have created a simple project to test the correlation in BPEL, but I've got an unexpected
behaviour (or at least I think it is). Let's show you the example while trying to explain
the output. 

The process is quite simple, as it is a receive - assign - invoke - reply - Pick - invoke1
or invoke2. The idea is that the receive initialize the correlation set or variable property,
and then in the pick it is used to continue the same process.

I call the BPEL WS using the process method and customerID "jo". Then I check in ODE management
web and the process is active and it has returned the expected value from the reply. So I
guess it is waiting at the pick function. Now I call the BPEL WS with the seller function
and the process is completed. Till now, no problem and everything as expected. 

I repeat the process with other different customerIDs and there is no problem.

However if I repeat a call to BPEL WS using the process method and customerID "jo" (the same
as the first call), I get the answer from the reply but when I check the process state the
ODE management web shows the project is completed. Why is it not waiting at the pick and therefore
active? If I call the seller function to trigger the pick it seems that nothing happens as
far as the ODE log display (I have DEBUG enabled).

Any idea? This is the normal behaviour? Could you further explain the correlation behaviour?
Does it mean that once you have a correlation variable set to a value it is keep in the internal
database for the whole life of the server? How do you can set the correlation set to "off"?

TA.
Jorge


Here is main code for the correlation example:

<vprop:property name="customerID" type="xsd:string"/>

<vprop:propertyAlias propertyName="tns:customerID" 
  messageType="tns:BPEL_MultipleRequestMessage"
  part="payload">
  <vprop:query>tns:input</vprop:query>  
</vprop:propertyAlias>

<vprop:propertyAlias propertyName="tns:customerID" 
  messageType="tns:sellerRequestMessage"
  part="parameters">
  <vprop:query>tns:input</vprop:query>  
</vprop:propertyAlias>

<vprop:propertyAlias propertyName="tns:customerID" 
  messageType="tns:buyerRequestMessage"
  part="parameters">
  <vprop:query>tns:input</vprop:query>  
</vprop:propertyAlias>


...........


<bpel:receive name="receiveProcess" partnerLink="client"
  portType="tns:BPEL_Multiple" operation="process" variable="input"
  createInstance="yes">
  <bpel:correlations>
    <bpel:correlation set="order" initiate="yes" />
  </bpel:correlations>
</bpel:receive>	

..........


<bpel:pick name="PickToStopForAWhile">
  <!-- Seller -->
  <bpel:onMessage partnerLink="client"
    portType="tns:BPEL_Multiple" 
    operation="seller" 
    variable="inputSeller">
    <bpel:correlations>
              <bpel:correlation set="order" initiate="no"/>
    </bpel:correlations>
    <bpel:sequence name="Call1">
      <bpel:invoke name="InvokeServiceEmulator" partnerLink="ServiceEmulatorPL"
        operation="setUser" portType="srvemu:ServiceEmulatorPortType" 
        inputVariable="ServiceEmulatorPLSetUserRequest">
      </bpel:invoke>
    </bpel:sequence>
  </bpel:onMessage>
  <!-- Buyer -->
  <bpel:onMessage partnerLink="client"
    portType="tns:BPEL_Multiple" 
    operation="buyer" 
    variable="inputBuyer">
    <bpel:correlations>
      <bpel:correlation set="order" initiate="no" />
    </bpel:correlations>
    <bpel:sequence name="Call2">
      <bpel:invoke name="InvokeCalculator" partnerLink="CalculatorPL"
        operation="Add" portType="calc:CalculatorPortType" inputVariable="CalculatorPLAddRequest"
        outputVariable="CalculatorPLAddResponse">
      </bpel:invoke>
    </bpel:sequence>
  </bpel:onMessage>   
</bpel:pick>

Mime
View raw message