610 likes | 744 Views
Process Composition. Process Composition Hierarchies. Control: Centralized control: e.g., RPC/WSDL Mediated or orchestrated control: e.g., BPEL Fully distributed control: autonomous processes, e.g., WS-CDL (WSCI) Messaging: Shared variables: tight coupling, service internal
E N D
Process Composition Hierarchies • Control: • Centralized control: e.g., RPC/WSDL • Mediated or orchestrated control: e.g., BPEL • Fully distributed control: autonomous processes, e.g., WS-CDL (WSCI) • Messaging: • Shared variables: tight coupling, service internal • Synchronous messaging: looser coupling; some service-service interactions • Asynchronous messaging: loose coupling; service-service interactions • Synchronous and asynchronous both applicable to BPEL: • WSDL/SOAP, WSDL/JMS Web Services: CSP/Pi-Calculus/Mealy
Communicating Sequential Processes • Mathematical framework for the description and analysis of systems consisting of processes interacting via exchange of messages • The evolution of processes is based on a sequence of eventsoractions • Visible actionsS Interaction with other processes, communication • Invisible actiont Internal computation steps Web Services: CSP/Pi-Calculus/Mealy
The CSP Language: Syntax • Termination: Stop • Input: in ? xP(x) • Execute an input action on channel in, get message x, then continue as P(x) • Output: out ! xP(x) • Execute an output action on channel out, send message x, then continue as P(x) • Recursion: P(y1,…,yn) = Body(y1,…,yn) • Process definition. P is a process name, y1,…,yn are the parameters, Body(y1,…,yn) is a process expression • Example: Copy= in ? x out ! mCopy Web Services: CSP/Pi-Calculus/Mealy
CSP’s Syntax (Cont’ed) • External (aka guarded) choice: P|Q • Execute a choice between P and Q. Do not choose a process which cannot proceed • Example: (a ? xP(x))|(b ? x Q(x)) • Execute one and only one input action. If only one is available then choose that one. If both are available than choose arbitrarily. If none are available then block. The unchoosen branch is discarded • Internal choice: P + Q • Execute an arbitrary choice between P and Q.It is possible to choose a process which cannot proceed Web Services: CSP/Pi-Calculus/Mealy
CSP’s Syntax (Cont’ed) • Parallel operator w/synchronization: P||Q • P and Q proceedin parallel and are obliged to synchronize on all the common actions • Example: (c ? xP(x)) ||(c ! m Q) • Synchronization: the two processes can proceed only if their actions correspond • Handshaking: sending and receiving is simultaneous (Buffered communication can anyway be modeled by implementing a buffer process) • Communication:m is transmitted to the first process, which continues as P(m) Web Services: CSP/Pi-Calculus/Mealy
Laws of CSP • Equivalence of expressions: useful in reasoning about CSP processes • Many laws concerning different aspects • Examples: • If Q does not involve e1:(e1P) ||(e2Q) = e1(P||(e2Q)) • Synchronization:(c ? bP(b)) ||(c ! aQ) = c ! a(P(a) ||Q) Web Services: CSP/Pi-Calculus/Mealy
Example • ADD2 =(in1?xin2 ?yout !(x+y) ADD2) • ADD2 =(in1?xin2 ?yout !(x+y) ADD2) |(in2?yin1 ?xout !(x+y) ADD2) • SQ =(out?zsqr !square(z)SQ) • ADDSQ = ADD2 || SQ = ? • (in1?xin2 ?yout !(x+y) ADD2) |(in2?yin1 ?xout !(x+y) ADD2)|| (out?zsqr !square(z)SQ) • (in1?xin2 ?yout !(x+y) ADD2)|| (out?zsqr !square(z)SQ) | (in2?yin1 ?xout !(x+y) ADD2)|| (out?zsqr !square(z)SQ) Web Services: CSP/Pi-Calculus/Mealy
Example • ADDSQ • (in1?xin2 ?yout !(x+y) ADD2)|| (out?zsqr !square(z)SQ) | (in2?yin1 ?xout !(x+y) ADD2)|| (out?zsqr !square(z)SQ) • in1?xin2 ?y (out !(x+y) ADD2)|| (out?zsqr !square(z)SQ)| in2?yin1 ?x(out !(x+y) ADD2)|| (out?zsqr !square(z)SQ) • in1?xin2?y out!(x+y)sqr!square(x+y)ADD2 || SQ| … • in1 ?x in2 ?y out !(x+y)sqr !square(x+y) ADDSQ | … Web Services: CSP/Pi-Calculus/Mealy
BPEL : CSP Semantics • BPEL interactions can be modeled in CSP • Three main activities: invoke, receive, reply <invoke partner=“...” portType=“...” operation=“...” inputContainer= xoutputContainer=y/> partner-port-in ! xpartner-port-out ? y … <receive partner=“...” portType=“...” operation=“...” container=x [createInstance=“...”] /> my-port-in ? x… <reply partner=“...” portType=“...” operation=“...” container =y /> … my-port-out ? y… Web Services: CSP/Pi-Calculus/Mealy
BPEL : CSP Semantics • Synchronous communication • Advantages: • Easier to analyze • Well studied • Disadvantages: • Not completely autonomous Web Services: CSP/Pi-Calculus/Mealy
The p-Calculus • The p-calculus is a process algebra • Constructs for concurrency • Communication on channels • channels are first-class • channel names can be sent on channels • access restrictions for channels • In p-calculus everything is a process Web Services: CSP/Pi-Calculus/Mealy
Communications in p-Calculus • Processes communicate on channels: • c<M> send message M on channel c • c(x) receives x on channel c • Sequencing: • c<M>.p sends message M on c, then does p • c(x).p receives x on c, then does p with x • Concurrency: • p | q is the parallel composition of p and q • Replication: • ! p creates an infinite number of replicas of p Web Services: CSP/Pi-Calculus/Mealy
Examples • For example we might define Speaker = air<M> Phone= air(x).wire<x> ATT=wire(x).fiber<x> System=Speaker|Phone|ATT • Communication between processes is modeled by reduction: Speaker|Phonewire<M> wire<M>|ATTfiber<M> • Composing these reductions we get: Speaker|Phone|ATT fiber<M> Web Services: CSP/Pi-Calculus/Mealy
Channel Visibility • Anybody can monitor an unrestricted channel: • Consider that we define WireTap=wire(x).wire<x>.NSA<x> • Copies the messages from the wire to NSA • Possible since the name “wire” is globally visible • Now WireTap | wire<M> | ATT wire<M>.NSA<M> | ATT NSA<M> |fiber<M> Web Services: CSP/Pi-Calculus/Mealy
Restriction • The restriction operator “(nc) p” makes a fresh channel c within process p • n is the Greek letter “nu” • The name “c” is local (bound) in p • Restricted channels cannot be monitored wire(x)…|(nwire) (wire<M>|ATT) wire(x)…|fiber<M> • The scope of the name “wire” is restricted • There is no conflict with the global “wire” Web Services: CSP/Pi-Calculus/Mealy
Restriction and Scope • Restriction • is a binding construct • is lexically scoped • allocates a new object (a channel) (nc) p is like “let c=new Channel() in p” • In particular, c can be sent outside its scope • But only if “p” decides so Web Services: CSP/Pi-Calculus/Mealy
First-Class Channels • A channel c can leave its scope of declaration • via a message d<c> from within p • Allowing channels to be sent as messages means communication topology is dynamic • If channels are not sent as messages (or stored in the heap) then the communication topology is static • This differentiates p-calculus from CSP Web Services: CSP/Pi-Calculus/Mealy
Example of First-Class Channels Consider: MobilePhone = air(x).cell<x> ATT1= wire<cell> ATT2= wire(y).y(x).fiber(x) in (n cell) (MobilePhone | ATT1)|ATT2 • ATT1 is trying to pass cell out of the static scope of the restriction ncell Web Services: CSP/Pi-Calculus/Mealy
Scope Extrusion • A channel is a name • First-class names must be usable even outside their original scope • The p-calculus allows restrictions to move: ((nc) p) | q =(nc)(p |q) if c not free in q • Renaming is needed in general: ((nc) p) | q =((nd) [d/c] p)|q =(nd) ( [d/c] p |q ) where “d” is fresh (does not appear in p or q) Web Services: CSP/Pi-Calculus/Mealy
Example, Continued (n cell)( MobilePhone | ATT1) | ATT2 = (ncell)( MobilePhone | ATT1| ATT2) (ncell)( MobilePhone | cell(x).fiber<x>) • Scope extrusion distinguishes the p-calculus from other process calculi Web Services: CSP/Pi-Calculus/Mealy
Syntax of the p-Calculus • There are many versions of the p-calculus A basic version: p, q ::= nil nil process (sometimes written 0) x<y>.p sending x(y).p receiving p | q parallel composition !p replication (nx) p restriction • Note that only variables can be channels and messages Web Services: CSP/Pi-Calculus/Mealy
Choreography Definition Language (WS-CDL) • Global model • Ensured conformance • Description language • Not executable • Tools • Generators for end points • Advanced typing • Status • Moving for last call end of 2004 Web Services: CSP/Pi-Calculus/Mealy
Global Models Web Services: CSP/Pi-Calculus/Mealy
WS-CDL Global Models • A sequential process Client(open, close, request, reply) = open.request1.reply1.request2.reply2.close.0 request Client reply open close Web Services: CSP/Pi-Calculus/Mealy
WS-CDL Global Models • A repetitive process Client(open, close, request, reply) = open.request1.reply1.request2.reply2.close.Client(open, close, request, reply) request Client reply open close Web Services: CSP/Pi-Calculus/Mealy
WS-CDL Global Models • A process with choices to make IdleServer (o, req, rep, c) =o.BusyServer(o, req, rep, close) BusyServer(o, req, rep, c) =req.rep.BusyServer(o, req, rep, c) + c.IdleServer(o, req, rep, c) request IdleServer BusyServer open reply close Web Services: CSP/Pi-Calculus/Mealy
WS-CDL Global Model • Communication, Concurrency and Replication • When Clientihasstarted an exchangewith IdleServer • No other Clientj canthen communicatewith the server • Until Clientihas finishedand the server is onceagain IdleServer SYSTEM = (!Client | IdleServer) Clienti | IdleServer Clienti | BusyServer Clientj | IdleServer Clientj | BusyServer ….. Web Services: CSP/Pi-Calculus/Mealy
WS-CDL and the p-Calculus Collapse send and receive into an interact on channels Web Services: CSP/Pi-Calculus/Mealy
Composition: Formal Semantics • WSDL is fundamentally message based • So is everything based on it • Process algebra approach to formal semantics: • BPEL : CSP • WS-CDL : p-calculus • Alternatives to process algebra: • Automata theoretic • PSL Web Services: CSP/Pi-Calculus/Mealy
BPEL and Asynchronous Communication o1 • Channels are assumed to be reliable • Asynchronous, for example, the following channel: ware- house1 store order1 send Order1 … • Queues are FIFO, unbounded length • Can simulate synchronousand also bounded queues send Order1 receive Receipt1 … Web Services: CSP/Pi-Calculus/Mealy
Messages ware- house1 store order1 • Messages are classified into classes • Each class is associated with one channel • Each message class may have additional attributes which can carry the contents of messages • For now, analysis involves no contents • Results immediately apply to “finite domain” contents Web Services: CSP/Pi-Calculus/Mealy
Individual Web Services Do until halt nondeterministic choice: read an input; send an output to some other peer; halt; end choice inputmessages to othere-services message log local store Web Services: CSP/Pi-Calculus/Mealy
Individual Web Services • Again, ports and storages are ignored • Internal logic of peers : finitestate control Do until halt nondeterministic choice: read an input; send an output to some other peer; halt; end choice inputmessages to othere-services Web Services: CSP/Pi-Calculus/Mealy
Mealy Web Services ?o2 !r2 !b2 !b2 !r2 ?p2 ?p2 !r2 e • Mealy machines: Finite state machines with input (incoming messages) & output (outgoing messages) warehouse2 Web Services: CSP/Pi-Calculus/Mealy
Technical Definition A Mealy web service is an FSA M= (T, s, F, in, out, ) • T : a set of states • s: the initial state • F : a set of final states • in: input message classes • out: output message classes • : transition relation that either • consumean input, (s1, ?m, s2), or • produceoutput, (s1, !m, s2), or • make an empty (internal) move, (s1, e, s2) Web Services: CSP/Pi-Calculus/Mealy
Executing a Mealy Composition • Execution halts if • All mealy peers are in final states • All queues are empty ?o2 !r2 !a ?a !b2 !b2 ?o1 ?k !k !r2 !o1 ?p2 ?p2 !o2 !r2 … … … e … store w1 warehouse2 bank Web Services: CSP/Pi-Calculus/Mealy
Composite Web Service Execution ?register !accept !request !reject ?ack ?cancel !bill ?request !report !bill !terminate ?terminate Investor Stock Broker Firm !register ?accept !ack acc rep bil ?reject ?report reg ack ?bill !cancel ?bill Research Dept. ter req Web Services: CSP/Pi-Calculus/Mealy
Functionality: Is it correct? Is there an unauthorized payment? … Execution: Is there a deadlock? Always terminates in finite steps? … Web Service Composition: What Now? authorize store bank ok bill2 order1 receipt1 payment1 payment2 order2 bill1 receipt2 ware- house1 ware- house2 Web Services: CSP/Pi-Calculus/Mealy
ConversationPolicies Start RequestPending AB: “Request bid” BA: “Bid=x” AB: “CounterBid=x” BA: “Bye” B’s ReplyPending A’s ReplyPending BA: “CounterBid=x” BA: “Reject” BA: “Accept” AB: “Reject” AB: “Accept” Terminate/Success Terminate/Failure • A conversation: a sequence of messages between two parties order Store Supplier receipt Web Services: CSP/Pi-Calculus/Mealy
Multi-Party Conversations store bank Watcher ware- house1 ware- house2 • Watcher: “records” the messages as they are sent authorize ok payment1 payment2 order2 receipt1 bill2 order1 a k o1 o2 b1 p1 r1 r2 b2 p2 bill1 receipt2 • A conversation is a sequence of messages the watcher sees in a successful run (or session) • composition language: the set of all possible conversations • What properties do composition languages have? Web Services: CSP/Pi-Calculus/Mealy
Warehouse Example • The composition language recognized authorize store bank ok order1 bill2 receipt1 payment1 payment2 order2 receipt2 bill1 ware- house1 ware- house2 a kshuff( (o1(shuff(r1, b1p1) )*, (o2(shuff( r2, b2p2) )* ) Web Services: CSP/Pi-Calculus/Mealy
Web Service Composition Schema • A composition schema is a triple (M, P, C )where • M : finite set of message classes • P : finite set of peers (web services) • C : finite set of peer to peer channels • Specifies the infrastructure of composition authorize store bank ok order1 bill2 receipt1 payment1 payment2 order2 receipt2 bill1 ware- house1 ware- house2 Web Services: CSP/Pi-Calculus/Mealy
Global Configurations • Given n Mealy implementationsfor composition schema (M, P, C) • Global configuration: (Q1, t1, … , Qn, tn, w) where • Qi : queue contents for peer i • ti: state for peer i • w: watcher contents Web Services: CSP/Pi-Calculus/Mealy
Derivation (Q1, t1, , Qn, tn, w) (Q1, t1, , Qn, tn, w) if • peer pi takes an move, or • peer pireads an input, or • peer pisends a message m to pj • (ti, !m, ti) i • Qj = Qj m (mappended to pj’s queue) • k i, tk=tk • kj,Qk = Qk • w = wm (watcher records the message m) Web Services: CSP/Pi-Calculus/Mealy
Conversations • A halting run: • (, s1, , , sn, ) (, f1, , , fn, w) • Starting from the initial configuration with empty queues and • Ending in final states with empty queues • A word w is a conversation if (, s1, , , sn, ) (, f1, , , fn, w) is a halting run • Composition language (CL) : the set of all conversations * Web Services: CSP/Pi-Calculus/Mealy
Composition Languages Are Regular? ?a a !a ?b b !b p1 p2 • CL a*b*=anbn • Composition languages are not always regular • Some may not even be context free • Causes: asynchronous communication & unbounded queue • Bounded queues or synchronous: CL always regular Web Services: CSP/Pi-Calculus/Mealy
Bounded Queues • Synchronous messaging case: composition language can be recognized by the product machine • If queues are bounded, composition languages are also regular • Production machines can be constructed Web Services: CSP/Pi-Calculus/Mealy
Conversations as Orchestration c a p4 p1 p2 e d b p3 • “Programming” interactions • Two questions: • Given Mealy peers, what conversations can they have? • Given a conversation language, can we “implement” it? Web Services: CSP/Pi-Calculus/Mealy
Two Factors c a p4 p1 p2 e d b p3 • Local views: Conversations with the same local views are not distinguishable: • abcde and acbde • Queuing effect: a peer can postpone sending a message Web Services: CSP/Pi-Calculus/Mealy