🏠 Home
⬅️ Back
Coreografia proiettata sui ruoli
Indice
Notazione
Si usa il simbolo @ per l’invio di messaggi e # per la ricezione.
Acme
(
(
request#a; // Richiesta da un acquirente
(
askDist@dist; // Richiesta al servizio delle distanza
replyDist#dist;
proposal@a; // e propone possibili case d'interesse
proposalReply#a
)* ;
1 // Skip --- la reply era una interruzione
+
(
(
askAvail@v; // Richiesta disponibilità
availReply#v;
sendMeetingProposal@a;
meetingProposalReply#a;
1
+
(
sendMeetingProposal@v;
meetingProposalReply#v
)
);
(
meetDenies@a // Non incontro
|
meetDenies@v
)
+
(
(
meetAgree@a // Incontro
|
meetAgree@v
);
(
noOffer#a; // Dopo l'incontro nessuna offerta da a
noOffer@v // Lo comunica anche a v
)
+
(
offer#a; // Offerta da a
(
(
(
askCada@cada; // Richiesta coordinate
replyCada#cada
);
1 // Skip --- era nel formato corretto
+
(
askCada@cada;
replyCada#cada;
1 // Skip --- correzione accettata
+
sendAgent@cada // Invia dipendente
)
)
|
(
askDist@dist; // Richiede distanza notaio
replyDist#dist
)
);
offer@v; // Proposta al venditore
(
(
denyOffer#v; // Venditore rifiuta
vendorDenied@a // Si informa l'acquirente
)
+
(
agreeOffer#v; // Venditore accetta
vendorAgreed@a;
contractDone#nota;
notifyPayment#bank
)
)
)
)
)
)
|
(
offer#v // Offerta da un venditore
)
)*
Acquirente
(
request@acme; // Effettua richiesta
(
(
proposal#acme; // Riceve proposte case
proposalReply@acme // Risponde alla richiesta
)*
);
(
1 // Skip --- ha interrotto la richiesta di case
+ // oppure
(
sendMeetingProposal#acme; // Risposta alle date di meeting del venditore
meetingProposalReply@acme
);
(
meetDenied#acme // Skip --- incontro riufiutato
)
+
(
meetAgree#acme; // Incontro accettato
(
1 // Skip --- no richiesta prestito
+
(
loanRequest@bank; // Richiesta prestito
loanReply#bank
)
);
(
(
noOffer@acme // Rifiuta o nessuna offerta
)
+
(
offer@acme; // Offerta
(
vendorDeny#acme // Ricevo un rifiuto del vendor
)
+
(
vendorAgreed#acme; // Il vendor ha accettato, finalizzo
(
pay@bank; // Pagamento della caparra
confirmPayment#bank
)*;
signContract@nota;
contractDone#nota;
(
pay@bank; // Pagamento ad acme
confirmPayment#bank
)*;
(
pay@bank; // Pagamento al venditore
confirmPayment#bank
)*
)
)
)
)
)
)
Venditore
(
(
(
askAvail#acme; // Riceve da Acme una richiesta di quando e' disponibile
availReply@acme; // dato che un acquirente e' interessato a una casa
1 // L'acquirente accetta
+
(
sendMeetingProposal#acme; // L'aquirente ha proposto nuove date
meetingProposalReply@acme
)
);
(
meetDenied#acme // Skip --- incontro riufiutato
)
+
(
meetAgree#acme; // Incontro accettato
(
noOffer#acme // Dopo l'incontro non riceve offerte
)
+
(
offer#acme; // Riceve offerta
(
denyOffer@acme // Rifiuta offerta
)
+
(
agreeOffer@acme; // Accetta offerta
sendDeposit#bank;
signContract@nota;
contractDone#nota;
notifyPayment#bank
)
)
)
)
|
(
offer@acme // Propone casa all'agenzia
)
)
Banca
(
(
loanRequest#a; // Richiesta di mutuo
loanReply@a
)
|
(
pay#a; // Richiesta di effettuare un pagamento
confirmPayment@a;
(
1 // Skip -- pagamento non andato a buon fine
+
notifyPayment@dest
)
)
)*
Catasto
(
askCada#acme; // Riceve richiesta per coordinate
replyCada#acme; // Risponde alla richiesta, anche richiedendo correzioni
(
1 // Skip --- la richiesta era corretta
+
(
askCada#acme; // Riceve la richiesta aggiustata
replyCada#acme; // Risponde, anche richiedendo intervento dipendente
(
1 // Skip --- la correzione era valida
+
sendAgent#acme // Riceve il dipendente dell'agenzia
)
)
)
)*
Distanze
(
askDist#acme; // Riceve richiesta di distanza
replyDist@acme
)*
Notaio
(
(
signContract#a
|
signContract#v
);
(
contractDone@a
|
contractDone@v
|
contractDone@acme
)
)*