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

11
Laboratory for Advanced Collaboration L A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration (LAC) PUC-Rio, Brazil Rio de Janeiro 25 de Setembro de 2008 Juliana Aquino Markus Endler

Upload: marcos-bayer-cerveira

Post on 07-Apr-2016

218 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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

Page 2: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

22

Roteiro Visão geral do SDM (Shared Data Manager) Registro de Publicadores Publicando Dados Casamento de Eventos e Subinscrições Registrando Interesses

Page 3: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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)

Page 4: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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

Page 5: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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

Page 6: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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; }

Page 7: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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

Page 8: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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);

Page 9: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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”

Page 10: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

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);

Page 11: Laboratory for Advanced Collaboration L A CL A C Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos Laboratory for Advanced Collaboration

1313

Referências Examinando o banco de dados do SDM

http://code.google.com/android/reference/adb.html#sqlite