Descrição geral de remover dependências
Os componentes da solução dependem frequentemente de outros componentes da solução. Não é possível eliminar qualquer componente da solução que tiver dependências de outro componente da solução. As dependências são registos criados automaticamente pela estrutura de soluções para evitar que os componentes necessários sejam eliminados, enquanto um ou mais componentes dependentes ainda incluem referências a eles. Um exemplo de dependência é o seguinte: dado que é necessário um campo para um formulário funcionar, se alguma vez tentar executar uma ação que resultará na eliminação desse campo, o formulário deixará de funcionar.
Nota
Neste artigo, eliminar significa que o componente é totalmente removido do sistema.
Neste artigo, vamos discutir como lidar com estas dependências e as estratégias que pode utilizar para remover dependências que já não precisa.
Dependências de componentes não geridos versus geridos
Primeiro, é importante compreender que as dependências só impedem as operações que irão eliminar um componente necessário. As ações que podem eliminar um componente são diferentes, consoante é não gerido ou gerido.
Componentes não geridos
Estes componentes são representados por uma única camada na solução ativa. Qualquer operação Eliminar neste componente resulta na remoção completa do componente.
Componentes geridos
A eliminação de componentes geridos depende de múltiplos fatores: o número de camadas de solução, a posição relativa da camada que está a ser desinstalada e os fabricantes de componentes. Por exemplo, quando um componente é eliminado, considere os seguintes cenários e qual será o comportamento esperado quando desinstalar as várias camadas.
Cenários de exemplo
Os seguintes cenários de exemplo ilustram o que acontece às camadas de solução quando as soluções são desinstaladas.
Cenário 1: Desinstalar uma única camada de solução
Desinstalar a Solução 1 causa uma eliminação de componentes porque é a única camada para o componente.
Cenário 2: Desinstalar camadas de solução de diferentes fabricantes
- Desinstalar a Solução 2 não causa a eliminação de um componente. Só essa camada será removida.
- Desinstalar a Solução 1 causa uma eliminação de componentes porque a ação ocorre na camada base. De facto, a Solução 1 não pode ser desinstalada neste cenário, porque uma solução de um fabricante diferente expande o componente.
Cenário 3: Desinstalar várias camadas de solução de diferentes fabricantes
- Desinstalar a Solução 3 não causa a eliminação de um componente. Só essa camada será removida.
- Desinstalar a Solução 2 não causa a eliminação de um componente. Só essa camada será removida.
- Desinstalar a Solução 1 não causa a eliminação de um componente, porque neste caso há outra solução do mesmo fabricante (Fabricante A = Fabricante C)). A plataforma remove a camada da Solução 1 e substitui-a pela camada da Solução 3.
Cenário 4: Desinstalar camadas de solução numa personalização não gerida
- Desinstalar a camada Active (não gerida) não causa a eliminação de um componente. Só essa camada será removida. Note que não é possível desinstalar a solução Active, mas pode remover os componentes através da funcionalidade Remover Personalizações Ativas.
- Desinstalar a Solução 1 causa a eliminação de um componente. A ação ocorre na camada base. Ao contrário do cenário 2, pode desinstalar a Solução 1. A solução Active não é considerada uma extensão e ambas as camadas serão removidas.
Mostrar página de dependências
O comando Mostrar dependências lista as dependências para a solução ou componente da solução selecionado. Pode ser invocado ao:
- Selecionar Mostrar dependências na página da solução.
- Selecionar Avançadas>Mostrar dependências numa solução quando um componente de solução é selecionado.
- Tentar desinstalar uma solução, o que fará com que a plataforma detete que existem dependências.
Na página Dependências, pode abrir, remover ou eliminar o componente. Mais informações: Ver dependências de um componente
Diagnosticar dependências
Vamos considerar o seguinte cenário. A organização abaixo tem duas soluções: Solução - Fluxo de Trabalho e Solução - Entidade Personalizada.
O proprietário da organização decidiu que já não precisa da Solução - Entidade Personalizada, tentou eliminá-la e foi-lhe apresentada a seguinte página:
Sem entrar em detalhes, podemos concluir que a desinstalação da solução está a tentar eliminar uma entidade denominada Entidade Personalizada e três campos – Entidade Personalizada, Nome e Campo Numérico – e todos os quatro componentes têm dependências.
Nota
Desinstalar a solução pode potencialmente eliminar mais componentes, mas como não têm dependências, não aparecerão na lista.
O próximo passo consiste em verificar a ligação Camadas de Solução (coluna mais à direita) para cada dependência. Isto vai ajudá-lo a decidir o que fazer para remover a dependência.
A imagem seguinte mostra os detalhes da dependência entre a Entidade (Entidade Personalizada) e o Processo (Fluxo de Trabalho de Teste).
Baseado nos dados apresentados, pode ver que o componente dependente pertence a uma solução denominada SolutionWorkflow. Para remover esta dependência, podemos:
- Atualizar a definição do fluxo de trabalho em SolutionWorkflow ao remover quaisquer referências à entidade ou aos seus subcomponentes. Em seguida, pode Atualizar ou Atualizar a versão da solução.
- Desinstalar a solução SolutionWorkflow.
- Remover o fluxo de trabalho de uma nova versão da solução SolutionWorkflow e, e, seguida, efetuar uma Atualização de versão.
Como qualquer componente dependente individual pode impedir a remoção da solução, recomendamos que verifique todas as dependências e que faça todas as alterações necessárias numa única operação.
A imagem seguinte mostra os detalhes da dependência entre a Entidade (Entidade Personalizada) e uma Aplicação condicionada por modelo (A Minha Aplicação).
Baseado nos dados apresentados, pode ver que o componente dependente pertence a uma solução denominada Active. Isto indica que a dependência foi criada ao importar uma solução não gerida ou através de uma personalização não gerida que foi executada através da API ou IU moderna.
Para remover esta dependência, pode:
- Editar a definição da aplicação condicionada por modelo para remover qualquer referência à entidade ou aos seus subcomponentes. Como as aplicações condicionadas por modelos suportam a publicação, tem de publicar as suas alterações.
- Eliminar a aplicação condicionada por modelo
Nota
Desinstalar uma solução não gerida não é uma opção para remover esta dependência, porque as soluções não geridas são apenas uma forma de agrupar componentes.
Ações para remover uma dependência gerida
As dependências geridas são aquelas em que o componente dependente está associado a uma solução gerida. Para resolver este tipo de dependência, tem de agir na solução em que o componente foi adicionado. Essa ação pode ser diferente consoante aquilo que está a tentar fazer.
Se estiver a tentar desinstalar uma solução
Siga estes passos:
- Na organização de destino, inspecione a ligação Camadas de Solução para encontrar a solução mais no topo da lista da componente dependente.
- Na organização de origem, prepare uma nova versão dessa solução onde a solução não contenha a componente dependente ou tenha uma versão atualizada do componente dependente que não contenha referências ao componente necessário. O seu objetivo consiste em remover qualquer referência aos componentes necessários na nova versão da solução.
- Exporte a nova versão da solução.
- Na organização de destino, pode Atualizar essa solução.
- Repita a desinstalação.
Se você estiver a tentar atualizar uma solução
Neste caso, tem de confirmar que pretendia eliminar o componente necessário (lembre-se que as dependências são impostas apenas nos componentes que estão a ser eliminados).
Se não queria eliminar o componente, pode corrigir a nova versão da solução ao adicionar o componente de volta, fazendo o seguinte:
- Na organização de destino, desinstale a solução faseada (a solução que termina em _Upgrade).
- Na organização de origem, adicione os componentes necessários de volta à solução.
- Exporte a nova versão.
- Repita a atualização de versão.
Se a eliminação for intencional, tem de remover a dependência. Experimente os passos descritos na secção anterior: "Se está a tentar desinstalar uma solução".
Camadas e dependências
Os componentes dependentes podem ser colocados em camadas, pelo que pode ter de alterar mais de uma solução para remover totalmente uma dependência. O quadro de dependências calcula apenas as dependências entre as camadas superiores para os componentes necessários e dependentes. Isto significa que precisa de avançar de cima para baixo nas soluções do componente dependente.
Considere o seguinte cenário de exemplo:
Experimente desinstalar a Solução - Entidade Personalizada e a operação é bloqueada por dependências.
Comece a diagnosticar a dependência ao selecionar Camadas de Solução no atributo new_numberfield. Verá o seguinte ecrã:
Como as dependências são criadas apenas entre as camadas superiores de cada componente, o primeiro passo é lidar com a dependência entre o atributo new_numberfield em SolutionCustomEntity e o fluxo de trabalho Fluxo de Trabalho de Teste em SolutionWorkflow3.
Para remover a dependência, decide desinstalar SolutionWorkflow3. Faça-o, mas quando tenta desinstalar a solução mais uma vez, é-lhe apresentada pela mesma página de dependências:
No entanto, o atributo new_numberfield já não é listado, mesmo que existisse em mais camadas.
Ações para remover uma dependência não gerida
Para remover as dependências não geridas, é necessário agir diretamente nos componentes, não nas soluções a que pertencem. Por exemplo, se pretende remover as dependências entre um atributo e um formulário, tem de editá-lo no Editor de Formulários e remover o atributo do formulário. A dependência será removida depois de selecionar Guardar e Publicar.
Nota
- O comando Mostrar dependências permite-lhe tomar medidas para ver, remover a dependência, editar o componente ou eliminar o componente. Mais informações: Ver dependências de um componente
- Também pode eliminar o componente dependente. Essa ação elimina todas as dependências, juntamente com o componente.
Para ver as dependências de um componente, a partir da área Soluções, abra a solução pretendida, selecione as reticências verticais junto do componente e, em seguida, selecione Avançadas>Mostrar dependências.
A página de dependências tem duas partes distintas:
- Componentes dependentes: uma lista de componentes que dependem do campo selecionado. Por outras palavras, estes componentes terão este campo como componente necessário.
- Componentes necessários: uma lista de componentes que este campo necessita para funcionar. Por outras palavras, estes componentes terão este campo como componente dependente.