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]

Reply via email to