Hi!
WS-Business Activity Specification doesn’t clearly states who should
govern the activity based on what rules. The specification provides
the state changes and the message exchange pattern. However, unlike in
Atomic Transactions, It doesn’t mention how the voting should take place.
As an example, in Atomic transactions it is All or None. i.e for the
transaction to be committed, all the participant should vote with
either “Committed”, or “Readonly”. However, Business Activities are
more abstract. It doesn’t mention the set of rules which governs the
final out come of the activity.
Well it's not really as you state it. There are mentioned two different
coordination types: mixed and atomic outcome. Depending on which one of
these two is chosen all the participants can either have different
outcome (mixed) or must have the same outcome (atomic).
Let’s consider a simple scenario as follows.
1. Five participants register for “ParticipantCompletion”
2. Three send ”Completed”, One send “Fault” and the other one sends
“Exit” to the Coordinator.
3. What should the Coordinator do? Should he send “Close” or
“Compensate” to those who have “Completed”?
As mentioned above the coordinators reaction depends on the coordination
type. So we have two different reactions here:
1. mixed outcome: the coordinator can (depending on business logic)
send different "responses" to different participants. In your
example he could send "close" to one of the participants that sent
"Completed", and "compensate" to the other two participants that
sent "completed". Moreover he has to send "faulted" to the one
that sent "fault" and "exited" to the one that wanted to leave
("exit").
2. atomic outcome: Here the coordinator doesn't have as many choices
as with mixed outcome coordination type. As one of the
participants either sends "fault" the coordinator has to send
"cancel" to all other participants still in state "active" and/or
"compensate" to all participants in state "completed".
Also following problems arise
1. How to distinguish an Initiator from other participants? In AT
the Initiator register for the “Completion” protocol. Is there
an equivalent in BA?
We (Hannes Erven and me) are currently developing an extension to
kandula which is capable of BA. Doing so we had to expand the WS-BA
specification since in the specification it is provided that the
Coordinator and the Initiator are one. This means that the coordinator
can decide everything since he has all the business logic. This was
designed this way, because the authors of WS-BA assumed that
coordinators would in most cases run in workflow engines and therefore
have all the information they need.
Our (Hannes and mine) idea was to separate the coordinator and the
initiator so the initiator could decide and notify the coordinator about
his decision. Therefore we designed a protocol to be used between
coordinator and initiator to communicate information and decisions. In
our design/implementation (under development) the initiator is no normal
participant anymore in the sense that he is registered for one of the
WS-BA protocols, although he also could be one, but in first order he
controls the outcome of the BA.
With our implementation, the initiator registers for a separate protocol
(which is not part of WS-BA) and hence can easily be distinguished from
the "classic" participants.
1. When a participant register for “CoordinatorCompletion”, the
coordinator should inform the participant whether to “Complete”.
Based on what does the Coordinator take this decision?
Therefore the coordinator needs business logic or has to be connected to
any other system which takes the decisions and informs the coordinator
what to do. In our design/implementation as we separated the initiator
from the coordinator and invented a protocol between these two, this is
no problem anymore.
1. What is “MixedOutcome”? Does that mean participants will receive
different outcomes from the Coordinator? In that case, what is
the outcome for the Initiator?
See explanation above!
regards,
Georg Hicker
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]