- From: Drew McDermott <drew.mcdermott@yale.edu>
- Date: Fri, 19 Sep 2003 17:14:27 -0400 (EDT)
- To: www-ws@w3.org
[me] > Puzzle: Suppose C sends a message to P two or more times, at least on > some runs, e.g.: > > C = (seq (P) (if Q then ... else (P))) > > I've suppressed the actual dataflow, but assume that C is sending data > to P and getting some back. With respect to a run of C in which Q is > false after C interacts with (P), let P1 be that first interaction, > and P2 be the second. > > What exactly are P1 and P2? Is each a fresh invocation of the P > process? Is there a worldwide P process that everyone communicates > with (e.g., an atomic clock sitting in Geneva). Or does the > invocation P1 create an entity that C talks to when P2 occurs? How > are these different possibilities to be indicated? > [Sudhir Agarwal] in my opinion, it depends on, who is controlling the execution of C. In case the execution of C is centrally controlled, for example by the provider of C, then one can assume a global clock (clock of C's provider). If the execution is distributed, that is each participant (provider of component services) executes "his" part of the run independently of other participants, then one should assume each participant having a local clock and no global clock. In this case, each participant works sequentially (total order), whereas the whole run is executed concurrently (partial order). I think you misunderstand why I brought up clocks. I was using that purely as an example of a web server that would exist permanently, be globally visible, and respond to anyone who asked it what time it was. Unless I'm missing something, clocks are not relevant to my question. Spontaneously i would say that each invocation of P is a different instantiation. This certainly makes sense, and this is how it is done in workflow systems. I dont understand, what the other case should mean. BPEL has an "initiate" attribute, as in this example (taken from [1]) of a simple agent for filling orders froma buyer: <receive partnerLink="Buyer" portType="SP:PurchasingPT" operation="AsyncPurchase" variable="PO"> <correlations> <correlation set="PurchaseOrder" initiate="yes"> </correlations> </receive> which means, "when I get a message from the Buyer, I start a new conversation (initiate='yes') and I recognize which future messages belong to that conversation by seeing if they have the same PurchaseOrder number." (There's much more to the example than this, of course.) What do you mean by the entity that the first invocation of P creates? Is it an instance of P? The "entity" created by the first mention of a new PurchaseOrder number is an execution thread through the process model. Here P is the order-filling agent. The execution thread is not an instance of P in any sense I can see. It's distinct from P and from all other execution threads generated using the description of P. P1 could be taken to be P, and P2 could be taken to be this execution thread, encountered again. What I'm trying to understand is what parts of DAML-S correspond to these clever devices, or ad-hoc kludges, from BPEL. Yes, I know I should already know the answer. [1] http://www-106.ibm.com/developerworks/webservices/library/ws-bpel/#correlation -- -- Drew McDermott Yale University CS Dept.
Received on Friday, 19 September 2003 17:14:28 UTC