seminario 5 deko ferreira

25
PROTOCOLOS DE COMUNICACION Adrián Ferreira García Diego Rodríguez González Grupo Avia

Upload: adrian-ferreira-garcia

Post on 30-Jul-2015

225 views

Category:

Business


0 download

TRANSCRIPT

Page 1: Seminario 5   deko ferreira

PROTOCOLOS DE COMUNICACION

Adrián Ferreira GarcíaDiego Rodríguez González

Grupo Avia

Page 2: Seminario 5   deko ferreira

Protocolos de comunicación La comunicación entre agentes responde 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.

El Protocolo de comunicación JADE se define mediante dos roles, el que inicia la conversación y el que es destino 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.

Page 3: Seminario 5   deko ferreira

3.6.1 El paquete jade.proto

El paquete jade.proto agrupa 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.

Page 4: Seminario 5   deko ferreira

3.6.1 El paquete jade.proto (cont.)Comportamientos Protocolos FIPA

AchieveREInitiator

AchieveREResponder

o SimpleAchieveREInitiator

o SimpleAchieveREResponder

o IteratedAchieveREInitiator

o SSIteratedAchieveREResponder

FIPA-RequestFIPA-QueryFIPA-RecruitingFIPA-Request-WhenFIPA-Brokering

ContractNetInitiator

ContractNetResponder

o SSContractNetResponder

FIPA-Contract-Net

SubscriptionInitiator

SubscriptionResponderFIPA-SubscribeFIPA-Request-Whenever

ProposeInitiator

ProposeResponderFIPA-Propose

Page 5: Seminario 5   deko ferreira

3.6.1 El Paquete jade.proto (cont.)

Las acciones de los agentes dentro de los protocolos FIPA se puede reducir simplemente al funcionamiento de una máquina de estados finitos.

Este seria el típico comportamiento utilizado para representar dichas máquinas:

(Iniciador) - Pedro: Juan, ¿Tienes hora? (Respondedor) - Juan: Sí, un segundo. (Respondedor) - Juan mira el reloj. (Respondedor) - 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

Page 6: Seminario 5   deko ferreira

3.6.1 El paquete jade.proto (cont.)

Page 7: Seminario 5   deko ferreira

3.6.1 El paquete jade.proto (cont.)

La acciones que se realizan en cada estado se definen mediante los manejadores (Handlers), mientras que los mensajes se concretan mediante los preparadores (Prepares).

La siguiente figura muestra dicho funcionamiento con claridad:

Page 8: Seminario 5   deko ferreira

3.6.1 El paquete jade.proto (cont.)

Page 9: Seminario 5   deko ferreira

3.6.1.1 Manejadores (Handle y registerHandler)

Un manejador es una manera de tratar determinadas situaciones, que se iniciaran en determinado momento y en funcion del estado al que esté asociado.

Existen dos formas de implementar un manejador:

1. Sobrecarga de métodos handle: Cada comportamiento tiene una serie de métodos handle con la forma: handleInform, handleRequest, etc. Cada uno de ellos será invocado cuando se reciba el tipo de mensaje correspondiente.

protected void handleInform(ACLMessage inform) { System.out.println(“Inform recibido”);}

Page 10: Seminario 5   deko ferreira

3.6.1.1 Manejadores (Handle y registerHandler)

2. Registrar manejadores propios: se podrán registrar comportamientos para que actúen como manejadores. El registro se hará a través de los métodos registrerHandler, que son de la forma:registerHanderInformregistreHandlerRequest

En caso de registrar un comportamiento como manejador, el sistema ignorará las sobrecargas de los métodos handler y se limitará a iniciar los comportamientos registrados.

protected void setup() { … This.registerHandleInform (new OneShotBehaviour(){ public void action (){ System.out.println(“Inform recibido”); } });…}

Page 11: Seminario 5   deko ferreira

3.6.1.1 Manejadores (handler y registerHandler)(Tipos)

Mensajes asociados a formas predeterminadas: Hay ciertos manejadores que serán iniciados cada vez que llegue un mensaje con determinado patrón, 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.

Page 12: Seminario 5   deko ferreira

3.6.1.1 Manejadores (handler y registerHandler)(Tipos)

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 patrón esperado según el protocolo FIPA, excepciones principalmente.

Page 13: Seminario 5   deko ferreira

3.6.1.2 Preparadores (prepare y registerPrepare)

Un preparador lo que hace es preparar un mensaje para ser enviado, por lo que son inicializados antes de enviar un mensaje del tipo al que estén asociados

En el caso de registrar comportamientos habrá que guardar en el almacén de datos y con una clave determinada el mensaje que se desea enviar.

Se deber tener mucho cuidado a la hora de rellenar los campos de los mensajes. El hecho de dejar vacío un campo puede interrumpir todo el protocolo

Page 14: Seminario 5   deko ferreira

3.6.1.3 El almacén de datos

El almacén de datos guarda todos los mensajes que se envían o reciben durante todo el proceso de comunicación, es decir, a lo largo de la ejecución de un protocolo.

