Ler em inglês

Partilhar via


Manter ALM de formulários de aplicação condicionada por modelo em bom estado de funcionamento

Este artigo fornece-lhe informações sobre os vários cenários sobre como implementar e praticar uma gestão saudável do ciclo de vida da aplicação (ALM) para personalizar formulários nas suas soluções de aplicações condicionadas por modelo.

As secções seguintes descrevem como a união de formulários funciona e como manter as personalizações. Os cenários básicos de desenvolvimento com recomendações para manter a ALM bem sucedida para um formulário de aplicação condicionado por modelo são cobertos em detalhe em cada secção que se segue. Todos os cenários incluem passos a seguir que podem ajudá-lo a implementar um processo adequado de ALM ao atualizar a sua solução ou aplicação condicionada por modelo.

Criar um novo formulário e mantê-lo utilizando múltiplas soluções geridas

Siga estes passos para implementar ALM de formulários em bom estado de funcionamento para este cenário.

  1. Crie um novo formulário chamado FormA no seu ambiente de desenvolvimento e efetue personalizações no formulário.
  2. Crie uma nova solução (denominada Solução A no diagrama abaixo) no ambiente de desenvolvimento, que será uma solução não gerida e adicione o seu novo formulário. Exporte a solução como gerida. Este passo exporta um FormXml completo para o formulário.
  3. No seu ambiente de teste, importe a solução gerida do passo 2, o que cria o FormA no ambiente de teste. No diagrama abaixo, o FormA é criado no ambiente de teste e a IU para o formulário mostra Field1 e Field2 que a Solução A acrescentou ao formulário.
  4. Quando personaliza mais a forma que criou no passo 1 através um novo ambiente de desenvolvimento (origem), importe a Solução A gerida criada no passo 2, certifique-se de que a instância de desenvolvimento que está a utilizar tem FormA num estado gerido. Como mostrado no diagrama abaixo, a Solução A gerida é importada no ambiente de desenvolvimento e o formulário é personalizado criando personalizações ativas. Em seguida, FormA pode ser adicionado a uma nova solução não gerida (Solução B no diagrama) e exportada como uma solução gerida do ambiente de desenvolvimento. Este passo exporta um FormXml diferencial (diff) para o formulário.
  5. No seu ambiente de teste, importe a solução gerida (Solução B) do passo 4. Como mostrado no diagrama abaixo, a Solução B está a adicionar um novo Field3 ao FormA e a remover o Field2, que foi adicionado pela Solução A. A IU para o formulário no ambiente de teste mostra agora Field3 e Field1 no formulário, mas não Field2 após a união.

Cenário 1 do diagrama de ALM de formulários.

Exemplo de mau estado de funcionamento para este cenário

Como se pode ver no diagrama abaixo, não é uma prática de bom funcionamento de ALM criar múltiplas soluções geridas a partir do ambiente de desenvolvimento onde a solução base (Solução A) está num estado não gerido. Isto porque, quando cria outra solução não gerida (Solução B) para o formulário não gerido, o FormXml é exportado como um FormXml completo, em vez de um FormXml diferencial, como mostrado no cenário válido acima. Posteriormente, alterações como a remoção de uma coluna não entram em vigor.

Exemplo de mau estado de funcionamento de ALM de formulários para este cenário.

Criar um novo formulário e fazer personalizações utilizando correções e atualizações de versão

Siga estes passos para implementar ALM de formulários em bom estado de funcionamento para este cenário.

  1. Crie um novo formulário chamado FormA no seu ambiente de desenvolvimento e efetue personalizações no formulário.

  2. Crie uma solução (Solução A no diagrama abaixo), que será uma solução não gerida e adicione o seu novo formulário. Exporte a solução como gerida. Este passo exporta um FormXml completo para o formulário.

  3. No seu ambiente de teste, importe a solução gerida do passo 2, criando assim o formulário no ambiente de teste. No diagrama abaixo, o FormA é criado no ambiente de teste e a IU para o formulário mostra Field1 e Field2 que a Solução A acrescentou ao formulário.

  4. Quando personalizar ainda mais o formulário que criou no Passo 1 utilizando correções, utilize o mesmo ambiente onde a Solução A se encontra em estado não gerido e crie uma correção para a solução e personalize o formulário. Em seguida, Exporte a correção como uma solução gerida. Este passo exporta um FormXml completo para o formulário.

  5. No seu ambiente de teste, importe a solução de correção gerida do passo 4. Como mostrado no diagrama abaixo, a correção da Solução A adiciona um novo Field3 ao FormA e remove Field2, que foi adicionado pela Solução A.

    Nota

    Patches que contêm formXml completo são sempre comparados com a camada base a partir do qual o patch foi criado e ignoram quaisquer patches intermédios entre a base e o patch atual. Como resultado, o Field2 é removido, uma vez que existe na Solução A de camada base e a remoção é detetada. Por outro lado, o Field3 é adicionado por esta solução de patch e não pode ser removido por patches subsequentes. Assim, os campos adicionados através de soluções de patch são de natureza aditiva.

  6. Quando personalizar ainda mais o formulário que criou no Passo 1 utilizando atualizações de versão, utilize o mesmo ambiente onde a Solução A se encontra em estado não gerido e clone a Solução A para criar a solução de atualização de versão e personalizar o formulário. Em seguida, exporte a atualização de versão da Solução A como uma solução gerida. Este passo exporta um FormXml completo para o formulário.

  7. No seu ambiente de teste, importe a atualização de versão da Solução A gerida do passo 6. Como mostrado no diagrama abaixo, a atualização de versão da Solução A está a adicionar um novo Field4 ao FormA e a remover o Field2, que foi adicionado pela Solução A. A IU para o formulário no ambiente de teste mostra agora Field1, Field3 e Field4 no formulário, mas Field2 será removido depois do formulário ser unida da importação.

