laboratory for advanced collaboration l a cl a c mobilis compartilhamento de dados e comunicação...

Post on 07-Apr-2016

218 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

top related