Criar correções para simplificar atualizações da solução

Se adicionar uma entidade a uma solução e exportar a solução, a entidade e todos os seus recursos relacionados são exportados nessa solução. Estes recursos incluem atributos, formulários, vistas, relações e visualizações, e quaisquer outros recursos que estejam agrupados com a entidade. Exportar todos os objetos significa que pode modificar involuntariamente objetos na implementação de destino ou transportar dependências indesejadas.

Para resolver este problema, pode criar e publicar correções da solução que contenham subcomponentes de entidades, em vez de publicar toda a entidade e todos os seus recursos. A solução original e uma ou mais correções relacionadas podem ser acumuladas (intercaladas) mais tarde numa versão atualizada da solução, que depois pode substituir a solução original do Microsoft Dataverse de destino.

Correções

Pode aplicar correções a soluções geridas ou não geridas, e incluir apenas as alterações a entidades e recursos de entidades relacionados. As correções não contêm quaisquer relações ou componentes de sistema não personalizados dos quais dependa, uma vez que estes componentes já existem na organização implementada. Num determinado ponto do seu ciclo de desenvolvimento, poderá acumular todas as correções numa nova versão de solução para substituir a solução original a partir da qual as correções foram criadas.

As correções são armazenados na base de dados do Dataverse como registos de entidade Solution. Um atributo ParentSolutionId não nulo indica que a solução é uma correção. As correções podem ser criadas e geridas através do SDK para .NET ou APIs Web, que são úteis para desenvolver a automatização, como um script de instalação de produtos. No entanto, a aplicação Web do Dataverse fornece vários formulários Web que permitem criar e gerir interativamente as correções.

  • Os patches só podem ser criados a partir de uma solução principal através de CloneAsPatchRequest ou da Ação CloneAsPatch.

  • O principal da correção não pode ser uma correção.

  • As correções só podem ter uma solução principal.

  • Uma correção cria uma dependência (a nível da solução) na respetiva solução principal.

  • Só poderá instalar uma correção se a solução principal estiver presente.

  • Não poderá instalar uma correção, a menos que o nome exclusivo e o número de versão principal/secundário da solução principal, conforme identificado por ParentSolutionId, não coincida com os da solução principal instalada na organização de destino.

  • Uma versão de correção tem de ter o mesmo número principal e secundário, mas um número de compilação e versão superior ao número de versão da solução principal. O nome a apresentar pode ser diferente.

  • Se uma solução tiver correções, as correções subsequentes têm de ter um número de versão numericamente superior ao de qualquer correção existente para essa solução.

  • As correções suportam as mesmas operações que as soluções, como a atualização adicional, mas não a remoção. Não é possível remover os componentes de uma solução através de uma correção. Para remover componentes de uma solução, faça uma atualização.

  • As correções exportadas como geridas têm de ser importadas em cima de uma solução principal. A regra é que a proteção da correção (gerida ou não gerida) tem de corresponder ao respetivo principal.

  • Não utilize correções não geridas para efeitos de produção.

  • As correções só são suportadas nas organizações do Dataverse da versão 8.0 ou posterior.

    As ferramentas SolutionPackager e PackageDeployer nesta versão suportam correções de solução. Consulte a ajuda online da ferramenta para conhecer quaisquer opções de linha de comandos que estejam relacionadas com correções.

Criar uma correção

Crie um patch a partir de uma solução não gerida numa organização ao utilizar a mensagem do CloneAsPatchRequest ou a Ação CloneAsPatch, ou ao utilizar a aplicação Web. Depois de criar a correção, a solução original fica bloqueada e não poderá alterá-la ou exportá-la, desde que existam correções dependentes na organização que identifiquem a solução como solução principal. A criação de versões da correção é semelhante à criação de versões da solução e especificada no seguinte formato: major.minor.build.release. Não pode fazer alterações às versões existentes da solução principal ou secundária quando cria uma correção.

Exportar e importar uma correção

Poderá utilizar o SDK para .NET ou as APIs Web, a aplicação Web ou a ferramenta Package Deployer para exportar e importar uma correção. As classes de pedidos SDK para .NET relevantes são ImportSolutionRequest e ExportSolutionRequest. As ações relevantes Para a API Web são a Ação ImportSolution e a Ação ExportSolution.

Exemplos de aplicação de correções

