530 likes | 706 Views
Arquitectura y funcionalidad de SALSA. presentado por Marcela 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. Cómputo Ubicuo. Definiciones.
E N D
Arquitectura y funcionalidad de SALSA presentado por Marcela 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
Cómputo Ubicuo 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 Server Printer LAN (a) PC INTERNET Laptop SS2 SS3 SS1 Access Point Red AD HOC (c) Access Point Red AD HOC (d) WLAN (b) Laptop Cell Phone PDA PC Server Ubiquitous Computing HCI Perception IM Client Reasoning Action Initialize and Register Agent Context-aware Computing Artificial Intelligence X Y notify() Inteligencia Ambiental AmI
Cómputo Ubicuo Autonomous Agents Distributed Interoperability Reactivity Effortless interactions Heterogeneity Scalability Case Base Reasoning Opportunistic access Neural Networks Presentation of services Mobility Características de AmI
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
Agentes 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.
SALSA Ciclo de vida de los agentes
Arquitectura de SALSA 3. Middleware SALSA
CHIS (“Context-aware Hospital Information System”) Location-estimation
Directorio de Agentes 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
Contenido • Creación de Agentes • Comunicación • Eventos de SALSA • Derivando Contexto Secundario • Atributos de los Agentes • Directorio de Agentes • Instalación
Creación de Agentes 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 Pasos para crear un Agente • 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 (con comunicación via el Broker) … Pasos para crear un Agente • Se extendiede la clase SALSA.Agent class MyAgent extends Agent • 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 • 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 Se extiende de Reasoning Se sobreescribe método think() con la lógica del razonamiento Se invoca la acción(es) Componente de Razonamiento
Creación de Agentes Se extiende de Action Se sobreescribe método execute() Componente de Acción
Creación de Agentes (con comunicación via el Broker) Agente Hola Mundo
Contenido • Creación de Agentes • Comunicación • Eventos de SALSA • Derivando Contexto Secundario • Atributos de los Agentes • Directorio de Agentes • Instalación
Comunicació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 servicio
Comunicación Solicitar Información
Comunicación Comunicar información de un sensor
Comunicación 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 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 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 El método execute() contiene la acción(es) a ejecutar Envío de un mensaje public class AgentDirectoryAction extends SALSA.Action{ String ldap; //informacion del directorio de Agentes String 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 Métodos de Comunicación public 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ón
Comunicación mediante el Broker Métodos de Comunicación
Contenido • Creación de Agentes • Comunicación entre Agentes • Eventos de SALSA • Derivando Contexto Secundario • Atributos de los Agentes • Directorio de Agentes • Instalación
Contenido • Creación de Agentes • Comunicación entre Agentes • Eventos de SALSA • Derivando Contexto Secundario • Atributos de los Agentes • Directorio de Agentes • Instalación
Derivando Contexto Secundario Contexto Secundario <tipoLuz>medio</tipoLuz> <sonido>40</sonido> <noPersonas>30</noPersonas> <contexto type=ActividadSocial> fiesta </contexto> XSL
Derivando contexto secundario Derivando contexto secundario public 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
Contenido • Creación de Agentes • Comunicación entre Agentes • Eventos de SALSA • Derivando Contexto Secundario • Atributos de los Agentes • Directorio de Agentes • Instalación
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
Directorio de Agentes AgentDirectory ad=new AgentDirectory((“AD@pc-coolab5"); ad.register(agentito1,"user"); //Solicitudes al directorio de agentes ad.requestAllServices(); ad.requestByService(); ad.requestServicesByArea();
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