laboratory for advanced collaboration l a cl a c mobilis compartilhamento de dados e comunicação...
TRANSCRIPT
Laboratory for Advanced Collaboration
L A
C
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 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 Service Manager
FunFlag ServiceMap Service
Location ServiceGroup Service
Mobilis Application
CMS
ProxyNaradaBrokering
Per
sist
ence
SQLite SDM
Shared Data Manager
Core Services
Service Manager
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 Publicadorespublic 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