110 likes | 233 Views
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
E N D
MobilisCompartilhamento de Dados eComunicação baseada em Eventos Juliana AquinoMarkus 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 • Publicando Dados • Casamento de Eventos e Subinscrições • Registrando Interesses
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
Registro de Publicadores Todo serviço que for atuar como um Publisherdeve 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
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; }
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
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);
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”
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);
Referências • Examinando o banco de dados do SDM • http://code.google.com/android/reference/adb.html#sqlite