mobilis compartilhamento de dados e comunicação baseada em eventos

Post on 11-Jan-2016

25 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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

top related