mobilis compartilhamento de dados e comunicação baseada em eventos
DESCRIPTION
Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos. Juliana Aquino Markus Endler. Laboratory for Advanced Collaboration (LAC) PUC-Rio , Brazil Rio de Janeiro 25 de Setembro de 2008. Roteiro. Visão geral do SDM ( Shared Data Manager ) Registro de Publicadores - PowerPoint PPT PresentationTRANSCRIPT
Laboratory for Advanced Collaboration
L A
C
MobilisCompartilhamento de Dados e
Comunicação baseada em Eventos
MobilisCompartilhamento de Dados e
Comunicação baseada em Eventos
Laboratory for Advanced Collaboration (LAC)PUC-Rio, Brazil
Rio de Janeiro25 de Setembro de 2008
Juliana AquinoMarkus EndlerJuliana AquinoMarkus Endler
22
Roteiro
Visão geral do SDM (Shared Data Manager) Registro de Publicadores Publicando Dados Casamento de Eventos e Subinscrições Registrando Interesses
44
Visão Geral
Shared Data Manager (SDM) é um serviço core usado por todos os Serviços Mobilis
SDM implementa uma interface do tipo Pub-Sub
Usa o proxy NaradaBrokering
SDMShared Data Manager
Publisher(1..n)
Subscriber(1..n)
2. publish data (event)
1. subscribe about interested data (event)
3. receives data (event)
55
Shared Data Manager
NaradaBrokeringNetwork
Services
Per
sist
ence
SQLite SDM
Shared Data Manager
Core Services
Mobilis Services Se
rvice M
ana
ger
FunFlag ServiceMap Service
Location ServiceGroup Service
Mobilis Application
CMS
ProxyNaradaBrokering
Per
sist
ence
SQLite SDM
Shared Data Manager
Core Services
Se
rvice M
ana
ger
Mobilis Application
CMS
ProxyNaradaBrokering
Mobilis Services
FunFlag ServiceMap Service
Location ServiceGroup Service
77
Registro de Publicadores
Todo serviço que for atuar como um Publisher deve implementar a interface IPublisher
Devem implementar o método getMetaDataList(), que retorna uma lista de objetos MetaData
Essa lista de objetos é usada para que o SDM possa persistir os objetos publicados
88
Registro de Publicadores
public List<MetaData> getMetaDataList() { List<String> metaDataList = new Vector<String>();
String metaDataName = FlagObject.getCompleteName(); MetaData metaData = new MetaData(metaDataName); // Adds the meta data field (name, type and if the field is key). metaData.addMetaDataField("latitude", double.class, false); metaData.addMetaDataField("longitude", double.class, false); metaData.addMetaDataField("description", String.class, false); metaData.addMetaDataField("url", String.class, false); metaData.addMetaDataField("category", String.class, false); metaData.addMetaDataField("owner", String.class, false);
metaDataList.add(metaData); // Returns the meta data list. return metaDataList; }
99
Publicando Dados
Evento Um evento é algum acontecimento
Composto de um subject, um conjunto de propriedades e um objeto de dados
Subject É o assunto de um evento
Todo evento deve ter exatamente um subject
Exemplo: FlagService/Flag
1010
Publicando Dados
Propriedades do evento As propriedades do evento devem ser definidas,
configurando os atributos de um objeto EventProperty
eventProperties.setAttribute("latitude", 1023.45); eventProperties.setAttribute("longitude", 1024.89);eventProperties.setAttribute("owner", "João do Pulo");eventProperties.setAttribute("categoria", “show”);
... Publicando ...sdm.publish(subject, eventProperties, data);
1111
Casamento de Eventos e Subinscrições Casamento é baseado no paradigma
Publish/Subscribe Subject, expressão
Subject: Nome do objeto da publicação/subinscrição Nome completo do objeto (Nome do serviço +
nome do objeto) FlagService/Flag (nome do objeto da Flag)
Expressão: String baseada na sintaxe condicional do SQL92 Exemplo:
ownerId = “viterbo” and category = “restaurant”
1212
Registrando Interesse
Subscribers (Serviços assinantes) incluem uma subinscrição a um tópico Topic topic = sdm.subscribe(subject, expression);
Onde: subject: FlagService/FlagObject expression: owner = “viterbo” and category = “restaurant”
Para ser notificado, um assinante deve criar um listener: FlagEventListener listener = new FlagEventListener(); sdm.addListener(listener, topic);
Para desfazer uma subinscrição: sdm.unsubscribe(topic);
1313
Referências
Examinando o banco de dados do SDM http://code.google.com/android/reference/adb.html#sqlite