Re: Pi-Calculus Model question.

Assaf, thanks.  More embedded ...


>>>>Lets introduce two more roles, "Airplane Shipper" and "Truck Shipper", 
>>>>each has its own process flow.
>>>>
>>>>There are two cases here.
>>>>
>>>>1) Queue scenario
>>>>The seller send a "shipment request" to a channel.  Can both Shippers 
>>>>listening on this same channel but only one of them will successfully 
>>>>receive it ?  Lets say the seller doesn't care and both shippers are 
>>>>competing to get the shipment request.
>>In this example, lets say the "Airplane Shipper" has a completely 
>>different flow from the "Truck Shipper" to handle the shipment.  In other 
>>words, it cannot be abstract out to a common process.  The seller needs 
>>to be aware of which one has got the shipment request and deal with the 
>>shipper differently.  Now, can both Shippers listening on this same 
>>channel but only one of them will successfully receive it ?
>
>Yes. But now you'll need them to reply to find out which one you're 
>talking to and adapt accordingly. Still the same model:
>
>receive:shipperChannel.(send:airlineResponse.... + send.truckResponse)
>
>So the P + Q composition still works to allow one common process to listen 
>but then branch into two separate flows depending on who is listening.

Are you effectively saying there is a "Dispatch process" which do the 
following ?

Process Dispatch
   Receive msg from channel1
   switch
     case conditionX
       Send msg to channel2
     default
       Send msg to channel3

Of course, to answer my earlier broadcast question, there can be a 
"Broadcast process" which do the following

Process Broadcast
   Receive msg from channel1
   Send msg to channel2
   Send msg to channel3

Also, I think now is a good now to extend the example to demonstrate some 
mobility concept.
Lets say the seller want to tell the shipper (in this case, lets only have 
one shipper) what the buyer's channel so that the shipper can send an 
"arrival notice message".  Can you extend the example to show that ?



>>Basically, I want to see how pi-calculus represent the "fork/join" in UML 
>>activity diagram.
>
>Fork: by sending a message to some process that starts (spawns) that 
>process while allowing the sending process to proceed.
>
>Join: by receiving a message from that process when it ends (join) so your 
>process blocks until the sending process completes.

To confirm my understanding.  So the expression of a fork/join is ...

send X1.send Y1.receive X2.receive Y2

Right ?

Rgds, Ricky

Received on Tuesday, 15 April 2003 13:08:39 UTC