Cenário 2 do diagrama de ALM de formulários.

Personalizar um formulário gerido existente e mantê-lo utilizando múltiplas soluções geridas

Siga estes passos para implementar ALM de formulários em bom estado de funcionamento para este cenário.

  1. Edite um formulário gerido existente, chamado FormB neste exemplo, no seu ambiente de desenvolvimento e efetue personalizações no formulário. Note que a solução A é a solução gerida já instalada para o formulário no ambiente de desenvolvimento.
  2. Crie uma nova solução (Solução B no diagrama abaixo), que é uma solução não gerida e adicione FormB. Exporte a solução como gerida. Este passo exporta um FormXml diferencial (diff) para o formulário.
  3. No seu ambiente de desenvolvimento, importe a solução gerida a partir do passo 2, criando assim uma segunda camada de solução para o formulário. No diagrama abaixo, FormB obtém as alterações unidas da Solução A e Solução B no ambiente de teste e a IU para o formulário mostra agora Field1 e Field3 no formulário, mas não Field2, que foi removido pela Solução B.
  4. Quando personalizar ainda mais o formulário que personalizou no passo 1 utilizando novas soluções geridas, certifique-se de que utiliza um novo ambiente de desenvolvimento, que tem FormB num estado gerido. Como mostrado no diagrama abaixo, as soluções geridas Solução A e Solução B são importadas no novo ambiente de desenvolvimento. O FormB é personalizado criando personalizações ativas, que podem ser adicionadas a uma nova solução (Solução C no diagrama) e exportadas como um solução gerida.
  5. No seu ambiente de teste, importe a solução Solução C gerida do passo 4. Como mostrado no diagrama abaixo, a Solução C está a adicionar um novo Field4 ao FormB e a remover o Field3, que foi adicionado pela Solução B. A IU para o formulário no ambiente de teste mostra agora Field1 e Field4 no formulário, mas não Field2 e Field3.

Cenário 3 do diagrama de ALM de formulários.

Exemplo de mau estado de funcionamento para este cenário

Como mostrado no diagrama abaixo, não é uma prática de bom funcionamento de ALM criar múltiplas soluções geridas a partir do ambiente de desenvolvimento que contém outra solução não gerida que criou para o mesmo formulário. Note que a Solução B está em estado não gerido. Quando cria outra solução não gerida (Solução C) para o FormB, o FormXml é exportado como um FormXml diff, como mostrado no passo 4 no cenário acima. Mas o FormB também contém as alterações da Solução B, que serão substituídas pelas suas novas alterações.

Por exemplo, como visto no diagrama abaixo, Field3 é adicionado ao FormB na Solução B. Mas agora, quando criar uma nova Solução C neste ambiente, com a Solução B em estado não gerido e remover o Field3, o Field3 também será removido no ambiente de desenvolvimento. Field3 não será rastreado no diff FormXml quando a solução for exportada, uma vez que a alteração de adicionar e remover esta coluna foi feita no mesmo camada ativo. Isto significa que quando a Solução C gerida for importada no ambiente de teste, o formulário continuará a compor o Field3 porque o FormXml diff nunca regista como removido (como foi removido no passo 5 no cenário de ALM de formulários em bom estado de funcionamento acima). Efetuar as suas personalizações de formulário desta forma levará a que o ambiente de desenvolvimento fique inconsistente com o ambiente de teste.

Outro exemplo de mau estado de funcionamento de ALM de formulários para este cenário.

Personalizar um formulário gerido existente e mantê-lo utilizando correções e atualizações de versão

