RE: Definition of Choreography

Assaf Arkin wrote:
>...
>
> The <condition> element is is used in the while/until constructs to
indicate
> that an operation (or set of operations) will be repeated multiple times
> based on some logic (a repetitive ordering). It is use in the switch
> construct to indicate that one of multiple mutually exclusive paths will
be
> taken based on some logic (a conditional ordering).

Do you acknowledge that this is the domain of implementation and not
interface? If you expose your conditions in your public interface then
you are presumably locked into those conditions forever. The client
shouldn't CARE about your conditions.

[AA] I agree that the logic of the condition belongs in the implementation
more than it belongs in the interface. What I argue is the fact that you
need to be aware that a condition exists. That is an aspect of the
interface.

When you send me a purchase order and I have a condition that decides
whether to accept or reject it (a switch in WSCI), what I am saying in the
interface is: either one will happen. I call that 'order approved'
condition. It doesn't have a concrete meaning. You don't know what logic I
use to arrive at the condition, that is part of my implementation and can
change from time to time. But you know that I will send you either one
message, not both. That's an important aspect of the interface.

If you belive that a WSCI condition is equivalent to a condition as
expressed in Java code, or BPML, or some rule engine, then your argument is
correct. But if you understand that conditions are opaque, meaning that the
logic for reaching a decision is not there, only the fact that one of two
could happen, or something will happen repeatedly, you will see that it
makes sense.


> It does not indicate what that logic is. The logic may require multiple
> internal activities to be performed by the service. WSCI only captures
that
> some logic applies (the 'what') to a particular ordering of operations,
but
> not what that logic is (the 'how').

When you specify the exact order that an action will be completed in,
that sounds to me like "how". When you say exactly what kinds of
"sub-services" a service will use to complete a task, that sounds to me
like "how".

[AA] If you start with a condition-based language but allowed operations to
be used from multiple port types, you could end up defining an executable
business. An implementation. By definition any language that can string
together two operations could be abused in that way.

Could you define an implementation with WSCI? I don't think so. Much of the
stuff you need, like real conditions, data flow, assignments are not there.
You'll have to resort to BPML or BPEL for that.

arkin

Received on Monday, 21 October 2002 01:24:00 UTC