← Prev in month
← Prev in thread
RE: correlation misconstruction
Hello Genadi,
In BPEL 2.0 it is stated that:
10.2. Defining and Using Correlation Sets
...
When the initiate attribute is set to "yes", the related activity MUST
attempt to initiate
the correlation set.
O If the correlation set is already initiated and the initiate attribute
is set to "yes", the semantics is undefined.
So the spec states clearly, that it is undefined. However one can argue,
that a System fault would be better here. I dont rember a discussion o
nwhy we explicitely talk about undefined behaviour. Looks a bit strange
to me especially since we introduced correlation verification for
existing (init=no) correlatiob sets.
Gruss
Bernd
-----Original Message-----
From: Genadi Genov [mailto:]
Sent: Thursday, December 01, 2005 6:19 PM
To:
Cc: Eckenfels. Bernd
Subject: correlation misconstruction
Hi,
I seem to have a slight misunderstanding concerning correlation
initialization and its explanation according to the current BPEL
specification. To the best of my knowledge every process defined
correlation is initiated only once during the lifetime of the process
execution. The same rule applies for correlations that aren't nested in
a loop. My doubt is whether there is any well defined process behaviour
when trying to initiate a given correlation set more than once. Consider
the following code
fragment:
-----------------------------
<while condition=someCondition>
<invoke
partnerLink="mappingLink"
portType="corr:servicePortType"
operation="serviceOperation"
inputVariable="vrInitMessage"
outputVariable="vrResponseMessage">
<correlations>
<correlation set="invokeCorrelation"
pattern="in" initiate="yes"/>
</correlations>
</invoke>
</while>
-----------------------------
Assuming the fact the invoke activity is executed more than once what is
supposed to happen during the second cycle of the loop
(invokeCorrelation is already initiated but its 'initiate' attribute is
set to 'yes')? Here is another example:
-----------------------------
<sequence>
<receive
partnerLink="queue"
portType="see:InitPortType"
operation="initCorrelation"
variable="vrInitMessage"
createInstance="yes">
<correlations>
--->initiate it <correlation
set="receiveCorrelation" initiate="yes"/>
</correlations>
</receive>
<invoke partnerLink="mappingLink"
portType="corr:servicePortType"
operation="serviceOperation"
inputVariable="vrInitMessage"
outputVariable="vrResponseMessage">
<correlations>
--->initiate it again <correlation
set="receiveCorrelation" pattern="out"
initiate="yes"/>
</correlations>
</invoke>
</sequence>
-----------------------------
Scenario 1. 'initiate' attribute is not taken into account this time
having in mind our correlation set is already initialized.
Scenario 2. We are trying to initiate an already initiated correlation
so some standard fault is being thrown ('bpws:correlationViolation' for
example).
Maybe I happen to oversee something obvious written in the specification
even after a thorough search. Any help would be appreciated :)
Best regards,
Genadi Genov
← Prev in month
← Prev in thread