Comunicação entre Dispositivo Móvel e Servidor

Há 3 situações de troca de dados entre o dispositivo móvel e o servidor:

  1. A carga inicial de dados no dispositivo,
  2. Envio das entidades alteradas e criadas no dispositivo para o servidor,
  3. Download para o dispositivo de dados que estão no servidor. (Atualização da lista de pacientes etc).

Para isto, foi definido a primeira versão do protocolo para a transferência destes dados.

Infra-estrutura

Versionamento de dados

Como não podemos garantir que informações de um paciente estejam em apenas um dispositivo, é preciso tomar certos cuidados para evitar a perda de dados. Para isso, os dados dos pacientes serão versionados.
Quando um dispositivos baixar informações de um paciente do servidor, receberá um número referente à versão destes dados. Quando for enviar os dados com alterações para o servidor o dispositivo deverá informar a versão dos dados recebida do servidor.
O versionamento será feito por módulo, assim haverá uma versão para os dados de cadastro do paciente, uma versão para os dados de visita, uma versão para os dados de agenda, e uma versão para os dados de medicamentos.
A resolução de conflitos, quando dois dispositivos modificam os mesmos dados, fica a cargo do servidor.

GUSTAVO: Como será resolvido o caso de o servidor não conseguir resolver automaticamente o conflito?
RAFAEL: Estou achando muito uma versao por entidade guardada no PDA. Eu estava pensando no modelo que é usado no HotSync dos PDAs..... eles guardam o ID e a data da ultima syncronização. E depois eles guardam apenas as coisas que foram alteradas a partir da ultima atualização.
HELVES: Precisamos definir melhor o que queremos: Sincronização (em uma ação, duas bases ficam iguais: sincronizadas, onde geralmente uma é a master e a outra é somente uma cópia) e "Upload" das alterações e inclusões feitas por várias pessoas para uma mesma base: a base central. Sendo que nenhum dispositivo tem a base central completa.

Protocolo

A comunicação entre o dispositivo e o servidor é feita utilizando XML sobre HTTP.
Para a identificação de cada dispositivo, no momento da primeira carga de dados o dispositivo receberá um identificador. Este identificador de dispositivo será usado, entre outras coisas, para identificar de forma única outras entidades, como visitas. Em todo XML enviado pelo dispositivo deve estar presente o identificador do dispositivo.
Em todo XML transferido entre o dispositivo e o servidor será enviado um campo com a versão do protocolo. Isso possibilitará futuras modificações no protocolo e comunicação do servidor com diferentes versões do software.
Para cada entidade enviada pelo dispositivo ao servidor (paciente, visita, etc.) devem ser enviados, além dos dados, os serguintes campos:

  • Id do dispositivo móvel.
  • Id da entidade: Identificador da entidade sendo alterada.
  • Operação: Que tipo de operação foi feita (adição, remoção, alteração).
  • Versão da entidade: Sobre que versão da entidade foram feitas tais alterações. No caso de inclusão, versão zero.

O servidor gerencia as seguintes informações:

  • Id do dispositivo móvel: Gerado no momento de iniciar o dispositivo.
  • Versão da entidade: Na inclusão começa com zero e é incrementada a cada alteração.
  • Id definitivo da entidade: Gerado no momento do servidor inserir a entidade na base de dados.

O dispositivo móvel gerencia as seguintes informações:

  • Id temporário da entidade: Identificador gerado pelo dispositivo no momento da criação da entidade.
  • Operação: Que tipo de operação foi feita (adição, remoção, alteração).
GUSTAVO: Descrever melhor o protocolo, incluindo todos os campos, padrão (post? xml-rpc?), tratamento de erros, retorno, etc.
RAFAEL: Teremos versão do modelo de dados? Essa ideia de versao do BD ajudou muito qndo eu estava no CPqD.
HELVES: O Ruby on Rails já mantem a versão do BD em uma tabela no banco de dados. A cada alteração de estrutura a ferramenta incrementa este contador.

Identificadores Temporários

Quando houver adição de dados, como o cadastro de um novo paciente ou uma nova visita, o dispositivo atribuirá um ID temporário, sendo que o ID permanente só será atribuido pelo servidor no momento da sincronização de dados.
Para não haver conflito com identificadores existentes, identificadores temporários terão valores negativos, enquanto identificadores permanentes, atribuídos pelo servidor, terão valores positivos.

A carga inicial de dados no dispositivo

O objetivo da carga inicial do dispositivo é pegar todos os parâmetros necessários para o protocolo de comunicação e também todos os dados para iniciar o uso do aplicativo.

Protocolo de comunicação - Iniciar o dispositivo móvel.

Attachments

  • infra.png Download (2.1 KB) - added by gustavold 14 years ago.
  • ProtocoloComunicacao1.gif Download (18.0 KB) - added by helves 14 years ago. Protocolo de comunicação - Iniciar o dispositivo móvel.