Siga estes passos para implementar ALM de formulários em bom estado de funcionamento para este cenário.

  1. Personalize um formulário gerido existente, chamado FormB neste exemplo, no seu ambiente de desenvolvimento e efetue personalizações no formulário. Note que a Solução A é a solução gerida já instalada para o formulário no ambiente de desenvolvimento.

  2. Crie uma solução (Solução B), que será uma solução não gerida e adicione FormB. Exporte a solução como gerida. Este passo exporta um FormXml diff para o formulário.

  3. No seu ambiente de desenvolvimento, importe a Solução B gerida a partir do passo 2, criando assim uma segunda camada de solução para o formulário. No diagrama abaixo, FormB obtém as alterações unidas da Solução A e da Solução B no ambiente de teste. Além disso, a UI para FormB mostra Field1 e Field3 no formulário, mas não Field2, que foi removido pela Solução B.

  4. Quando personalizar ainda mais o formulário que personalizou no Passo 1 utilizando uma solução de correção, pode utilizar o mesmo ambiente de desenvolvimento que o passo 1 onde Solução B existe num estado não gerido. Como mostrado no diagrama abaixo, a Solução A está em estado gerido e a Solução B está num estado não gerido. O formulário é ainda mais personalizado e cria uma correção para a Solução B adicionando o seu formulário a esta solução e exportando-a como uma solução de correção gerida. Este passo exporta um FormXml diff.

  5. No seu ambiente de teste, importe o Solução B de correção gerida do passo 4. Como mostrado no diagrama abaixo, a Correção da Solução A adiciona um novo Field4 ao FormB e remove Field3, que foi adicionado pela Solução B.

    Nota

    As correções são de natureza aditiva e não podem remover componentes, tal como colunas, do formulário. Assim, Field3 não será removido do formulário. A UI do formulário no ambiente de teste mostra agora Field1, Field3 e Field4 no formulário, mas não o Field2.

  6. Quando personalizar ainda mais o formulário que criou no Passo 1 utilizando atualizações de versão, utilize o mesmo ambiente onde a Solução B se encontra em estado não gerido e clone a Solução B para criar a solução de atualização de versão e personalizar o FormB. Exporte a atualização de versão como uma solução gerida. Este passo exporta um FormXml diff para o formulário.

  7. No seu ambiente de teste, importe a Solução B gerida de atualização de versão do passo 6. Como mostrado no diagrama abaixo, a Atualização de Versão da Solução B está a adicionar um novo Field5 ao FormB e a remover o Field3, que foi adicionado pela Solução B. A IU para o formulário no ambiente de teste mostra agora Field1, Field4 e Field5 no formulário, mas Field2 e Field3 foram removidos.

Edite um formulário gerido existente usando diagrama de correções e atualizações de versão.

Manter soluções e personalizações não geridas para um novo formulários em vários ambientes de desenvolvimento

Siga estes passos para implementar ALM de formulários em bom estado de funcionamento para este cenário.

  1. No Ambiente de Desenvolvimento 1, crie um novo FormA e efetue personalizações no formulário.
  2. Crie uma solução (Solução A no diagrama abaixo), que será uma solução não gerida e adicione o seu novo formulário. Exporte a solução como não gerida. Este passo exporta um FormXml completo para o formulário.
  3. No Ambiente de Desenvolvimento 2, importe a solução não gerida do passo 2, o que cria o formulário no Ambiente de Desenvolvimento 2. No diagrama abaixo, o FormA é criado e a IU para o formulário mostra Field1 e Field2 que a Solução A acrescentou ao formulário.
  4. Personaliza ainda mais o formulário no Ambiente de Desenvolvimento 2 fazendo personalizações ativas no ambiente, tais como adicionar uma nova coluna chamada Field3. O FormA agora mostra Field1, Field2 e Field3.
  5. No seu Ambiente de Desenvolvimento 1, personaliza ainda mais o formulário também adicionando Field4. A IU do formulário no Ambiente de Desenvolvimento 1 mostra agora Field1, Field2 e Field4.
  6. Exportar a Solução A não gerida com as alterações efetuadas no passo 5. Este passo exporta um FormXml completo para o formulário.
  7. No Ambiente de Desenvolvimento 2, importe a atualização da Atualização de Versão da Solução A não gerida a partir do passo 6. Uma vez que a solução que está a importar contém o FormXml completo para FormA, substitui a personalização ativa feita no Ambiente de Desenvolvimento 1. Assim, o formulário agora mostra apenas Field1, Field2 e Field4, mas não Field3, que foi a personalização ativa adicional feita no Ambiente de Desenvolvimento 1. Este comportamento ocorre com qualquer importação de solução não gerida que tenha o FormXml completo para o formulário.

Soluções não geridas em vários ambientes.

Manter soluções e personalizações não geridas para um formulário existente em vários ambientes de desenvolvimento

