ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vineesh Thomas <vinih...@gmail.com>
Subject Need Help - Trouble with correlation sets working with flows. (Urgent)
Date Fri, 31 Oct 2008 20:13:52 GMT

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?

I guess this is happening because I am initiating my correlation set ID
('reqid_season') at the initial recieve itself. 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
View raw message