[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]