Siga estes passos para implementar ALM de formulários em bom estado de funcionamento para este cenário.

  1. No Ambiente de Desenvolvimento 1, personalize um formulário existente, chamado FormB neste exemplo. Em seguida, realize personalizações no formulário.
  2. Crie uma solução (Solução B no diagrama abaixo), que será uma solução não gerida e adicione FormB. Exporte a solução como não gerida. Este passo exporta um FormXml diff para o formulário.
  3. No Ambiente de Desenvolvimento 2, importe a solução não gerida a partir do passo 2, criando assim uma segunda camada de solução para o formulário. A IU do FormB mostra Field1, Field2 e Field3 após a união de formulários.
  4. Personaliza ainda mais o formulário no Ambiente de Desenvolvimento 2 fazendo personalizações ativas no ambiente, tais como adicionar uma nova coluna chamada Field4. FormB agora mostra Field1, Field2, Field3 e Field4.
  5. No seu Ambiente de Desenvolvimento 1, personaliza ainda mais o formulário adicionando a nova coluna chamada Field5. A IU do formulário no Ambiente de Desenvolvimento 1 mostra agora Field3 e Field5.
  6. Exportar a Solução B não gerida com as alterações efetuadas no passo 5. Este passo exporta um FormXml diff para o formulário.
  7. No Ambiente de Desenvolvimento 2, importe a atualização da Atualização de Versão da Solução B não gerida a partir do passo 6. Uma vez que a solução que está a importar contém o FormXml diff para FormB, unirá a personalização ativa feita no Ambiente de Desenvolvimento 1. Por isso, o formulário agora mostra Field1, Field2, Field3, Field4 e Field5. Este comportamento ocorre com qualquer importação de solução não gerida que tenha o FormXml diff para o formulário.
  8. Se a união de formulários no passo 7 não for o que deseja, mesmo que esteja a importar um FormXml diff com a solução não gerida e se pretender substituir as personalizações ativas feitas no Ambiente de Desenvolvimento 2, remova a camada ativa para FormaB. Mais informações: Remover uma camada não gerida.
  9. Exportar a Solução B não gerida com as alterações efetuadas no passo 5. Este passo exporta um FormXml diff para o formulário.
  10. No Ambiente de Desenvolvimento 2, importe a atualização da Atualização de Versão da Solução B não gerida a partir do passo 9. Uma vez que não existe uma camada ativa para o formulário no Ambiente de Desenvolvimento 2 (consulte o passo 8), todas as alterações da Solução B não gerida são importadas, mesmo que esteja a importar o FormXml diff para FormB. Por isso, o formulário agora mostra apenas Field1, Field2, Field3 e Field5. Este comportamento ocorre com qualquer importação de solução não gerida que tenha o FormXml diff para o formulário. Este é o mesmo resultado do passo 7 no cenário Manter soluções e personalizações não geridas para um formulário existente entre vários ambientes de desenvolvimento.

Diagrama da gestão do ciclo de vida da aplicação de formulário do Cenário 6.

Formulário XML completo e diferencial

Cada pacote de soluções exportadas inclui um ficheiro customizations.xml. Sempre que um formulário é incluído numa solução, a definição de formulário relacionada existe dentro das secções FormXml do ficheiro customizations.xml. O FormXml pode ser completo ou diferencial (diff).

FormXml Completo

O FormXml que obtém na exportação de uma solução para um formulário em estado não gerido é chamado de FormXml completo. Completo significa que contém toda a definição de formulário. Quando cria um novo formulário e o exporta, o formulário será sempre um FormXml completo porque o formulário no ambiente de que está a exportar está num estado não gerido e também está em estado de criação. Se exportar mais soluções a partir deste mesmo ambiente, estas também incluirão um FormXml completo. Como o atributo solutionaction indica um FormXml diferencial, o formulário FormXml no ficheiro customization.xml na solução que exporta não conterá quaisquer atributos solutionaction.

FormXml diferencial (diff)

O FormXml que obtém ao exportar uma solução para um formulário num estado gerido é chamado de FormXml diferencial ou diff. Diff significa que o FormXml contém apenas as alterações efetuadas nas personalizações ativas nesse ambiente e não a definição completa do formulário. Quando personaliza um formulário gerido existente e o exporta, o formulário será sempre um formXml diff, pois apenas conterá as alterações ativas que lhe foram feitas. O FormXml diff no ficheiro customization.xml na solução que exporta conterá atributos solutionaction que definem quais são as alterações, como Adicionado, Removido, Modificado.

O FormXml Diff garante que a sua solução apenas expressará as alterações de que a sua aplicação necessita e será menos afetada por alterações de outras camadas. O FormXml Diff também torna a solução menos volumosa e ajuda-a a importar mais rapidamente.

Consulte também

Recomendações para a forma saudável ALM