Rastreamento de dependências para componentes de solução

Soluções são feitas de componentes da solução. Use a área Soluções no Microsoft Dataverse para criar ou adicionar componentes da solução. Você pode executar programaticamente essas ações usando a mensagem AddSolutionComponentRequest ou quaisquer mensagens que criarem ou atualizarem os componentes da solução que incluem um parâmetro de SolutionUniqueName.

Os componentes da solução geralmente dependem de outros componentes da solução. Você não pode excluir qualquer componente da solução que tenha dependências em outro componente da solução. Por exemplo, uma faixa de opções personalizada geralmente exige recursos da Web de imagem ou de script para exibir ícones e executar ações usando scripts. Enquanto a faixa de opções personalizada estiver na solução, os recursos da Web específicos que ela usa serão exigidos. Antes de excluir os recursos da Web, você deve remover as referências a eles na faixa de opções personalizada. Você pode exibir essas dependências de componente de solução no aplicativo selecionando Mostrar Dependências.

Este artigo descreve os tipos de componentes da solução que você pode incluir em suas soluções e como eles são dependentes uns dos outros.

Todos os componentes da solução

A coluna de escolha global do sistema componenttype contém a lista completa de tipos de componente de solução disponíveis. Você pode ver o intervalo de valores com suporte para essa propriedade, incluindo o arquivo OptionSets.cs ou OptionSets.vb em seu projeto. No entanto, muitos dos tipos de componente de solução listados existem apenas para uso interno e a lista não fornece informações sobre as relações entre os componentes da solução.

Dependências de componentes de solução

As dependências do componente da solução garantem que você tenha uma experiência confiável trabalhando com soluções. Elas evitam ações que você normalmente realiza de que você quebre acidentalmente as personalizações definidas em uma solução. São essas dependências que permitem que uma solução gerenciada seja instalada e desinstalada simplesmente por meio da importação ou de excluir uma solução.

A estrutura de soluções acompanha automaticamente as dependências de componentes da solução. Cada operação em um componente da solução calcula automaticamente quaisquer dependências com outros componentes no sistema. O sistema usa as informações de dependência para manter sua integridade e impedir operações que possam levar a um estado inconsistente.

Como resultado do acompanhamento da dependência, os seguintes comportamentos devem ser seguidos:

  • A exclusão de um componente é impedida se outro componente no sistema depender dele.

  • A exportação de uma solução avisa se há componentes ausentes que podem causar falha ao importar essa solução em outro ambiente.

    Você pode ignorar avisos durante a exportação se pretende que a solução seja instalada apenas em um ambiente em que é esperado que os componentes dependentes existam. Por exemplo, quando você cria uma solução que foi projetada para ser instalada sobre uma solução "base" pré-instalada.

  • A importação de uma solução falhará se a solução não incluir todos os componentes necessários e o ambiente de destino ainda não os tiver.

  • Quando você importa uma solução gerenciada, todos os componentes necessários devem corresponder ao tipo de pacote da solução. Um componente em uma solução gerenciada pode depender apenas de outro componente gerenciado.

Há três tipos de dependências de componentes da solução:

  • Solução interna. O Dataverse gerencia dependências internas. Essas dependências existem quando um componente de solução específico não pode existir sem outro componente de solução.
  • Publicado. O Dataverse cria dependências publicadas quando dois componentes da solução estão relacionados entre si e então são publicados. Para remover esse tipo de dependência, você deve remover a associação e publicar as tabelas novamente.
  • Não publicado. Dependências não publicadas se aplicam à versão não publicada de um componente da solução publicável que está sendo atualizado. Depois de publicar o componente da solução, ele se tornará uma dependência publicada.

Dependências internas da solução são dependências em que ações com um componente da solução exijam uma ação para outro componente da solução. Por exemplo, se você excluir uma tabela, você espera que todos os atributos da tabela sejam excluídos com ela. O sistema também exclui as relações de tabela com outras tabelas.

