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

Soluções são feitas de componentes da solução. Você usará a área de 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 qualquer outro componente da solução. Por exemplo, uma faixa de opções personalizada geralmente exige recursos de imagem ou da Web de imagem ou de script da Web para exibir ícones e executar ações usando scripts. Uma vez que a faixa de opções personalizada esteja na solução, os recursos específicos da web que ela usar serão exigidos. Antes de excluir os recursos da Web, você deve remover as referências a eles na faixa de opções personalizada. Essas dependências de componentes da solução podem ser exibidas no aplicativo em Mostrar Dependências.

Este tópico 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 lista completa de tipos de componentes de soluções disponíveis está localizada na configuração de opções globais do sistema componenttype. A gama aceita de valores para esta propriedade está disponível ao incluir o arquivo OptionSets.cs ou o OptionSets.vb em seu projeto. Entretanto, muitos tipos de componentes da solução listados lá são apenas para uso interno e a lista não fornece informações sobre os relacionamentos entre os componentes da solução.

Dependências de componentes de solução

As dependências do componente da solução ajudam a assegurar que você terá uma experiência confiável ao trabalhar com as soluções. Elas evitam ações que você normalmente realiza ao desconfigurar sem intenção 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 da exclusão de 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. Informações sobre dependências são usada para manter a integridade do sistema e evitar que as operações resultem em um estado inconsistente.

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

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

  • Exportar uma solução alerta o usuário caso haja quaisquer componentes ausentes que possam causar uma falha durante a importação da solução para outro sistema.

    Alertas durante a exportação podem ser ignorados se o desenvolvedor da solução quiser que a solução seja instalada apenas em uma organização onde espera-se que componentes dependentes existam. Por exemplo, quando você cria uma solução que é criada para ser instalada sobre uma solução "base" pré-instalada.

  • A importação de uma solução falha se todos os componentes necessários não forem incluídos na solução e também não existirem no sistema de destino.

    • Além disso, quando você importa uma solução gerenciada todos os componentes necessários devem corresponder ao tipo de pacote de soluções. 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
    Dependências internas são gerenciadas pelo Dataverse. Elas existem quando um componente da solução em particular não pode existir sem outro componente da solução.

    Publicado
    Dependências publicadas são criadas quando dois componentes de solução estão relacionados entre si e depois são publicados. Para remover este tipo de dependência, remova a associação e depois publique as entidades 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 que o componente da solução é publicado, torna-se uma dependência publicada.

    Dependências internas da solução são dependência onde ações com um componente da solução exija uma ação para outro componente da solução. Por exemplo, caso você exclua uma entidade, você deve esperar que todos os atributos da entidade também sejam excluídos. Quaisquer relacionamento de entidade com outras entidades também serão excluídas.

    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 entidade e depois excluir a entidade principal do relacionamento, não poderá concluir a exclusão até remover o campo de pesquisa da entidade relacionada e então publicar o formulário.

    Quando você executar ações de forma programática com soluções, você pode usar as mensagens relacionadas à entidade Dependency. Consulte Entidade de Dependência 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

Estes são os componentes da solução exibidos no aplicativo e os componentes com os quais você trabalhará diretamente ao adicionar ou remover os componentes da solução usando a página de solução. Cada um dos outros tipos de componentes da solução dependerá de um ou mais desses componentes da solução para existir.

Faixas de Opções do Aplicativo (RibbonCustomization) Entidade (Entidade) Relatório (Relatório)
Modelo de Artigo (KBArticleTemplate) Perfil de Segurança de Campo (FieldSecurityProfile) Etapa de Processamento de Mensagem do SDK (SDKMessageProcessingStep)
Função de Conexão (ConnectionRole) Modelo de Mala Direta (MailMergeTemplate) Direito de Acesso (Role)
Modelo de Contrato (ContractTemplate) Conjunto de Opções (OptionSet) Ponto de Extremidade de Serviço (ServiceEndpoint)
Painel ou Formulário de Entidade (SystemForm) Assembly de Plug-in (PluginAssembly) Mapa do Site (SiteMap)
Modelo de Email (EmailTemplate) Processo (Fluxo de Trabalho) Recurso da Web (WebResource)

Faixas de opções de aplicativo (RibbonCustomization)

Personalizações da faixa de opções para os modelos de faixa de opções de aplicativo e de entidade. As faixas de opções de aplicativo não incluem definições das faixas de opções no nível da entidade ou do formulário.

As faixas de opções de aplicativo personalizado têm publicado frequentemente dependências em recursos da Web. Recursos da Web são usados para definir ícones no botão de faixa de opções e funções JavaScript para controlar quando os elementos da faixa de opções são exibidos ou que ações são realizadas quando um controle específico da faixa de opções é usado. Dependências são criadas somente quando as definições de faixa de opções usam a política de $webresource: para associar o recurso da Web à faixa de opções. Mais informações: 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 entidade KbArticle.

