Re: Expressiveness of CDL

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