No entanto, uma dependência interna pode levar a uma dependência publicada e ainda exigir intervenção manual. Por exemplo, se você incluir um campo de pesquisa em um formulário de tabela e excluir a tabela primária na relação, não poderá concluir essa exclusão até remover a coluna de pesquisa do formulário de tabela relacionado e publicar o formulário.

Ao executar ações programaticamente com soluções, use mensagens relacionadas à tabela Dependency. Acesse Dependency Entity para ver mensagens que você pode usar para identificar dependências que possam existir antes de excluir um componente ou desinstalar uma solução.

Componentes comuns da solução

Esses componentes da solução aparecem no aplicativo. Você trabalha diretamente com eles ao adicionar ou remover componentes da solução por meio da página da solução. Cada um dos outros tipos de componentes da solução depende de um ou mais desses componentes de solução.

Guias de opções do aplicativo (RibbonCustomization)

Personalizações da Faixa de Opções para os modelos da Faixa de Opções do aplicativo e da tabela. As guias de aplicativo não incluem definições das guias no nível da tabela ou do formulário.

As faixas de opções de aplicativo personalizado frequentemente têm dependências publicadas em recursos da Web. Use recursos da Web para definir ícones de botão da faixa de opções e funções JavaScript que controlam quando os elementos da faixa de opções são exibidos ou quais ações são executadas quando um controle de faixa de opções específico é usado. As dependências são criadas somente quando as definições da faixa de opções usam a $webresource: diretiva para associar o recurso Web à faixa de opções. Para obter mais informações, consulte diretiva $webresource.

Modelo de artigo (KBArticleTemplate)

Modelo que contém os atributos padrão de um artigo. Sempre há uma dependência interna entre o modelo de artigo e a tabela KbArticle.

Função de conexão (ConnectionRole)

Função que descreve uma relação entre dois registros. Cada função de conexão define quais tipos de registros de entidade podem ser vinculados usando a função de conexão. Essa função cria uma dependência publicada entre a função de conexão e a tabela.

Modelo de Contrato (ContractTemplate)

Modelo que contém os atributos padrão de um contrato. Sempre há uma dependência interna entre o modelo de contrato e a tabela do contrato.

Painel ou formulário de entidade (SystemForm)

Use registros da tabela de formulários do sistema para definir dashboards e formulários de tabela. Quando você usa um SystemForm como um formulário de tabela, há uma dependência interna na tabela. Quando você usa um SystemForm como dashboard, não há dependências internas. Os formulários de tabela e os painéis têm dependências relacionadas ao seu conteúdo. Um formulário de tabela pode ter colunas de pesquisa (lookup) que dependem de uma relação de tabela. Os painéis e formulários de tabela podem conter gráficos ou subgrades que criarão uma dependência publicada em uma exibição, que então tem uma dependência interna em uma tabela. Uma dependência publicada em recursos da Web pode ser criada em razão do conteúdo exibido no painel ou no formulário ou quando um formulário contém bibliotecas JavaScript. Os formulários da tabela têm dependências publicadas em quaisquer atributos que são exibidos como colunas no formulário.

Modelo de E-mail (EmailTemplate)

Modelo que contém os atributos padrão de uma mensagem de e-mail. Um modelo de email geralmente inclui colunas para inserir dados de atributos de tabela especificados. Você pode vincular um modelo de email a uma tabela específica ao criá-la, para que possa haver uma dependência interna em relação à tabela. Um modelo de email global não está associado a uma tabela específica, mas pode ter publicado dependências em atributos de tabela usados para fornecer dados. Um processo (fluxo de trabalho) frequentemente é configurado para enviar um email usando um modelo de email, criando uma dependência publicada com o fluxo de trabalho.

Entidade (Entidade)

As tabelas, anteriormente conhecidas como entidades, são a estrutura primária usada para modelar e gerenciar dados no Dataverse. Devido às dependências internas entre elas, ao excluir uma tabela, você também exclui gráficos, formulários, relações de tabela, exibições e atributos associados a essa tabela. As tabelas frequentemente têm dependências publicadas com processos, painéis e modelos de email.

