ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Riou" <matth...@offthelip.org>
Subject Re: Need Help - Trouble with correlation sets working with flows. (Urgent)
Date Fri, 31 Oct 2008 21:08:28 GMT
On Fri, Oct 31, 2008 at 1:13 PM, Vineesh Thomas <vinihi83@gmail.com> wrote:

>
> Hi,
>
> I am having little trouble with correlation sets when working with flows.
> Please help me sort this issue.
>
> Scenario :
> ---------
> Initially my BPEL recieves a Input param which has many attributes along
> with an ID (say 'request ID') and a string (say 'season').
>
> I am having a flow with 3 sequences which are getting executed in parallel.
> In each of these 3 parallel sequences a webservice (say 'serviceA') is
> invoked but with different set of input params(as shown in the pseudo
> code).
>
> Now on every invoke of service A, it returns a notificationID
> synchrounously
> acknowledging the request. So each of the 3 sequences get a notificationID
> immediately. Now this notificationID is not uniquely defined. So I cant use
> this as a correlation set here. The only thing that is unique per sequence
> is the combination of "request ID" and the "season name".
>
> Now in the provider wsdl I have defined a complexType in the wsdl:types and
> here, I have all the attributes in the Input param. In the same wsdl I have
> defined a property (named 'reqid_season') and its alias with the query:
> concat(//cxs:requestId,//cxs:season). Here 'cxs' is my schema namespace.
>
> This property is refered in the BPEL and used as the correlation set id.
>
> My BPEL's psuedo code looks something like this:
>
> <sequence>
>  <recieve>
>     Input request:
>         1. req ID = 101
>         2. season name = 'Winter'
>       <correlations>
>             <correlation set="reqid_season" initiate="yes"/>
>       </correlations>
>  </recieve>
>
>   <flow>
>       <sequence1>
>          <assign>
>                Input request:
>                  requestID = "101"
>                  season = "Winter"
>          <assign>
>          <Invoke>
>                Service = service A
>                Input variable = Input request
>                Output variable = notificationID for Winter
>          </Invoke>
>          <receive>
>              <correlations>
>                <correlation set="reqid_season"/>
>              </correlations>
>          </receive>
>       </sequence1>
>
>       <sequence2>
>          <assign>
>                Input request:
>                  requestID = "101"
>                  season = "Summer"
>          <assign>
>          <Invoke>
>                Service = service A
>                Input variable = Input request
>                Output variable = notificationID for Summer
>          </Invoke>
>          <receive>
>              <correlations>
>                <correlation set="reqid_season"/>
>              </correlations>
>          </receive>
>       </sequence2>
>
>       <sequence3>
>          <assign>
>                Input request:
>                  requestID = "101"
>                  season = "Monsoon"
>          <assign>
>          <Invoke>
>                Service = service A
>                Input variable = Input request
>                Output variable = notificationID for Monsoon
>          </Invoke>
>          <receive>
>              <correlations>
>                <correlation set="reqid_season"/>
>              </correlations>
>          </receive>
>       </sequence3>
>
>   </flow>
>
> </sequence>
>
>
> Now coming to my problem:
> --------------------------
> As you can see I recieve 'Winter' in the input param from the requesting
> service and the same is passed to the sequence 1. So the correlation set
> ID(i.e. requestID and season) works perfectly for this case. But when it
> comes to the other sequences (2 & 3) the process continues only if it
> receives the value of 'season' in the correlation set ID as 'winter' though
> the actual value might be 'summer' or 'monsoon'.
>
> How do I reset the value of the correlation set ID at the time of invoke in
> each of the sequence?
>

Unfortunately you can't, a correlation can't be set multiple times.


>
> I guess this is happening because I am initiating my correlation set ID
> ('reqid_season') at the initial recieve itself.


Correct. What I would do is use three different correlation sets for each of
your sequences and initiate them on the invoke. You can either initiate on
the invoke request or response (I would assume the response in your case).
Then the following receive should match by reusing that correlation. For the
instantiating receive it doesn't look like you need to set a correlation
there as the client doesn't seem to be calling again. Although if it was the
case you could use yet another correlation for that interaction.

Hope this helps,
Matthieu


> I tried intializing my
> correlation set ID within the invoke tag. I did like something like this:
>
>            <invoke partnerLink  = "xxxxxx"
>                       portType = "abc:PortType"
>                       inputVariable = "Input"
>                       operation = "abc"
>                       outputVariable = "output">
>
>                   <correlations>
>                      <correlation set="reqid_season" initiate="yes"
> pattern="out"/>
>                   </correlations>
>            </invoke>
>
> But on deploying this I was getting the following error:
>
> error: [UndeclaredPropertyAlias] The property
> "{http://www.abcd.com}reqid_season" does not have an alias for message
> type
> "OMessageVarType#28".
>
> As I have mentioned earlier I have declared the property as well its alias
> in the provider wsdl. Another thing I noticed is that if I remove the
> "pattern" attribute from the "correlation" tag it gets deployed but it
> still
> doesn't work as expected.
>
> Kindly clarify this doubt.
>
> Thank you,
>
> <Vineesh/>
> --
> View this message in context:
> http://www.nabble.com/Need-Help---Trouble-with-correlation-sets-working-with-flows.-%28Urgent%29-tp20273356p20273356.html
> Sent from the Apache Ode User mailing list archive at Nabble.com.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message