1. Protocolos de comunicación Manuel Bouzas Reguera Juan Sequeiros Ameijeira Silvia González Escuredo Grupo Avia
2. Protocolos de comunicación La comunicación entre agentes responden a un patrón de los especificados por FIPA, denominados protocolos. Cada uno de estos protocolos establece el intercambio básico de mensajes que existe entre dos agentes para un tipo de conversación. Protocolos de comunicación JADE define dos roles, el que inicia la conversación y el que es objeto de la misma (rol Initiator y rol Responder). JADE proporciona unas clases de comportamiento prediseñadas para ambos roles. Estas clases se encuentran en el paquete jade.proto.
3. 3.6.1 El paquete jade.proto El paquete jade.protoagrupa todas las clases que, en forma de comportamientos, facilitan la implementación de los protocolos de comunicación definidos por FIPA. Se agrupan dentro del paquete en cuatro parejas de clases principales . A mayores de estas cuatro clases existen otras subclases que añaden valores a las principales o que las simplifican.
5. Las acciones de los agentes en los protocolos FIPA se puede reducir simplemente a una máquina de estados finitos, y este es el tipo de comportamiento indicado para representar dichas máquinas. ejemplo : Pedro: Juan, ¿Tienes hora? Juan: Sí, un segundo. Juan mira el reloj. Juan: Son las seis en punto. Esta conversación sigue el modelo del protocolo FIPA-Request, es decir, hay una petición del agente Initiator y una aceptación y respuesta del agente Responder 3.6.1 El paquete jade.proto (cont.)
7. La acciones que se realizan en cada estado se definen mediante los manejadores (Handlers), mientras que los mensajes se preparan mediante los preparadores (Prepares). La siguiente figura muestra dicho funcionamiento con claridad. 3.6.1 El paquete jade.proto (cont.)
8.
9.
10. Mensajes asociados a preformativas: Hay ciertos manejadores que serán iniciados cada vez que llegue un mensaje con determinada preformativa, pero siempre que ese mensaje llegue según lo esperado por el protocolo FIPA que corresponda. Manejadores AllResponses: Serán lanzados cuando se reciban todas las respuestas al primer mensaje enviado por el iniciador o cuando se supere el tiempo de espera, indicado en el campo reply-by de ese mensaje inicial. Proporciona acceso a todos los mensajes recibidos. Se encuentra en todos los iniciadores. 3.6.1.1 Manejadores (handle y registerHandler)(cont.)
11. Manejadores AllResultNotifications: Serán lanzados cuando se reciban todas las respuestas finales o cuando se supere el tiempo de espera, indicado en el campo reply-by de ese mensaje inicial. Proporciona acceso a todos los mensajes recibidos. Solamente se encuentra en el iniciador AchieveRE y en el ContractNet. Manejador OutOfSequence: Este es el manejador que se encarga de actuar en el caso de que el mensaje recibido no se corresponda con el esperado según los protocolo FIPA. Es decir, funcionará con las excepciones 3.6.1.1 Manejadores (handle y registerHandler)(cont.)
12. 3.6.1.2 Preparadores (prepare y registerPrepare) Un preparador lo que hace es preparar un mensaje para ser enviado, por lo que son iniciados antes de enviar un mensaje del tipo al que estén asociados
24. En caso de que el mensaje anterior fuera un agree: Failure si ocurrió algún error en el proceso, inform-done si se realizó correctamente e inform-result si además se tiene que comunicar el resultado.Ejemplo
27. Si se aceptó: Failure si ocurrió algún error en el proceso, Inform-T/F con la respuesta si la consulta era un Query-If o Inform-Result si la consulta fue un Query-Ref. Ejemplo
28.
29. Los mensajes que se intercambian son:CFP (CallForProposal) Los respondedores pueden enviar un Refuse, un Not-Understood o un Propose El iniciador envía Reject-Proposal o un Accept-Proposal. Los respondedores envían un Failure ,un Inform-Done, o un Inform-Result.
35. El iniciador le solicita al respondedor permiso para suscribirse, el respondedor procesa esa solicitud y la acepta o la rehecha. Si la acepta envía un mensaje con las condiciones de suscripción, y lo hace de forma continua hasta que sufre un fallo y envía un failure o hasta que el iniciador cancela el envío. Ejemplo 3.6.5 Protocolo FIPA-Subscription
36.
37. El respondedor envía un Refuse si no acepta la propuesta de suscripción, un Agree si la acepta y un Not-Understood si hubo algún fallo.
38. Si la aceptó, después envía un Inform-Result con las condiciones que establezca para la suscripción.
39. Para detener el envío, o bien sufre un fallo el respondedor y envía un Failure o bien envía un Cancel el iniciador.
40. Si el proceso se detuvo porque el iniciador envió un Cancel, el respondedor manda un Inform-Done si todo se realizó exitosamente, o un Failure si algo no funcionó correctamente.Ejemplo