- From: Assaf Arkin <arkin@intalio.com>
- Date: Fri, 20 Jun 2003 10:42:09 -0700
- To: Jean-Jacques Dubray <jjd@eigner.com>
- CC: public-ws-chor@w3.org, "'Martin Chapman'" <martin.chapman@oracle.com>
Jean-Jacques Dubray wrote: >So using some of the standard pi-calc notation would the example look >like this? > >For the buyer, the process is: >ChangePo = _changePo.ChangePO >Purchase(po, changePo, cancelPo,invoice) >=_po.((ChangePo + _cancelPo.0).invoice)+invoice.0 > >(assuming all messages don't need a response). > After changePO you would want to return back o the point where you can send another change, cancel or receive an invoice. So you would write that loop as : Purchase = _po.Manage Manage = (_changePo.Manage + _cancelPo.0 + invoice.0 + timeout.Problem) (The pi-c notation would be a bit more verbose but essentially boils down to the same thing) >I am trying to express that when a PO is sent, it can be followed by any >number of changePo (for a certain duration?) or by a cancelPO, if the >cancelPO happens the process stops right there, otherwise, an invoice is >sent. How do we express that changePO or cancelPO may not happen at all? >Is it like I did above with the +invoice? > In the example above you reach a state where you can send a changePO, cancelPO or receive invoice or just not receive anything. If you send a changePO you return back to the same state (you would use reflextion to avoid recursion). Either sending cancelPO or receiving an invoice would end the process. When a timeout occurs you start some other process (just to make the example for interesting ;-) ). >How would you add business logic like if PO accepted then (ChangePO + >_cancelPO) can happen? Maybe it is not part of the notation. > > Purchase = _po.Response Response = accepted.Manage + rejected.0 + timeout.0 Managed = as above arkin >Jean-Jacques > >
Received on Friday, 20 June 2003 13:42:30 UTC