Отслеживание зависимостей для компонентов решения

Решения состоят из компонентов решений. Вы будете использовать область Решения в Microsoft Dataverse для создания или добавления компонентов решения. Вы можете выполнить эти действия программно, используя сообщение AddSolutionComponentRequest или любые сообщения, которые создают или обновляют компоненты решения, которые включают параметр SolutionUniqueName.

Компоненты решения часто зависят от других компонентов решения. Невозможно удалить компонент решения, которые имеет зависимости с другим компонентом решения. Например, настроенная лента обычно требует веб-ресурсов изображений или сценариев для отображения значков и выполнения действий с использованием сценариев. Пока настроенная лента присутствует в решении, требуются определенные веб-ресурсы, которые она использует. Прежде чем вы сможете удалить веб-ресурсы, вы должны удалить ссылки на них на настраиваемой ленте. Эти зависимости компонентов решений можно просмотреть в приложении, нажав Показать зависимости.

В этой теме описываются типы компонентов решения, которые вы можете включить в свои решения, и их зависимости друг от друга.

Все компоненты решения

Полный список доступных типов компонентов решений находится в системном глобальном наборе параметров componenttype. Поддерживаемый диапазон значений для этого свойства доступен путем включения файла OptionSets.cs или OptionSets.vb в ваш проект. Однако многие из перечисленных типов компонентов решения предназначены только для внутреннего использования, и в списке не содержится информация об отношениях между компонентами решения.

Зависимости компонентов решения

Зависимости компонентов решений помогают гарантировать надежную работу с решениями. Они предотвращают непреднамеренное нарушение настроек, определенных в решении, при действиях, которые вы обычно выполняете. Эти зависимости позволяют устанавливать и удалять управляемое решение путем простого импорта или удаления решения.

Платформа решений автоматически отслеживает зависимости для компонентов решения. Каждая операция с компонентом решения автоматически вычисляет любые зависимости от других компонентов в системе. Информация о зависимостях используется для поддержания целостности системы и предотвращения операций, которые могут привести к несогласованному состоянию.

В результате отслеживания зависимостей применяются следующие поведения:

  • Удаление компонента предотвращается, если от него зависит другой компонент в системе.

  • Экспорт решения предупреждает пользователя, если есть какие-либо недостающие компоненты, которые могут вызвать сбой при импорте этого решения в другую систему.

    Предупреждения во время экспорта могут быть проигнорированы, если разработчик решения намеревается установить решение только в организации, где ожидается наличие зависимых компонентов. Например, при создании решения, предназначенного для установки поверх предварительно установленного "базового" решения.

  • Импорт решения завершается неудачно, если не все необходимые компоненты включены в решение и также не существуют в целевой системе.

    • Кроме того, при импорте управляемого решения все необходимые компоненты должны соответствовать типу пакета решения. Компонент в управляемом решении может зависеть только от другого управляемого компонента.

    Существует три типа зависимостей компонентов решения:

    Внутри решения
    Внутренние зависимости управляются Dataverse. Они существуют, если определенный компонент решения не может существовать без другого компонента решения.

    Опубликовано
    Опубликованные зависимости создаются в том случае, если два компонента решения связаны друг с другом и опубликованы. Чтобы удалить этот тип зависимости, сначала должна быть удалена связь, а затем повторно опубликованы сущности.

    Неопубликованное
    Неопубликованные зависимости применяются к неопубликованной версии доступного для публикации компонента решения, который обновляется. После публикации компонента решения это становится опубликованной зависимостью.

    Внутренние зависимости решения — это зависимости, в которых действия с компонентом решения требуют действия для другого компонента решения. Например, если удалить сущность, следует ожидать, что с ней будут удалены все атрибуты сущности. Любые отношения сущности с другими сущностями также будут удалены.

    Однако внутренняя зависимость может привести к опубликованной зависимости, но также нуждаться в ручной обработке. Например, если в форму сущности включено поле подстановки, а затем была удалена основная сущность этого отношения, то удаление не будет завершено, пока не будет удалено поле подстановки с соответствующей формы сущности и эта форма не будет повторно опубликована.

    Когда вы выполняете действия программно с решениями, вы можете использовать сообщения, связанные с сущностью Dependency. См. раздел Сущность зависимости для сообщений, которые вы можете использовать для определения зависимостей, которые могут существовать до удаления компонента или удаления решения.

