Удаление зависимостей
Компоненты решения часто зависят от других компонентов решения. Невозможно удалить компонент решения, который имеет зависимости от другого компонента решения. Зависимости — это записи, автоматически создаваемые платформой решений для предотвращения удаления необходимых компонентов, в то время как один или несколько зависимых компонентов по-прежнему содержат ссылки на них. Пример зависимости следующий: допустим, для работы формы требуется поле, то если вы когда-либо попытаетесь выполнить действие, которое приведет к удалению этого поля, форма перестанет работать.
Примечание
В этой статье, удалить означает, что компонент полностью удален из системы.
В этой статье мы обсудим, как обрабатывать эти зависимости, и стратегии, которые вы можете использовать для удаления зависимостей, которые вам больше не нужны.
Зависимости неуправляемых и управляемых компонентов
Во-первых, важно понимать, что зависимости предотвращают только операции, которые удаляют необходимый компонент. Действия, которые могут удалить компонент, различаются в зависимости от того, неуправляемый он или управляемый.
Неуправляемые компоненты
Эти компоненты представлены одним слоем в активном решении. Любая операция Удалить с таким компонентом приводит к его полному удалению.
Управляемые компоненты
Удаление управляемых компонентов зависит от нескольких факторов: количество слоев решения, относительное положение удаляемого слоя и издатели компонентов. Например, при удалении компонента рассмотрите следующие сценарии и ожидаемое поведение при удалении различных слоев.
Примеры сценариев
Следующие примеры сценариев иллюстрируют, что происходит со слоями решений, когда решения удаляются.
Сценарий 1. Удаление одного уровня решения
Удаление решения 1 вызывает удаление компонента, потому что это единственный слой для компонента.
Сценарий 2. Удаление слоев решений от разных издателей
- Удаление решения 2 не вызывает удаления компонентов. Только этот слой будет удален.
- Удаление решения 1 вызывает удаление компонента, потому что это действие выполняется в базовом слое. Фактически, решение 1 не может быть удалено в этом сценарии, потому что решение от другого издателя расширяет компонент.
Сценарий 3. Удаление нескольких слоев решений от разных издателей
- Удаление решения 3 не вызывает удаления компонентов. Только этот слой будет удален.
- Удаление решения 2 не вызывает удаления компонентов. Только этот слой будет удален.
- Удаление решения 1 не вызывает удаления компонента, потому что в этом случае есть другое решение от того же издателя (Издатель A = Издатель C)). Платформа удаляет слой из решения 1 и заменяет его слоем из решения 3.
Сценарий 4. Удаление слоев решений в неуправляемой настройке
- Удаление активного (неуправляемого) слоя не вызывает удаления компонента. Только этот слой будет удален. Обратите внимание, что вы не можете удалить активное решение, но вы можете удалить компоненты с помощью функции Удалить активную настройку.
- Удаление решения 1 вызывает удаления компонентов. Действие происходит в базовом слое. В отличие от сценария 2, решение 1 можно удалить. Активное решение не считается расширением, и оба слоя будут удалены.
Страница сведений о зависимостях
На странице Сведения о зависимостях перечислены зависимости для выбранного решения. Ее можно вызвать:
- Выбрав Показать зависимости на странице решения.
- Попытавшись удалить решение, в результате чего платформа обнаружит, что существуют зависимости.
Страница Сведения о зависимостях имеет следующие столбцы:
- Отображаемое имя: понятное имя необходимого компонента. Каждый компонент может отображать немного разные данные, чтобы упростить идентификацию. На предыдущем рисунке вы можете видеть, что сущность показывает только свое имя, в то время как поле отображает свое имя и имя его родительской сущности.
- Имя/идентификатор: внутреннее имя необходимого компонента.
- Тип: тип требуемого компонента.
- Требуется: понятное имя компонента, которому он требуется (зависимый компонент). Если у зависимого компонента есть страница настройки, его имя становится ссылкой, которая открывает эту страницу.
- Тип зависимого: тип зависимого компонента.
- Слои решений: ссылка, где вы можете увидеть более подробную информацию о компонентах, участвующих в зависимости.
Примечание
Требуемый компонент — это тот, который вы хотите удалить. Зависимый компонент — это тот, который имеет ссылки на требуемый компонент. Чтобы удалить зависимость, вы должны внести изменения, которые затрагивают зависимый компонент, а не требуемый компонент.
Диагностика зависимостей
Давайте рассмотрим следующий сценарий. У организации ниже есть два решения: Решение — рабочий процесс и Решение — пользовательская сущность.
Владелец организации решил, что больше не требуется Решение — пользовательская сущность, попытался удалить его и получил следующую страницу:
Не вдаваясь в подробности, можно сделать вывод, что при удалении решения предпринимается попытка удалить сущность с именем Пользовательская сущность и три поля — Пользовательская сущность, Имя и Числовое поле — и все четыре компонента имеют зависимости.
Примечание
Удаление решения может потенциально удалить больше компонентов, но, поскольку они не имеют зависимостей, они не появятся в списке.
Следующим шагом является проверка ссылки Слои решения (крайний правый столбец) для каждой зависимости. Это поможет принять решение о требуемых действиях для удаления решения.
На следующем рисунке показаны сведения о зависимостях между сущностью (настраиваемая сущность) и процессом (тестовый рабочий процесс).
Основываясь на отображаемых данных, вы можете видеть, что зависимый компонент принадлежит решению с именем SolutionWorkflow. Чтобы удалить эту зависимость, мы можем:
- Обновить определение рабочего процесса в SolutionWorkflow, удалив все ссылки на сущность или его подкомпоненты. Затем Обновить или Обновить решение.
- Удалить решение SolutionWorkflow.
- Удалите рабочий процесс из новой версии решения SolutionWorkflow, затем выполните Обновить.
Поскольку любой один зависимый компонент может помешать удалению решения, мы рекомендуем вам проверить все зависимости и внести все необходимые изменения за одну операцию.
На следующем рисунке показаны сведения о зависимостях между сущностью (настраиваемая сущность) и приложением на основе модели (мое приложение).
Основываясь на отображаемых данных, вы можете видеть, что зависимый компонент принадлежит решению с именем Active. Это указывает на то, что зависимость была создана путем импорта неуправляемого решения или через неуправляемую настройку, выполненной с помощью современного пользовательского интерфейса или API.
Чтобы удалить эту зависимость, вы можете:
- Изменить определение приложения на основе модели, чтобы удалить любую ссылку на сущность или ее подкомпоненты. Поскольку приложения на основе модели поддерживают публикацию, вы должны опубликовать свои изменения.
- Удалить приложение на основе модели.
Примечание
Удаление неуправляемого решения не является вариантом удаления этой зависимости, поскольку неуправляемые решения — это просто средство для группировки компонентов.
Действия по удалению управляемой зависимости
Управляемые зависимости — это те зависимости, в которых зависимый компонент связан с управляемым решением. Чтобы разрешить этот вид зависимости, вы должны выполнить действия с решением, в которое был добавлен компонент. Это действие может отличаться в зависимости от того, что вы пытаетесь сделать.
Если вы пытаетесь удалить решение
Выполните следующие действия:
- В целевой организации проверьте ссылку Слои решения, чтобы найти, что является самым верхним решением в списке зависимых компонентов.
- В исходной организации подготовьте новую версию этого решения, в которой решение либо не содержит зависимого компонента, либо имеет обновленную версию зависимого компонента, которая не содержит ссылок на требуемый компонент. Ваша цель — удалить все ссылки на необходимые компоненты в новой версии решения.
- Экспортируйте новую версию решения.
- В целевой организации Обновите это решение.
- Повторите попытку удаления.
Если вы пытаетесь обновить решение
В этом случае вы должны подтвердить, что хотите удалить требуемый компонент (помните, что зависимости применяются только к компонентам, которые удаляются).
Если вы не хотите удалять компонент, вы можете исправить новую версию решения, добавив компонент обратно, выполнив следующие действия:
- В целевой организации удалите промежуточно сохраненное решение (решение, заканчивающееся на _Upgrade).
- В исходной организации снова добавьте необходимые компоненты в решение.
- Экспортируйте новую версию.
- Повторите попытку обновления.
Если удаление является преднамеренным, вы должны удалить зависимость. Попробуйте выполнить действия, описанные в предыдущем разделе "Если вы пытаетесь удалить решение".
Слои и зависимости
Зависимые компоненты могут быть многоуровневыми, поэтому вам может потребоваться изменить более одного решения, чтобы полностью удалить зависимость. Платформа зависимостей вычисляет зависимости только между самыми верхними слоями для обязательных и зависимых компонентов. Это означает, что вам нужно продвигаться сверху вниз в иерархии решений зависимого компонента.
Рассмотрим следующий сценарий:
Вы пытаетесь удалить Решение — пользовательская сущность, и операция заблокирована зависимостями.
Вы начинаете диагностику зависимости, выбирая Слои решения в атрибуте new_numberfield. Вы видите следующий экран:
Поскольку зависимости создаются только между самыми верхними слоями каждого компонента, первым шагом является устранение зависимости между атрибутом new_numberfield в SolutionCustomEntity и рабочим процессом Тестовый рабочий процесс в SolutionWorkflow3.
Чтобы удалить зависимость, вы решили удалить SolutionWorkflow3. Вы делаете это, но когда вы пытаетесь удалить решение еще раз, вы видите ту же страницу зависимостей:
Однако атрибут new_numberfield больше не отображается, даже если он существовал в нескольких слоях.
Действия по удалению неуправляемой зависимости
Чтобы удалить неуправляемые зависимости, необходимо действовать непосредственно на компоненты, а не на решения, к которым они относятся. Например, если вы хотите удалить зависимости между атрибутом и формой, вы должны отредактировать ее в редакторе форм и удалить атрибут из формы. Зависимость будет удалена после выбора Сохранить и Опубликовать.
Примечание
Также можно удалить зависимый компонент. Это действие удаляет все зависимости вместе с компонентом.
Чтобы увидеть зависимости компонента, найдите его на странице настроек и выберите Показать зависимости.
Страница зависимостей состоит из двух отдельных частей:
- Зависимые компоненты: список компонентов, которые зависят от выбранного поля. Другими словами, эти компоненты будут иметь это поле в качестве обязательного компонента.
- Обязательные компоненты: список компонентов, которые необходимы этому полю для работы. Другими словами, эти компоненты будут иметь это поле в качестве зависимого компонента.
Поле и рабочий процесс
Чтобы удалить зависимости между полями (атрибутами) и рабочими процессами (процессами), найдите рабочий процесс на странице настроек.
При просмотре сведений о рабочем процессе найдите ссылку на компонент, от которого больше не должен зависеть рабочий процесс. В этом примере вы можете увидеть поле Числовое поле, на которое есть ссылка в шаге процесса.
Удалите (или измените) этот шаг, затем сохраните рабочий процесс.
Поле и представление
Чтобы удалить зависимости между полями (атрибутами) и представлениями (сохраненными запросами), найдите представление на странице настроек.
В редакторе полей найдите ссылку на компонент, от которого больше не должно зависеть представление. В этом примере вы видите поле Числовое поле, которое используется как столбец выбора и фильтр.
Удалите оба, сохраните, а затем опубликуйте представление.
Сущность и приложения на основе модели
Чтобы удалить зависимости между сущностями и приложениями на основе моделей (модуль приложения), найдите приложение в списке Приложения современного пользовательского интерфейса.
В конструкторе приложений найдите ссылку на компонент, от которого больше не должно зависеть приложение. В этом примере вы видите сущность Пользовательская сущность в разделе Представление сущностей.
Кроме того, проверьте карту сайта, связанную с приложением, поскольку, скорее всего, вы найдете там ссылки.
Удалите все ссылки, затем сохраните и опубликуйте приложение и карту сайта.
Примечание
После редактирования компоненты можно добавлять в управляемые решения и переносить в другие организации для удаления управляемых зависимостей.
См. также
Основные понятия решения
Слои решений
Отслеживание зависимостей для компонентов решения
Примечание
Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).
Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).
Обратная связь
Отправить и просмотреть отзыв по