Perfil de segurança de campo (FieldSecurityProfile)

Perfil que define o nível de acesso para atributos protegidos.

Modelo de correspondência (MailMergeTemplate)

Modelo que contém os atributos padrão de um documento de mala direta. Um modelo de mala direta tem uma dependência publicada da tabela à qual está associado.

Conjunto de opções (OptionSet)

Uma coluna de escolha, anteriormente conhecida como um conjunto de opções, define um conjunto de opções. Um atributo de lista de seleção usa uma escolha para definir as opções fornecidas. Vários atributos de lista de seleção podem usar uma escolha global de forma que as opções fornecidas sejam sempre as mesmas e possam ser mantidas em um único local. Uma dependência publicada ocorre quando um atributo de lista de opções faz referência a uma escolha global. Não é possível excluir uma opção global que esteja sendo usada por um atributo de lista de seleção.

Conjunto de plug-in (PluginAssembly)

Conjunto que contém um ou mais tipos de plug-in. Os plug-ins são registrados em eventos que geralmente estão associados a uma tabela. Esse registro cria uma dependência publicada.

Processo (Fluxo de Trabalho)

Conjunto de regras lógicas que definem as etapas necessárias para automatizar um processo comercial específico, tarefa ou conjunto de ações a serem executadas. Processos fornecem uma ampla variedade de ações que criam dependências publicadas de qualquer outro componente da solução referenciado pelo processo. Cada processo também tem uma dependência publicada da tabela à qual está associado.

Relatório (Relatório)

Resumo de dados em layout de fácil leitura. Um relatório publicou dependências em quaisquer dados de tabela ou atributo incluídos no relatório. Cada relatório também deve ser associado a uma categoria de relatório, criando uma dependência interna em um componente de solução chamado Categoria Relacionada ao Relatório (ReportCategory). Você pode configurar relatórios para serem sub-relatórios, criando uma dependência publicada com o relatório pai.

Etapa de processamento de mensagem SDK (SDKMessageProcessingStep)

Estágio do pipeline de execução em que um plug-in será executado.

Função de segurança (Função)

Agrupamento de privilégios de segurança. Atribua funções de segurança aos usuários para autorizar seu acesso ao sistema Dataverse. Associe formulários da tabela a funções de segurança específicas para controlar quem pode exibir o formulário. Essa associação cria uma dependência publicada entre a função de segurança e o formulário.

Observação

Você só pode adicionar funções de segurança da unidade de negócios do ambiente a uma solução. Somente um usuário com acesso de leitura àquelas funções de segurança pode adicioná-las a uma solução.

endpoint de serviço (ServiceEndpoint)

Endpoint de serviço que você pode contatar.

Mapa do site (SiteMap)

Dados de XML usados para controlar o painel de navegação do aplicativo. Você pode vincular o mapa do site para exibir um recurso da Web HTML ou um ícone no mapa do site pode usar um recurso da Web de imagem. Ao usar a $webresource: diretiva para estabelecer essas associações, você cria uma dependência publicada. Para obter mais informações, consulte diretiva $webresource.

Recurso da Web (WebResource)

Dados equivalentes aos arquivos usados para estender um aplicativo baseado em modelo ou no desenvolvimento web. Recursos da Web fornecem os componentes do lado do cliente que são usados para fornecer elementos personalizados da interface do usuário. Recursos da Web podem ter dependências publicadas com formulários de tabela, faixas de opções e o mapa do site. Ao usar a diretiva $webresource: para estabelecer associações em uma barra de comandos ou no mapa do site, você cria uma dependência publicada. Para obter mais informações, consulte a diretiva $webresource.

Observação

Os recursos da Web podem depender de outros recursos da Web com base em links relativos. Por exemplo, um recurso da Web HTML pode usar um CSS ou um recurso da Web de script. Um recurso Silverlight da Web exibido fora de um formulário de tabela ou gráfico deve ter um recurso HTML da Web para hospedá-lo. Essas dependências não são controladas como dependências de solução.

Consulte também