Общие компоненты решений

Это компоненты решения, отображаемые в приложении, и компоненты, с которыми вы будете работать напрямую при добавлении или удалении компонентов решения на странице решения. Каждый из других типов компонентов решения будет зависеть от существования одного или нескольких из этих компонентов решения.

Ленты приложений (RibbonCustomization) Сущность (Entity) Отчет (Report)
Шаблон статьи (KBArticleTemplate) Профиль безопасности полей (FieldSecurityProfile) Шаг обработки сообщения SDK (SDKMessageProcessingStep)
Роль подключения (ConnectionRole) Шаблон слияния почты (MailMergeTemplate) Роль безопасности (Role)
Шаблон контракта (ContractTemplate) Набор параметров (OptionSet) Конечная точка службы (ServiceEndpoint)
Панель мониторинга или форма сущности (SystemForm) Сборка подключаемого модуля (PluginAssembly) Карта сайта (SiteMap)
Шаблон сообщения электронной почты (EmailTemplate) Процесс (Workflow) Веб-ресурс (WebResource)

Ленты приложений (RibbonCustomization)

Настройки ленты для ленты приложения и шаблоны ленты сущности. Ленты приложений не включают определения лент на уровне сущности или формы.

В пользовательских лентах приложений часто имеются опубликованные зависимости от веб-ресурсов. Веб-ресурсы используются для определения значков кнопок ленты и функций JavaScript для управления отображением элементов ленты или действиями, выполняемыми при использовании определенного элемента управления ленты. Зависимости создаются только тогда, когда в определениях ленты используется директива $webresource: для привязки веб-ресурса к ленте. Дополнительные сведения: Директива $webresource

Шаблон статьи (KBArticleTemplate)

Шаблон, содержащий стандартные атрибуты статьи. Между шаблоном статьи и сущностью KbArticle всегда существует внутренняя зависимость.

Роль подключения (ConnectionRole)

Роль, описывающая отношение между двумя записями. Каждая роль подключения определяет, какие типы записей сущностей могут быть связаны с помощью роли подключения. Это создает опубликованную зависимость между ролью подключения и сущностью.

Шаблон контракта (ContractTemplate)

Шаблон, содержащий стандартные атрибуты контракта. Между шаблоном контракта и сущностью контракта всегда существует внутренняя зависимость.

Панель мониторинга или форма сущности (SystemForm)

Записи сущностей системной формы используются для определения панелей мониторинга и форм сущностей. Когда SystemForm используется как форма сущности, существует внутренняя зависимость от сущности. Когда SystemForm используется в качестве панели мониторинга, внутренние зависимости отсутствуют. И формы сущностей, и панели мониторинга обычно имеют опубликованные зависимости, относящиеся к их содержимому. Форма сущности может иметь поля подстановки, которые зависят от отношения сущности. Как панели мониторинга, так и формы сущностей могут содержать диаграммы или вложенные сетки, которые будут создавать опубликованную зависимость от представления, которое затем будет иметь внутреннюю зависимость от сущности. Опубликованная зависимость от веб-ресурсов может быть создана из-за содержимого, отображаемого на панели мониторинга или в форме, или когда форма содержит библиотеки JavaScript. Формы сущностей имеют опубликованные зависимости от любых атрибутов, которые отображаются в виде полей в форме.

Шаблон сообщения электронной почты (EmailTemplate)

Шаблон, содержащий стандартные атрибуты сообщения электронной почты. Шаблон сообщений электронной почты обычно включает в себя поля, которые вставляют данные из указанных атрибутов сущности. Шаблон сообщений электронной почты может быть связан с конкретной сущностью при его создании, поэтому может существовать внутренняя зависимость от сущности. Глобальный шаблон сообщений электронной почты не связан с конкретной сущностью, но он может иметь опубликованные зависимости от атрибутов сущности, используемых для предоставления данных. Процесс (workflow) часто настраивается для отправки электронного письма с использованием шаблона сообщений электронной почты, создавая опубликованную зависимость с рабочим процессом.

Сущность (Entity)

