Post on 28-Jan-2016
Arquitectura y funcionalidad de SALSA
presentado porMarcela Rodríguez
marcerod@cicese.mx
Noviembre, 2004
Contenido
• Cómputo Ubicuo• Agentes• Arquitectura de SALSA• Sistema basado en SALSA• API de SALSA• Hola Mundo de SALSA
Definiciones
“La creación de ambientes saturados de computación y comunicación inalámbrica, integrados en forma natural a la actividad humana”
M. Satyanarayanan
“…realza el uso de la computadora, ya que hace posible que muchas computadoras estén disponibles en un ambiente físico, y a la vez, de forma invisible al usuario.”
Mark Weiser
Cómputo Ubicuo
Características Extiende la capacidad
computacional al entorno del usuario
La información está presente en todas partes en forma de dispositivos de todas escalas conectados en red Muchos dispositivos
conectados Lo mas transparente
posible para el usuario.“omnipresencia” de la computación
Cómputo Ubicuo
Términos relacionados
• Realidad aumentada• Cómputo penetrante • Computadora invisible (o que
desaparece)• Computación conciente del
contexto• Computación proactiva• Inteligencia ambiental (AmI)
Cómputo Ubicuo
Computación Conciente del Contexto
Contexto• Cualquier información que caracteriza una
situación relacionada a la interacción entre usuarios, aplicaciones y el ambiente que nos rodea [Dey y Abowd, 2000]
Sistema Conciente del Contexto • Software que se adapta de acuerdo a su
ubicación de uso, a la colección de objetos y personas cercanas, así como a los cambios a dichos objetos a través del tiempo [Schilit y Theimer 1994].
Cómputo Ubicuo
Inteligencia AmbientalCómputo Ubicuo
Ubiquitous Computing
PDA Cell Phone
Red AD HOC
(c)
LAN(a)
Laptop
Server Printer
INTERNETPC
Server
Access Point
PC
WLAN(b)
Laptop
Access Point
Red AD HOC
(d)
HCI
Context-aware Computing IM
Client
Initialize and Register
Perception
Reasoning
Action
X Y
SS3SS2SS1
notify()
AgentArtificial
Intelligence
AmI
Características de AmI
Reactivity
Opportunistic access
Case Base Reasoning
Autonomous Agents
Neural Networks
Effortless interactions
Presentation of services
Distributed
Mobility
Interoperability
Scalability
Heterogeneity
Cómputo Ubicuo
Motivación de SALSA
• Agentes autónomos para abordar algunas de las complejidades del cómputo ubicuo
• Agentes autónomos como una abstracción de diseño de sistemas ubicomp
• Necesidades de herramientas (arquitecturas, middleware, frameworks, etc.) para el desarrollo iterativo de ambientes ubicuos
Cómputo Ubicuo
Agentes Autónomo
• Es una entidad encapsulada que resuelve problemas y exhibe las siguientes propiedades:– Proactividad, Reactividad,
Comportamiento colaborativo, Movilidad
• Tiene la capacidad de decidir qué acciones ejecutar y cuándo ejecutarlas de acuerdo con el contexto de la situación
Agentes
Agentes en Ubicomp
• Agentes como asistentes personales,• actúan en representación de usuarios,• representan dispositivos (proxy a
dispositivos),• proporcionan servicios e información
relevantes a la actividad del usuario,• Esconden una funcionalidad compleja
al usuario.
Agentes
Ciclo de vida de los agentesSALSA
perceiving
deactivated
killed
activated
evaluatingselectingactions
reasoning
suspended
executing
communicating
acting
Arquitectura de SALSA
Plataformade Communicación
Proxy al Broker
Percepción
Acción
Razonamiento
Eventos
Communicaión Movilidad
Inicializar
y
Registrar
Directoriode Agentes
Libreríade clases (API) Servicios
Derivar Contexto
Broker de Agentes
3. Middleware SALSA
CHIS (“Context-aware Hospital Information System”)
Location-estimation
HISHIS Agent
(HIS-a)
Server
HISHIS Agent
(HIS-a)
PDA
Location-estimation
Agent (LE-a)
Locationt-awareClient
IM&P server: Agent Broker
Server
HISHIS Agent
(HIS-a)
Server
Context-awareAgent (CA-a)
PDA
Location-estimation
Agent (LE-a)
Location-awareclient
IM&P server: Agent Broker
WLAN
Server
Location-estimation (LE-a)<<mobile>>
CHIS (“Context-aware Hospital Information System”)
Ventajas del Directorio de Agentes
• Servicios “yellow-pages” y “white-pages”
• Guarda la configuración del ambiente• Facilita su recuperación• LDAP (Lightweight Directory Access
Protocol )– Proporciona acceso cliente-servidor a
directorios en red– Permite buscar, leer, agregar, borrar, y
actualizar un directorio
Directorio de Agentes
Reasoning
UserEvent
ArriveResponseEvent
ArriveInfoEvent
ArriveContextualMsgEvent ArriveRequestEvent
ArriveComponentEvent
StateChangeEvent
CommandRequestEvent ArriveCommandEvent
Broker
Action
AgentDirectoryInterface
AgentAttributes
Acting
PassivePerception
Agent
Event
generate
ActivePerception
11
generate
BrokerProxy0..*0..*
send/receive
send
ActiveEntityToPerceive
XMLMessage
SensorData
PassiveEntityToPerceive
Input
perceives
perceives
XMLPresence
Tutorial de SALSA
Contenido
• Creación de Agentes• Comunicación• Eventos de SALSA• Derivando Contexto Secundario• Atributos de los Agentes• Directorio de Agentes• Instalación
Tipos de Agentes SALSA
• Tipos de agentes que se pueden crear según su funcionalidad:– Agente que representa a un usuario– Agentes que ofrece o representa un
servicio– Agente que envuelve una
funcionalidad compleja del sistema, que requiere ser transparente al usuario
Creación de Agentes
Comunicación de los Agentes
• Las modalidades de comunicación entre agentes son:– Comunicación a través del Broker (los
agentes perciben información de otros agentes y actúan comunicándose por medio del Broker (servidor de MI)
– Comunicación directa (p.ej. un agente percibe información de un sensor y la comunica a otro agente directamente, por privacidad)
Creación de Agentes
1. Crear los siguientes componentes del Agente:
A) Razonamiento: Extender la clase SALSA.Reasoning y sobreescribir el método think(EventObject ev)
B) Acción: Extender la clase SALSA.Action y sobreescribir el método execute()
NOTA: En este primer ejemplo de un agente SALSA, la Percepción y comunicación, se realiza a través de MI utilizando el Cliente Jabber de SALSA.
Creación de Agentes
Pasos para crear un Agente
2. Se extendiede la clase SALSA.Agent class MyAgent extends Agent
3. En el constructor del agente se inicializan sus atributos y componentes:
– Especificar la dirección Jabber de este agente, poniendo el atributo JabberID attributes.setJabberID(agent@ServJabber)
– Especificar el cliente Jabber jc=new JabberClient(serv,pto,nombre,pwd)
Creación de Agentes (con comunicación via el Broker)
… Pasos para crear un Agente
… Pasos para crear un Agente
– Crear una instancia del componente de Razonamiento
– Activar el agente invocando el método activate(razonamiento,clienteJabber)
• Crear una instancia del Agente MyAgent myAgent=new MyAgent()
Creación de Agentes (con comunicación via el Broker)
Componente de RazonamientoCreación de Agentes
Se extiende de Reasoning
Se sobreescribe método think() con la lógica del razonamiento
Se invoca la acción(es)
Componente de AcciónCreación de Agentes
Se extiende de Action
Se sobreescribe método execute()
Agente Hola MundoCreación de Agentes (con comunicación via el Broker)
Contenido
• Creación de Agentes• Comunicación• Eventos de SALSA • Derivando Contexto Secundario• Atributos de los Agentes• Directorio de Agentes• Instalación
Comunicación mediante el Broker
Una acción de un agente puede requerir
comunicación con otros agentes para:• Negociar por un servicio• Solicitar información• Comunicar información percibida desde un
sensor o dispositivo del ambiente• Enviar su presencia que indique su estado
actual• Actualizar su componente de razonamiento
(**movilidad)
Comunicación
Negociar por un servicioA : Agent B : Agent
sendCommandRequest(command)
act(command)
sendNotificationInfo( )
Se notifica si se ejecutó la acción
A : Agent B : Agent
sendCommandRequest(command)
act(command)
sendResponseInfo( )
Se envía información generada por la acción
Comunicación
A : Agent B : Agent
sendCommandRequest(command)
act(command)
Solicitar InformaciónComunicación
A : Agent B : Agent
sendRequest( )
sendResponse( )
act(retrievInfo )
A : Agent B : Agent
sendRequest( )
sendNotificationInfo( )
Se notifica que no es posible proporcionar esta información
act(retrieveInfo)
Comunicar información de un sensor
Comunicación
A : Agent B : Agent
sendDataSensor(data)
act()
Comunicación mediante el Broker
• El componente de Acción (clase Action) provee de métodos de comunicación
• Se envían mensajes XML a través del Broker
• Cuando el agente recibe un mensaje, el componente de Razonamiento recibe un evento que indica el tipo de mensaje y contiene al mensaje
Comunicación
Recepción de un mensaje
public class AgentDirectoryReasoning extends Reasoning{
public void think(EventObject ev){
SALSA.Events.Event event=(Event)ev;
if(event.getType()==event.ArriveRequestEvent) {
Utilidades.Parser p = new Utilidades.Parser(event.xml);//PARSEO DE MENSAJE XML:
String tipoRequest=p.getTag("type"); //SE OBTIENE EL TIPO INFO. SOLICITADA String to=p.getAtt(p.raiz,"from"); //SE OBTIENE QUIEN ENVIO EL MENSAJE String ldap_info = retrieveLDAP(); //RECUPERA INFORMACION DEL DIRECTORIO LDAP
//LA ACCION DEL AGENTE ES ENVIAR LA INFORMACION DE LDAP acting.act(new AgentDirectoryAction(to,tipoRequest,ldap_info)); } }}
Comunicación mediante el Broker
Se verifica qué tipo de evento se generó
El método think() recibe un evento indicando el tipo de información recibida
Se analiza el mensaje
Envío de un mensajepublic class AgentDirectoryAction extends SALSA.Action{String ldap; //informacion del directorio de AgentesString to;String type;
public AgentDirectoryAction(String to,String type,String ldap) { this.ldap=ldap; this.to=to; this.type=type; }
public Object execute(){ sendResponse(to,"",type,ldap); return null; }}
Comunicación mediante el Broker
El método execute() contiene la acción(es) a ejecutar
Métodos de Comunicaciónpublic class HelloWorldAction extends Action{
public Object execute(){ sendCommandRequest("mapa@jabber","","desplegar",
"<mapa>emergencias<mapa>");
sendNotificationInfo("display@jabberClient","","mapa_no_disponible",
"<mapa>emergencias<mapa>");
sendRequest("da@jabber","","UsersAndServices","<area>mi</area>"); sendResponse("agente@jabber","","UsersAndServices",ldap_info);
sendDataSensor("paciente","","glucose","<nivel>80</nivel>");
return null; }}
Comunicación mediante el Broker
Métodos de ComunicaciónComunicación mediante el Broker
Métodos de ComunicaciónComunicación mediante el Broker
Contenido
• Creación de Agentes• Comunicación entre Agentes• Eventos de SALSA• Derivando Contexto Secundario• Atributos de los Agentes • Directorio de Agentes• Instalación
Eventos de SALSA
Contenido
• Creación de Agentes• Comunicación entre Agentes• Eventos de SALSA • Derivando Contexto Secundario• Atributos de los Agentes• Directorio de Agentes• Instalación
Contexto SecundarioDerivando Contexto Secundario
XSL
<tipoLuz>medio</tipoLuz>
<sonido>40</sonido>
<noPersonas>30</noPersonas>
<contexto type=ActividadSocial> fiesta
</contexto>
Derivando contexto secundariopublic class HelloWorldReasoning extends Reasoning{ public void think(EventObject ev){
//Se crea instancia de SecondaryContext y se especifica el arch.xsl //que contiene las reglas para derivar contexto SecondaryContext sd=new SecondaryContext(xsl);
//Se especifican las variables contextuales sd.setContextualVariable("nivelLuz"); sd.setContextualVariable("nivelRuido"); sd.setContextualVariable("noPersonas");
//Se deriva contexto String xmlSecondaryContext=sd.derive(ev); //Se analiza xmlSecondaryContext ......
}}
Derivando contexto secundario
Analizando un mensaje xml
• Clase Parser del paquete Utilidades:
Utilidades.Parser p = new Utilidades.Parser(event.xml);//PARSEO DE MENSAJE XML: String contexto=p.getTag(“contexto"); //SE LEE VALOR DE
ETIQUETA CONTEXTO String tipo=p.getAtt(p.raiz,“type"); //SE LEE VALOR DE
ATRIBUTO
Derivando contexto secundario
Contenido
• Creación de Agentes• Comunicación entre Agentes• Eventos de SALSA • Derivando Contexto Secundario• Atributos de los Agentes• Directorio de Agentes• Instalación
Atributos del Agente
Contenido
• Creación de Agentes• Atributos de los Agentes• Comunicación entre Agentes• Eventos de SALSA• Derivando Contexto Secundario• Atributos de los Agentes • Directorio de Agentes• Instalación
AgentDirectory ad=new AgentDirectory((“AD@pc-coolab5");
ad.register(agentito1,"user"); //Solicitudes al directorio de agentes ad.requestAllServices(); ad.requestByService(); ad.requestServicesByArea();
Directorio de Agentes
Contenido
• Creación de Agentes• Atributos de los Agentes• Comunicación entre Agentes• Eventos de SALSA• Derivando Contexto Secundario• Atributos de los Agentes• Directorio de Agentes• Instalación
• Incluir en classpath:– SALSA.jar (API para crear agentes)– Client.jar (API para crear un cliente
jabber)– Utilidades.jar (API para parsear doc
XML)
• Instalar un servidor Jabber:Timp Management Console 0.9.40, paraWindows, http://www.tipic.com
Instalación
Percibiendo de sensores/dispositivosCreación de Agentes
…Percibiendo de sensores/dispositivosCreación de Agentes
Este agente no percibe, ni se comunica via el broker