Date: Wed, 26 Mar 2003 17:25:40 -0500 (EST) From: Francois Dumais Subject: RFC - refuse ajoute - final et complet PROTOCOLE FINAL REVISE RESTOGROSS-0.2 1 - Modification apportees a restogross-0.1 2 - Dialogues supportes 3 - Non-repudiation ------------ MODIFICATIONS APPORTEES A RESTOGROSS-0.1 -------------- Le protocole v0.1 a ete simplifie de maniere a permettre un integration rapide et une implantation plus coulante (seamless). Nous avons supprime de la v0.1 le cas ou l'agent grossiste pouvait faire des contre-propositions a l'agent acheteur. Maintenant, l'agent grossiste ne peut que repondre (reply) et ne peut pas initier ou contre-proposer. C'est l'agent acheteur qui est le seul initiateur. L'agent grossiste ne sera rien d'autre qu'un serveur en mode reactif face aux requetes REQUEST, et il deviendra un agent en mode deliberatif (negociation) suite au message PROPOSE. Le serveur se mettra en mode negociation des qu'il recevra une proposition d'achat de type PROPOSE. A cette proposition il ne pourra repondre que par AGREE ou NULL. Maintenant, NULL pourra mettre un terme au processus a toutinstant, peu importe l'etape a laquelle on sera rendus. Les deux types d'agents peuvent utiliser NULL. ------------ DIALOGUES SUPPORTES PAR LE PROTOCOLE ------------------- ***** Demande de prix par l'acheteur suivi de l'information par le grossiste ACHETEUR : "REQUEST" content=(String prix, String categorie, String item, String quantite) GROSSISTE: "INFORM" content=(String prix, String categorie, String item, String quantite) ***** Ordre d'achat par l'acheteur base sur les termes du INFORM envoye par le grossiste ACHETEUR : "AGREE" content=(String "BUY", String prix, String categorie, String item, String quantite) GROSSISTE: "AGREE" content=(String "SELL", String prix, String categorie, String item, String quantite) ***** Proposition de negociation par l'acheteur* envers le grossiste** suivi d'un ordre d'achat ACHETEUR : "PROPOSE" content=(String prix, String categorie, String item, String quantite) GROSSISTE: "AGREE" content=(String "SELL", String prix, String categorie, String item, String quantite) ACHETEUR : "AGREE" content=(String "BUY", String prix, String categorie, String item, String quantite) GROSSISTE: "REFUSE" content=(String "SELL, String prix, String categorie, String item, String quantite) * L'acheteur ne peut faire que 3 propositions. ** Les agents peuvent rompre le dialogue ou refuser la negociation en tout temps en envoyant un message NULL -------------------- NON-REPUDIATION ------------------------- Pour qu'une entente ait lieu il faut absolument que les deux agents aient inscrit leur message "AGREE" (respectivement "SELL" et "BUY") precisant les termes de l'entente (prix, categorie, item, quantite), dans une structure de donnee commune, publique et de type WRITE-READ ONLY (on ne peut qu'y ecrire et y lire sans pouvoir la modifier). Une verification ou conciliation des inscriptions a cette structure permettra de concilierles bilans finaux.