ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From George <george.n...@gmx.net>
Subject Re: Unexpected behaviour working with correlation
Date Mon, 08 Aug 2011 17:11:26 GMT
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>
> 


Mime
View raw message