- From: Kohei Honda <kohei@dcs.qmul.ac.uk>
- Date: Wed, 21 Jun 2006 19:08:45 +0100
- To: Decker Gero <Gero.Decker@student.hpi.uni-potsdam.de>
- CC: public-ws-chor@w3.org, paul.bouche@hpi.uni-potsdam.de, Marco Carbone <carbonem@dcs.qmul.ac.uk>, Robin Milner <Robin.Milner@cl.cam.ac.uk>, Nobuko Yoshida <yoshida@doc.ic.ac.uk>, Steve Ross-Talbot <steve@pi4tech.com>, Gary Brown <gary@pi4tech.com>, Kohei Honda <kohei@dcs.qmul.ac.uk>
Dear Gero, You raised interesting points. Since Gary has already given detailed technical responses for individual points, and others more general answers, here I briefly touch two points you raised. First, you noted "all control constructs are encodable". As Steve explained clearly, there is a basic difference in orientation between the pi-calculus (which was introduced as a basic calculus for concurrency) and CDL (which is an engineering medium par excellence). For example C language has both "while" and "do..until". This is surely redundant. It also has switch, which is not necessary either. C is a very terse language, and "for" or "do-until" can be fully representable compositionally using "while". But engineering concerns of many kinds let it have these constructs. The most important engineering aspect of CDL is that it is based on global description of interactions, as others (especially Steve) have already noted. A related caution is that CDL is not only about passing names, but contain many other structures and constraints, unlike the untyped pure pi-calculus. We can roughly express this point by saying the behaviours represented by CDL are typed (that is, what it represents can be encoded by pure name passing, but it matters very much it represents a specific class of behaviour, not arbitrary ones). So, CDL is an engineering medium, it is based on global description rather than end-point description, and its described behaviour is typed. I think these points need be considered to relate the pi-calculus and CDL. (I think what Paul discussed --- I just had a cursory look --- as criteria are possible ideas: What I observed above is a more general background.) Second, you asked the status of the global calculus. Well on that you will be able to read in a W3C working note coming rather soon. The note surely addresses your interest, how CDL and pi-calculus can be related. I may also note the theory we are working on is intended as a tool for various theoretical experiments. From the questions you raised, I believe you will find some of our inquiries of interest. Best wishes, kohei Decker Gero wrote: > Hello everyone, > > I am currently working on my Master thesis (at SAP Research Brisbane) about service choreographies und therefore I am very interested in the activities of the CDL working group. > > I have a couple of questions regarding CDL: > > - It is claimed that CDL is based on pi-calculus which has proven to be extremely expressive. Sequence, parallelism, choice and message exchanges are enough to express common scenarios in the BPM domain. E.g. the workflow patterns and the service interaction patterns could be fully formalized. A trick in these formalizations is that each control flow construct is encoded using a set of processes that exchange messages for synchronization purposes. In CDL I do not see how I can do that. > > - Let us take a look at an example to clarify my question: Participant A receives a number of messages via channel b. After three messages have been received or a message has been received over channel c A continues by sending a message over channel d. In pi-calculus I could write: > A = (^h) (b(m1).b(m2).b(m3).'h.0 | c(m4).'h.0 | h.'d.0) > ^h is a private name, b() a message receipt and 'h a message send. I introduced h to coordinate the two parallel processes. How does this work in CDL? In BPEL there is the notion of control links which seems quite powerful. > > - Another example would be (inspired by http://bpt.hpi.uni-potsdam.de/twiki/pub/Public/PiHypeExample/PiHypeExample.pdf): there are seven interactions a, b, c, d, e, f, g, h. a must happen before b and e, b must happen before c, c must happen before d and f, d must happen before h, e must happen before f, f must happen before g and g must happen before h. Assuming a participant who is the sender in all these interactions and for each interaction there is a channel with the name of the interaction, the pi-calculus formalization for A would look as follows: > A = (^x1,x2,x3,x4,x5,x6) ('a.('x1.0|'x2.0) | x1.'b.'c.('x3.0|'d.'x4.0) | x2.'e.'x5.0 | x3.x5.'f.'g.'x6.0 | x4.x6.'h.0) > How can I express this example in CDL? > > - How can I express scenarios where a participant A communicates with participants B1, B2, B3, ... which are all of the same role but only bound at runtime? E.g. like in the Single-transmission multilateral interaction patterns (http://sky.fit.qut.edu.au/~dumas/ServiceInteractionPatterns/Multilateral..html). > > - Concerning parallel interactions: Is it allowed that two interactions that do not have any preceding interactions happen in parallel? If so are there any restrictions concerning correlation information or which participant is involved in these initial interactions? > > - I read about some "global calculus". What is the current status? Although I like pi-calculus I am also very interested in a calculus that does not focus on interacting processes but rather communication from a global perspective. A similar expressiveness like pi-calculus would be desirable though. > > Best regards > Gero > > >
Received on Wednesday, 21 June 2006 18:09:15 UTC