A tabela seguinte lista os detalhes de um exemplo de aplicação de correções. Note que, neste exemplo, a solução e as correções são importadas por ordem numérica e são aditivos, o que é consistente com a importação de soluções em geral.

Nome da correção Descrição
SolutionA, versão 1.0 (não gerida) Contém entityA com 6 campos.
SolutionA, versão 1.0.1.0 (não gerida) Contém entityA com 6 campos (3 atualizados) e adiciona entityB com 10 campos.
SolutionA, versão 1.0.2.0 (não gerida) Contém entityC com 10 campos.

O processo de importação é o seguinte.

  1. Primeiro, o programador ou personalizador importa a solução base (SolutionA 1.0) para a organização. O resultado é entityA com 6 campos na organização.

  2. Em seguida, a SolutionA correção 1.0.1.0 é importada. A organização contém agora entityA com 6 campos (3 foram atualizados), e entityB com 10 campos.

  3. Finalmente, a SolutionA correção 1.0.2.0 é importada. A organização contém agora entityA com 6 campos (3 foram atualizados), entityB com 10 campos, mais entityC com 10 campos.

Outro exemplo de aplicação de correções

Vamos analisar outro exemplo de aplicação de correções, com os detalhes listados na tabela seguinte.

Nome da correção Descrição
SolutionA, versão 1.0 (não gerido, solução base) Contém a entidade Account em que o comprimento do campo de número de conta é ajustado de 20 para 30 caracteres.
SolutionB, versão 2.0 (não gerido, fornecedor diferente) Contém a entidade Account em que o comprimento do campo de número de conta é ajustado para 50 caracteres.
SolutionA, versão 1.0.1.0 (não gerida, correção) Contém uma atualização à entidade Account em que o comprimento do campo de número de conta é ajustado para 35 caracteres.

O processo de importação é o seguinte:

  1. Primeiro, o programador ou personalizador importa a solução base (SolutionA 1.0) para a organização. O resultado é uma entidade Account com um campo de número de conta de 30 caracteres.

  2. A SolutionB é importada. A organização contém agora uma entidade Account com um campo de número de conta de 50 caracteres.

  3. A SolutionA correção 1.0.1.0 é importada. A organização ainda contém uma entidade Account com um campo de número de conta de 50 caracteres, conforme aplicação pela SolutionB.

  4. A SolutionB é desinstalada. A organização contém agora uma entidade Account com um campo de número de conta de 35 caracteres, conforme aplicado pela correção SolutionB 1.0.1.0.

Eliminar uma correção

Pode eliminar uma correção ou solução base (principal) ao utilizar DeleteRequest ou, para a API Web, utilizar o método HTTP DELETE. O processo de eliminação é diferente para uma solução gerida ou não gerida que tenha uma ou mais correções existentes na organização.

Para uma solução não gerida, primeiro tem de desinstalar todas as correções para a solução base, por ordem inversa àquela em que foram criadas, antes de desinstalar a solução base.

Para uma solução gerida, basta desinstalar a solução base. O sistema Dataverse desinstala automaticamente as correções pela ordem inversa antes de desinstalar a solução base. Também pode apenas desinstalar uma única correção.

Atualizar uma solução

A atualização de uma solução implica a acumulação (intercalação) de todas as correções para essa solução numa nova versão da solução. Posteriormente, essa solução fica desbloqueada e pode ser novamente modificada (apenas solução não gerida) ou exportada. Para uma solução gerida, não são permitidas mais modificações da solução, exceto para criar correções a partir da solução atualizada recentemente. Para acumular patches numa solução não gerida, utilize CloneAsSolutionRequest ou a Ação CloneAsSolution. A clonagem de uma solução cria uma nova versão da solução não gerida, incorporando todas as suas correções, com um número de versão major.minor superior, o mesmo nome exclusivo e um nome a apresentar.

Para uma solução gerida, as coisas são tratadas de forma ligeiramente diferente. Primeiro, clone a solução não gerida (A) ao incorporar todas as suas correções e exportando-as como uma solução gerida (B). Na organização de destino que contém a versão gerida da solução (A) e os respetivos patches, importe a solução gerida (B) e, em seguida, execute DeleteAndPromoteRequest ou a Ação DeleteAndPromote para substituir a solução gerida (A) e as suas correções com a solução gerida atualizada (B) com um número de versão superior.

Consulte também

Utilizar soluções segmentadas