Обзор удаления зависимостей

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

Заметка

В этой статье, удалить означает, что компонент полностью удален из системы.

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

Зависимости неуправляемых и управляемых компонентов

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

Неуправляемые компоненты

Эти компоненты представлены одним слоем в активном решении. Любая операция Удалить с таким компонентом приводит к его полному удалению.

Управляемые компоненты

Удаление управляемых компонентов зависит от нескольких факторов: количество слоев решения, относительное положение удаляемого слоя и издатели компонентов. Например, при удалении компонента рассмотрите следующие сценарии и ожидаемое поведение при удалении различных слоев.

Примеры сценариев

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

Сценарий 1. Удаление одного уровня решения

Удаление с одним слоем.

Удаление решения 1 вызывает удаление компонента, потому что это единственный слой для компонента.

Сценарий 2. Удаление слоев решений от разных издателей

Удаление с двумя слоями — другой издатель.

  • Удаление решения 2 не вызывает удаления компонентов. Только этот слой будет удален.
  • Удаление решения 1 вызывает удаление компонента, потому что это действие выполняется в базовом слое. Фактически, решение 1 не может быть удалено в этом сценарии, потому что решение от другого издателя расширяет компонент.

Сценарий 3. Удаление нескольких слоев решений от разных издателей

Удаление с несколькими слоями — другой издатель.

  • Удаление решения 3 не вызывает удаления компонентов. Только этот слой будет удален.
  • Удаление решения 2 не вызывает удаления компонентов. Только этот слой будет удален.
  • Удаление решения 1 не вызывает удаления компонента, потому что в этом случае есть другое решение от того же издателя (Издатель A = Издатель C)). Платформа удаляет слой из решения 1 и заменяет его слоем из решения 3.

Сценарий 4. Удаление слоев решений в неуправляемой настройке

Удаление с двумя слоями — неуправляемая настройка.

  • Удаление активного (неуправляемого) слоя не вызывает удаления компонента. Только этот слой будет удален. Обратите внимание, что вы не можете удалить активное решение, но вы можете удалить компоненты с помощью функции Удалить активную настройку.
  • Удаление решения 1 вызывает удаления компонентов. Действие происходит в базовом слое. В отличие от сценария 2, решение 1 можно удалить. Активное решение не считается расширением, и оба слоя будут удалены.

См. страницу о зависимостях

Команда Показать зависимости перечисляет зависимости для выбранного решения или компонента решения. Ее можно вызвать:

  • Выбор пункта Показать зависимости на странице решения.
  • Выбор пункта Дополнительно>Показать зависимости в решении, когда выбран компонент решения.
  • Попытавшись удалить решение, в результате чего платформа обнаружит, что существуют зависимости.

На странице «Зависимости» вы можете открыть или удалить компонент. Больше информации: Просмотр зависимостей для компонента

Диагностика зависимостей

Давайте рассмотрим следующий сценарий. У организации ниже есть два решения: Решение — рабочий процесс и Решение — пользовательская сущность.

Список решений с двумя решениями.

Владелец организации решил, что больше не требуется Решение — пользовательская сущность, попытался удалить его и получил следующую страницу:

Сведения о зависимостях после попытки удаления решения.

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

Заметка

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

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

На следующем рисунке показаны сведения о зависимостях между сущностью (настраиваемая сущность) и процессом (тестовый рабочий процесс).

Детали зависимостей пользовательский сущности.

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

  • Обновить определение рабочего процесса в SolutionWorkflow, удалив все ссылки на сущность или его подкомпоненты. Затем Обновить или Обновить решение.
  • Удалить решение SolutionWorkflow.
  • Удалите рабочий процесс из новой версии решения SolutionWorkflow, затем выполните Обновить.

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

На следующем рисунке показаны сведения о зависимостях между сущностью (настраиваемая сущность) и приложением на основе модели (мое приложение).

Зависимость между сущностью (настраиваемая сущность) и приложением (мое приложение).

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

Чтобы удалить эту зависимость, вы можете:

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

Заметка

Удаление неуправляемого решения не является вариантом удаления этой зависимости, поскольку неуправляемые решения — это просто средство для группировки компонентов.

Действия по удалению управляемой зависимости

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

Если вы пытаетесь удалить решение

Выполните следующие действия:

  1. В целевой организации проверьте ссылку Слои решения, чтобы найти, что является самым верхним решением в списке зависимых компонентов.
  2. В исходной организации подготовьте новую версию этого решения, в которой решение либо не содержит зависимого компонента, либо имеет обновленную версию зависимого компонента, которая не содержит ссылок на требуемый компонент. Ваша цель — удалить все ссылки на необходимые компоненты в новой версии решения.
  3. Экспортируйте новую версию решения.
  4. В целевой организации Обновите это решение.
  5. Повторите попытку удаления.

Если вы пытаетесь обновить решение

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

Если вы не хотите удалять компонент, вы можете исправить новую версию решения, добавив компонент обратно, выполнив следующие действия:

  1. В целевой организации удалите промежуточно сохраненное решение (решение, заканчивающееся на _Upgrade).
  2. В исходной организации снова добавьте необходимые компоненты в решение.
  3. Экспортируйте новую версию.
  4. Повторите попытку обновления.

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

Слои и зависимости

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

Рассмотрим следующий сценарий:

Выбор решения для удаления.

Вы пытаетесь удалить Решение — пользовательская сущность, и операция заблокирована зависимостями.

Зависимости, блокирующие удаление решения.

Вы начинаете диагностику зависимости, выбирая Слои решения в атрибуте new_numberfield. Вы видите следующий экран:

Зависимость между атрибутом new_numberfield и рабочим процессом

Поскольку зависимости создаются только между самыми верхними слоями каждого компонента, первым шагом является устранение зависимости между атрибутом new_numberfield в SolutionCustomEntity и рабочим процессом Тестовый рабочий процесс в SolutionWorkflow3.

Чтобы удалить зависимость, вы решили удалить SolutionWorkflow3. Вы делаете это, но когда вы пытаетесь удалить решение еще раз, вы видите ту же страницу зависимостей:

Зависимости, блокирующие удаление решения

Однако атрибут new_numberfield больше не отображается, даже если он существовал в нескольких слоях.

Действия по удалению неуправляемой зависимости

Чтобы удалить неуправляемые зависимости, необходимо действовать непосредственно на компоненты, а не на решения, к которым они относятся. Например, если вы хотите удалить зависимости между атрибутом и формой, вы должны отредактировать ее в редакторе форм и удалить атрибут из формы. Зависимость будет удалена после выбора Сохранить и Опубликовать.

Заметка

  • Команда Показать зависимости позволяет выполнять действия по просмотру, удалению зависимости, редактированию или удалению компонента. Больше информации: Просмотр зависимостей для компонента
  • Также можно удалить зависимый компонент. Это действие удаляет все зависимости вместе с компонентом.

Чтобы просмотреть зависимости компонента, в области Решения откройте нужное решение, выберите вертикальное многоточие рядом с компонентом, а затем выберите Дополнительно>Показать зависимости.

Страница зависимостей состоит из двух отдельных частей:

  • Зависимые компоненты: список компонентов, которые зависят от выбранного поля. Другими словами, эти компоненты будут иметь это поле в качестве обязательного компонента.
  • Обязательные компоненты: список компонентов, которые необходимы этому полю для работы. Другими словами, эти компоненты будут иметь это поле в качестве зависимого компонента.

Зависимости компонента.

См. также