Criar patches para simplificar atualizações de soluções

Se você adicionar uma entidade a uma solução e exportar essa solução, a entidade e todos os ativos relacionados são exportados nessa solução. Esses ativos incluem atributos, formulários, exibições, relacionamentos, visualizações e os outros ativos que são incluídos na entidade. Exportar todos os objetos significa que você pode modificar involuntariamente os objetos na implantação de destino, ou transferir dependências não intencionais.

Para resolver esse problema, você pode criar e publicar os patches de solução que contêm os subcomponents das entidades em vez de publicar toda a entidade e seus ativos. A solução original e um ou mais patches relacionados podem ser acumulados (mesclados) mais tarde em uma versão atualizada da solução, que poderá substituir a solução original na organização Microsoft Dataverse de destino.

Patches

Você pode aplicar patches em soluções gerenciadas e não gerenciadas e incluir somente as alterações das entidades e os ativos relacionados da entidade. Os patches não contém nenhum componente ou relacionamento de sistema não personalizado do qual ele depende porque esses componentes já existem na organização implementada. Em algum momento do ciclo de desenvolvimento, você pode acumular os patches em uma nova versão da solução para substituir a solução original a partir da qual os patches foram criados.

Os patches são armazenados no banco de dados do Dataverse como registros de entidade do Solution. Um atributo não nulo ParentSolutionId indica que a solução é um patch. Os patches podem ser criados e gerenciados pelo SDK para .NET ou APIs da Web, que são úteis para desenvolver a automação como um script de instalação do produto. No entanto, o aplicativo Web Dataverse fornece diversos formulários Web que permitem criar e gerenciar patches de forma interativa.

  • Os patches podem ser criados a partir de uma solução primária usando CloneAsPatchRequest ou Ação CloneAsPatch.

  • O patch primário não pode ser um patch.

  • Os patches podem ter apenas uma solução base.

  • Um patch cria uma dependência (a nível de solução) em sua solução base.

  • Você só pode instalar um patch se a solução base estiver presente.

  • Não é possível instalar um patch a menos que o nome exclusivo e o número da versão secundária/principal da solução base, conforme identificado pelo ParentSolutionId, não correspondam àqueles da solução base instalada na organização de destino.

  • A versão do patch deve ter o mesmo número principal e secundário, mas um número superior de versão e compilação, que o número da versão principal da solução. O nome de exibição pode ser diferente.

  • Se uma solução tiver patches, os patches subsequentes precisam ter um número de versão numericamente superior a qualquer patch existente dessa solução.

  • Os patches oferecem suporte às mesmas operações que as soluções como, por exemplo, atualização aditiva, mas não remoção. Não é possível remover componentes de uma solução usando um patch. Para remover componentes de uma solução, execute uma atualização.

  • Os patches exportados como gerenciados devem ser importados em uma solução gerenciada primária. A regra é que a proteção do patch (gerenciado ou não gerenciado) deve corresponder a seu pai.

  • Não utilize patches não gerenciados para fins de produção.

  • Os patches são suportados apenas em organizações Dataverse de versão 8.0 ou mais recente.

    As ferramentas SolutionPackager e PackageDeployer nesta versão oferecem suporte a patches de solução. Consulte a ajuda online da ferramenta para todas as opções de linha de comando que estão relacionados aos patches.

Criar um patch

Crie um patch a partir de uma solução não gerenciada em uma organização usando a mensagem CloneAsPatchRequest ou Ação CloneAsPatch ou usando o aplicativo Web. Depois de criar o patch, a solução original é bloqueada e não é possível alterá-la ou exportá-la enquanto houver patches dependentes que estão na organização que identifica a solução como uma solução base. O controle de versão de patch é semelhante ao controle de versão de solução, e é especificado no seguinte formato: major.minor.build.release. Não é possível fazer alterações nas versões principais e secundárias da solução ao criar um patch.

Exportar e importar um patch

Você pode usar o SDK para .NET ou APIs Web, o aplicativo Web, ou a ferramenta Package Deployer para exportar e importar um patch. As classes de solicitação relevantes do SDK para .NET são ImportSolutionRequest e ExportSolutionRequest. As ações relevantes para a API Web são Ação ImportSolution e Ação ExportSolution.

Exemplos de patch do aplicativo

A tabela a seguir lista os detalhes de um exemplo de patch do aplicativo. Observe que neste exemplo, a solução e os patches são importados em ordem numérica e são aditivos, o que é consistente com a importação da solução em geral.

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

O processo de importação é o seguinte.

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

  2. Em seguida, o patch 1.0.1.0 da SolutionA é importado. A organização agora contém entityA com 6 campos (3 foram atualizados), mais entityB com 10 campos.

  3. Por fim, o patch 1.0.2.0 da SolutionA é importado. A organização agora contém entityA com 6 campos (3 atualizados), entityB com 10 campos, mais entityC com 10 campos.

Outro exemplo de patch do aplicativo

Vamos dar uma olhada em outro exemplo de patch de aplicativo com os detalhes listados na tabela a seguir.

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

O processo de importação é o seguinte:

  1. O desenvolvedor ou personalizador importa primeiro 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 agora contém uma entidade Account com um campo de número de conta de 50 caracteres.

  3. O patch 1.0.1.0 da SolutionA é importado. A organização ainda contém uma entidade Account com um campo de número de conta de 50 caracteres, conforme aplicado pela SolutionB.

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

Excluir um patch

Você pode excluir um patch ou solução básica (primária) usando DeleteRequest ou, para a API de Web, use o método HTTP DELETE. O processo de exclusão é diferente para uma solução gerenciada ou não gerenciada que tem um ou mais patches existentes na organização.

Para uma solução não gerenciada, você deve primeiro desinstalar todos os patches da solução básica, na ordem de versão inversa da que foram criados, antes de desinstalar a solução básica.

Para uma solução gerenciada, basta desinstalar a solução base. O sistema Dataverse desinstala automaticamente os patches na ordem de versão inversa antes de desinstalar a solução base. Também é possível desinstalar um único patch.

Atualizar uma solução

Atualizar uma solução envolve o acúmulo (mesclagem) de todos os patches dessa solução em uma nova versão da solução. Em seguida, a solução é desbloqueada e pode ser novamente modificada (apenas solução não gerenciada) ou exportada. Para uma solução não gerenciada, nenhuma modificação adicional da solução é permitida com exceção da criação de patches a partir da solução recentemente atualizada. Para acumular patches em uma solução não gerenciada, use CloneAsSolutionRequest ou Ação CloneAsSolution. Clonar uma solução criará uma nova versão da solução não gerenciada, incorporando todos os patches, com um número de versão major.minor superior, o mesmo nome exclusivo, e um nome de exibição.

Para uma solução gerenciada, as coisas são tratadas de forma levemente diferente. Você primeiro clona a solução não gerenciada (A), incorporando todos os patches e, em seguida, exportando-a como uma solução gerenciada (B). Na organização de destino que contém a versão gerenciada da solução (A) e seus patches, você importa a solução gerenciada (B) e, em seguida, executa DeleteAndPromoteRequest ou a Ação DeleteAndPromote para substituir a solução gerenciada (A) e seus patches pela versão gerenciada atualizada (B) que possui um número de versão superior.

Consulte também

Usar soluções segmentadas