OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: One more Topic for the "Review input from TC members" session of the F2FSome



The description of the underlying data model for the executable process
seems to be missing from the specification. The two commonly implemented
data models in BPM and workflow systems, includes what I will call
shared data and path data. 

In the shared data model, all parallel activities share the data and so
you have race conditions and last one win situations. In the path data
model, each parallel path of activities has a copy of the data. In this
case, you have problems with stall data and deciding how to merge the
data together when the parallel paths meet. So, both models have some
problems and benefits, and so, different products use different models
and or variations.
In the case of BPE, I have not been able to ascertain the type of
underling model being use. So, I think that we need to clearly state the
underling data model in the specification.

For example, let assume the following pseudo-BPEL,

Assume variables R, X, Y, Z are all in this scope, then 
Sequence
{
    Flow
    {
        Sequence
        {
              Receive into variable R  // read value "a"
              Wait (randomly between zero and two hours)
              Assign X with R
         }
        Sequence
        {
              Receive into variable R // read value "b"
              Wait (randomly between zero and two hours)
              Assign Y with R
         }
    }
    Assign Z with R
} 

In this example the two receive are executed in parallel (let assume
they implement two operations that can be called at the same time, and
both will be called in an arbitrary order). Note that having the two
receive does not break any of the BPEL rules, because they are not
conflicting receive (they are in a different partner link, port type,
operation, and correlation set). Let further assume the receive are
executed within seconds one from the other.

The question is, what is the resulting value in X, Y, and Z. Do the
values depend on which receive is triggered first? Or in which sequence
finish first?

The results may be either 
1- (X=a, Y=a, Z=a) or (X=b, Y=b, Z=b) for shared data;
2- (X=a, Y=b, Z=a) or - (X=a, Y=b, Z=b) for path data.
3- any other permutation...

--
Regards,
Mike Marin




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]