Função de conexão (ConnectionRole)

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

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 entidade contrato.

Painel ou formulário de entidade (SystemForm)

Os registros da entidade formulário do sistema são usados para definir os painéis e formulários de entidade. Quando um SystemForm é usado como um formulário de entidade, há uma dependência interna na entidade. Quando um SystemForm é usado como um painel, não há dependências internas. Os formulários de entidade e os painéis têm dependências relacionadas ao seu conteúdo. Um formulário de entidade pode ter campos de pesquisa que dependam de um relacionamento entre entidades. Os painéis e formulários de entidade podem conter gráficos ou subgrades que criarão uma dependência publicada em uma exibição, que tenham uma dependência interna em uma entidade. 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 de entidades têm dependências publicadas em quaisquer atributos que são exibidos como campos no formulário.

Modelo de E-mail (EmailTemplate)

Modelo para contém os atributos padrão de uma mensagem de e-mail. Um modelo de e-mail geralmente inclui os campos que inserem dados de atributos de entidade especificadas. Um modelo de email pode estar vinculado a uma entidade específica quando ela é criada de modo que possa haver uma dependência interna na entidade. Um modelo de email global não está associado com uma entidade específica, mas pode ter dependências publicadas em atributos de entidades usados para fornecer dados. Um processo (fluxo de trabalho) frequentemente é configurado para enviar um e-mail usando um modelo de e-mail que cria uma dependência publicada ao fluxo de trabalho.

Entidade (Entidade)

A estrutura principal usada para modelar e gerenciar dados em Dataverse. Gráficos, formulários, relacionamentos entre entidades, exibições e atributos associados a uma entidade são automaticamente excluídos quando a entidade é excluída devido a dependências internas entre elas. As entidades têm frequentemente publicado dependências com processos, painéis e modelos de e-mail.

Perfil de segurança de campo (FieldSecurityProfile)

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

Modelo de mala direta (MailMergeTemplate)

Modelo que contém os atributos padrão de um modelo de mala direta. Um modelo de mala direta tem uma dependência publicada na entidade a qual é associada.

Conjunto de opções (OptionSet)

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

Assembly de plug-in (PluginAssembly)

Assembly que contém um ou mais tipos de plug-in. Os plug-ins registrados em eventos são geralmente associados a uma entidade. Isso cria uma dependência publicada.

Processo (Fluxo de Trabalho)

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

Relatório (Relatório)

Resumo de dados em layout de fácil leitura. Um relatório tem dependências publicadas em quaisquer dados de entidade 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 da solução chamado Categoria Relacionada de Relatório (ReportCategory). Os relatórios podem ser configurados para ser sub-relatórios que criam uma dependência publicada com o relatório primário.

Etapa de processamento de mensagem SDK (SDKMessageProcessingStep)

Estágio no pipeline de execução que um plug-in deve executar.

Direito de acesso (Direito)

Agrupamento de privilégios de segurança. Os usuários recebem funções que autorizam seus acessos ao sistema Dataverse. Os formulários de entidade podem ser associados com funções de segurança específica para controlar quem pode exibir o formulário. Isso cria uma dependência publicada entre o direito de acesso e o formulário.

Nota

Apenas direitos de acesso da unidade corporativa da organização podem ser adicionados a uma solução. Somente um usuário com acesso de leitura aqueles direitos de acesso podem adicioná-lo a uma solução.

Ponto de Extremidade do Serviço (ServiceEndpoint)

O ponto de extremidade de serviço que pode ser contatado.

Mapa do Site (SiteMap)

Dados de XML usados para controlar o painel de navegação do aplicativo. O mapa do site pode ser vinculado para exibir um recurso da Web HTML ou um ícone no mapa do site pode usar um recurso da Web de imagem. Quando a política de $webresource: é usada para instituir essas associações, uma dependência publicada é criada. Mais informações: diretiva $webresource

Recurso da Web (WebResource)

Dados equivalentes aos arquivos utilizados no desenvolvimento da Web. Recursos da Web fornecem os componentes do cliente que são usados para fornecer elementos da interface do usuário. Recursos da Web podem ter publicado dependências com formulários de entidade, faixas de opções e o SiteMap. Quando a política de $webresource: é usada para instituir essas associações, uma faixa de opções ou o SiteMap, uma dependência publicada é criada. Para obter mais informações, consulte diretiva $webresource.

Nota

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

Consulte também

Conceitos da solução
Removendo dependências
Estratégia do ambiente
Trabalhar com soluções usando as APIs do SDK
Referência da Entidade de Solução
Referência da Entidade SolutionComponent