Основная структура, используемая для моделирования и управления данными в Dataverse. Диаграммы, формы, отношения сущностей, представления и атрибуты, связанные с сущностью, удаляются автоматически при удалении сущности из-за внутренних зависимостей между ними. Сущности часто имеют опубликованные зависимости с процессами, панелями мониторинга и шаблонами сообщений электронной почты.

Профиль безопасности полей (FieldSecurityProfile)

Профиль, который определяет уровень доступа к защищенным атрибутам.

Шаблон слияния почты (MailMergeTemplate)

Шаблон, содержащий стандартные атрибуты документа слияния почты. У шаблона слияния почты есть опубликованная зависимость от сущности, с которой он связан.

Набор параметров (OptionSet)

Набор параметров определяет набор параметров. Атрибут списка выбора использует набор параметров для определения предоставляемых параметров. Несколько атрибутов списка выбора могут использовать глобальный набор параметров, чтобы предоставляемые ими параметры всегда были одинаковыми и могли храниться в одном месте. Опубликованная зависимость возникает, когда атрибут списка выбора ссылается на глобальный набор параметров. Вы не можете удалить глобальный набор параметров, который используется атрибутом списка выбора.

Сборка подключаемого модуля (PluginAssembly)

Сборка, содержащая один или несколько типов подключаемых модулей. Подключаемые модули регистрируются для событий, которые обычно связаны с сущностью. Это создает опубликованную зависимость.

Процесс (Workflow)

Задайте логические правила, определяющие необходимые действия для автоматизации конкретных бизнес-процессов, заданий или наборов действий. Процессы предоставляют широкий спектр действий, которые создают опубликованные зависимости от любого другого компонента решения, на который ссылается процесс. У каждого процесса также есть опубликованная зависимость от сущности, с которой он связан.

Отчет (Report)

Сводные данные в легкочитаемом формате. В отчете опубликованы зависимости от любых данных сущностей или атрибутов, включенных в отчет. Каждый отчет также должен быть связан с категорией отчета, создавая внутреннюю зависимость от компонента решения под названием "Категория, связанная с отчетом" (ReportCategory). Отчеты могут быть настроены как подчиненные отчеты, создавая опубликованную зависимость с родительским отчетом.

Шаг обработки сообщения SDK (SDKMessageProcessingStep)

Стадия конвейерной обработки, на которой выполняется запуск подключаемого модуля.

Роль безопасности (Role)

Группирование прав безопасности. Пользователям назначаются роли, которые дают им право на доступ к системе Dataverse. Формы сущностей могут быть связаны с конкретными ролями безопасности, чтобы контролировать, кто может просматривать форму. Это создает опубликованную зависимость между ролью безопасности и формой.

Заметка

В решение могут быть добавлены только роли безопасности из бизнес-подразделения организации. Только пользователь с доступом для чтения к этим ролям безопасности может добавить их в решение.

Конечная точка службы (ServiceEndpoint)

Конечная точка сервиса, к которой можно обратиться.

Карта сайта (SiteMap)

Данные XML, используемые для управления областью навигации приложения. Карта сайта может быть связана для отображения веб-ресурса HTML, или значок на карте сайта может использовать веб-ресурс изображения. Когда директива $webresource: используется для установления этих ассоциаций, создается опубликованная зависимость. Дополнительные сведения: Директива $webresource

Веб-ресурс (WebResource)

Данные, эквивалентные файлам, используемые в веб-разработке. Веб-ресурсы обеспечивают компоненты на стороне клиента, которые используются для создания настраиваемых элементов интерфейса пользователя. Веб-ресурсы могут иметь опубликованные зависимости с формами сущностей, лентами и картой сайта. Когда директива $webresource: используется для установления этих ассоциаций в ленте или SiteMap, создается опубликованная зависимость. Дополнительные сведения см. в разделе Директива $webresource.

Заметка

Веб-ресурсы могут зависеть от других веб-ресурсов на основе относительных ссылок. Например, веб-ресурс HTML может использовать CSS или скрипт веб-ресурса. Веб-ресурс Silverlight, отображаемый вне формы сущности или диаграммы, должен иметь веб-ресурс HTML для его размещения. Эти зависимости не отслеживаются как зависимости решения.

См. также

Основные понятия решения
Удаление зависимостей
Стратегия среды
Работа с решениями с помощью интерфейсов SDK API
Справочник по сущности Solution
Справочник по сущности SolutionComponent