Cada clase define un conjunto de constantes que servirán de clave para acceder a un tipo de mensajes determinado.

Registrar el mensaje de respuesta (Response) ACLMessage response = new ACLMessage(ACLMessage.ACCEPT_PROPOSAL); this.getDataStore().put(ProposeResponder.RESPONSE_KEY, response);

Obtener el mensaje Propose recibido ACLMessage propose = (ACLMessage) this.getDataStore().get(ACLMessage.PROPOSE_KEY);

Page 15: Seminario 5   deko ferreira

3.6.2 AchieveRE

La característica principal de los mensajes en FIPA-ACL es que cada uno de ellos representa un acto comunicativo.

El estándar FIPA especifica para cada acto comunicativo: • Precondiciones de Viabilidad (Feasibility Preconditions)• Efecto Razonable (Rational Effect)

Page 16: Seminario 5   deko ferreira

3.6.2 AchieveREConjunto de clases AchieveRE:

• AchieveREInitiator• AchieveREResponder• SimpleAchieveREInitiator• SimpleAchieveREResponder• IteratedAchieveREInitiator• SSIteratedAchieveREResponder

La sesión de cada protocolo con un respondedor dado terminará si: • El iniciador envía al respondedor un mensaje explicito CANCEL, en lugar

del siguiente mensaje de iniciación. • El respondedor responde de forma negativa con REFUSE, NOT_UNDERSTOOD o FAILURE.

• El respondedor incluye una bandera de terminación a la notificación de resultado INFORM. Esta bandera de terminación puede detectarse usando el método isSessionTerminated().

Page 17: Seminario 5   deko ferreira

3.6.2 AchieveRE

Algunos de los protocolos que implementa la clase AchieveRE son:

• FIPA-Request• FIPA-Query

Page 18: Seminario 5   deko ferreira

3.6.2.1 FIPA-Request

Este protocolo permite a un agente solicitar a otro la realización de una acción y está identificado en el parámetro del protocolo del mensaje con el valor FIFA-request.

Los mensajes que se intercambian son: • Request, la petición. • Agree, si acepta la petición o Refuse si la rechaza. • 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.• inform-result si además se tiene que comunicar el resultado.

Ejemplo

Page 19: Seminario 5   deko ferreira

3.6.2.2 FIPA-Query

Este protocolo permite a un agente solicitar a otro un objeto o una comprobación que devuelva un valor de verdad, y en función de que tipo de petición sea será un Query-if (comprobación de verdad) o un Query-ref (cuando se pregunta por algún objeto).

Los mensajes que se intercambian son los siguientes: • Query-If o Query-Ref, la solicitud. • Agree si se acepta o refuse si se rechaza.

• 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• Inform-Result si la consulta fue un Query-Ref.

Ejemplo

Page 20: Seminario 5   deko ferreira

3.6.3 ContractNet

Las clases ContractNet implementan el comportamiento del protocolo del mismo nombre:

• Funcionamiento• Los mensajes que se intercambian son:

1. CFP (Call For Proposal)2. Los respondedores pueden enviar un Refuse, un Not-

Understood o un Propose3. El iniciador evalúa propuestas y envía Reject-Proposal

o un Accept-Proposal.4. Los respondedores envían un Failure o bien Inform-

Done, o Inform-Result.

Page 21: Seminario 5   deko ferreira

3.6.3 ContractNetEl agente iniciador (ContractNetInitiator) posee dos métodos

importantes:• handlePropose • handleAllResponses

Y el agente respondedor posee los métodos: • handleAcceptProposal • handleRejectProposal

Ejemplo

Page 22: Seminario 5   deko ferreira

3.6.4 Protocolo FIPA-Propose

Implementa un comportamiento que consiste en que el iniciador le pide permiso al respondedor para realizar una acción, pudiendo realizarse o no en caso de aceptacion.

Los mensajes intercambiados en la ejecución de este protocolo son:

• Propose, con la propuesta de acción por parte del iniciador. • Un Reject-Proposal o un Accept-Proposal en función de si

acepta la propuesta o no.

Page 23: Seminario 5   deko ferreira

3.6.4 Protocolo FIPA-Propose (cont.)

La clase del respondedor (proposeResponder) no dispone de métodos handler, solamente dispone de un prepareResponse() que maneja la respuesta al Propose recibido, un registerPrepareResponse(), un createMessageTemplate() y algunos métodos reset().

Ejemplo.

Page 24: Seminario 5   deko ferreira

3.6.5 Protocolo FIPA-Subscription

El iniciador le solicita al respondedor permiso para suscribirse, el respondedor procesa esa solicitud y la acepta o la rechaza. 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

Page 25: Seminario 5   deko ferreira

3.6.5 Protocolo FIPA-Subscription (cont.) Los mensajes que se intercambian son:

• Subscribe, solicitando la suscripción.• 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.• Si la aceptó, después envía un Inform-Result con las condiciones que

establezca para la suscripción.• 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.• 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