1 / 11

Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos

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

sera
Download Presentation

Mobilis Compartilhamento de Dados e Comunicação baseada em Eventos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

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

  3. 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

  4. Shared Data Manager

  5. 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

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

  7. 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

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

  9. 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”

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

  11. Referências • Examinando o banco de dados do SDM • http://code.google.com/android/reference/adb.html#sqlite

More Related