Hi again,

More info I forgot to mention.

A way to replicate the problem is:
1) Call the "process" function for the BPEL process with customerID="jo"
2) Call the "seller" fuction for the BPEL process with customerID="jo"
3) Repeat the call to the "seller" fuction for the BPEL process with 
customerID="jo".

After step 3 I cannot use customerID="jo" any longer, as it seems that the 
system got corrupted. The BPEL process point of entrance is not the seller but 
the process function. How is it possible that happens?

On 08/08/2011 18:55, George wrote:
> 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>
> 

Reply via email to