Expressiveness of CDL

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 Tuesday, 20 June 2006 17:31:30 UTC