Ir para o conteúdo
For the complete DHIS2 documentation index, see llms.txt.

DHIS2 version compatibility strategy

O SDK garante compatibilidade com as três versões mais recentes do DHIS 2 (consulte [Compatibilidade] (# android_sdk_compatibility)). Caso o SDK ainda seja compatível com as versões DHIS2 anteriores e nenhum problema grave tenha sido detectado, a compatibilidade pode ser estendida para as versões anteriores.

Para evitar login acidental em instâncias DHIS 2 não suportadas, o SDK bloqueia conexões para versões que ainda não são suportadas ou que foram descontinuadas.

Em relação ao modelo de dados e compatibilidade, a abordagem principal é estender o modelo de dados para ser capaz de suportar todas as versões DHIS 2. Geralmente acontece que as novas versões do DHIS 2 introduzem funcionalidade extra e não removem a existente, portanto, oferecer suporte a uma nova versão do DHIS 2 geralmente significa usar o modelo de dados mais recente.

Como regra geral, o SDK tenta evitar alterações significativas em sua API e os novos recursos são opcionais para o usuário. Essa regra é seguida tanto quanto possível, mas há casos em que o suporte a APIs novas e antigas para evitar a quebra tem um custo muito alto. Nesse cenário, o SDK pode apresentar alterações importantes para ser compatível com a nova versão DHIS 2.

Aqui pode encontrar alguns exemplos de mudanças no SDK e o efeito no aplicativo.

Exemplo: pequena mudança

Até a versão 2.30, o modelo de programa tinha um atributo booleano chamado "captureCoordinates". Este atributo indica se as coordenadas (ponto) devem ser armazenadas naquele programa. A partir de 2.30, este atributo foi substituído por "featureType" com 4 valores possíveis: NONE, POINT, POLYGON, MULTI_POLYGON.

Mudanças no SDK:

A partir de 2.30, o SDK usa o atributo "featureType". Se a versão do servidor for inferior a 2.30, o SDK mapeia o valor "captureCoordinates" para:

  • falso - NENHUM
  • verdadeiro - PONTO

Mudanças no aplicativo:

O aplicativo agora é forçado a usar "featureType". As modificações no código são bastante diretas.

Exemplo: grande mudança

A partir de 2.30, o modelo de relacionamento sofreu uma profunda refatoração para permitir relacionamentos entre evento, inscrição e trackedEntityInstances. O SDK adotou o modelo para 2.30 e expõe esse modelo ao aplicativo. Ao interagir com a API, o SDK traduz entre os dois modelos internamente.

Mudanças no aplicativo:

Essa mudança implica que o aplicativo deve adotar um modelo diferente e as mudanças não são tão simples.