Re: Process instantiation puzzle

   [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