- From: Assaf Arkin <arkin@intalio.com>
- Date: Sun, 20 Oct 2002 22:24:41 -0700
- To: "Paul Prescod" <paul@prescod.net>, <www-ws-arch@w3.org>
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