Споделяне чрез


Общ преглед на премахването на зависимости

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

Бележка

В тази статия изтриване означава, че компонентът е напълно премахнат от системата.

В тази статия обсъждаме как да се справим с тези зависимости и стратегиите, които можете да използвате, за да премахнете зависимостите, които вече не ви трябват.

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

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

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

Тези компоненти са представени от един слой в активното решение. Всяка операция за изтриване върху такъв компонент води до пълно отстраняване на компонента.

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

Изтриването на управляваните компоненти зависи от множество фактори: броя на слоевете на решението, относителната позиция на деинсталирания слой и издателите на компоненти. Например, когато даден компонент бъде изтрит, помислете за следните сценарии и какво ще бъде очакваното поведение, когато деинсталирате различните слоеве.

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

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

Сценарий 1: Деинсталирайте един слой на решение

Деинсталирайте с един слой.

Деинсталирането на решение 1 предизвиква изтриване на компонент, защото това е единственият слой за компонента.

Сценарий 2: Деинсталирайте слоевете на решения от различни издатели

Деинсталиране с два слоя - Различен издател.

  • Деинсталирането на решение 2 не причинява изтриване на компонент. Само този слой ще бъде премахнат.
  • Деинсталирането на решение 1 предизвиква изтриване на компонент, защото действието се случва в основния слой. Всъщност Решение 1 не може да се деинсталира в този сценарий, защото решение от друг издател разширява компонента.

Сценарий 3: Деинсталирайте на множество слоевете на решения от различни издатели

Деинсталиране с няколко слоя - Различен издател.

  • Деинсталирането на решение 3 не причинява изтриване на компонент. Само този слой ще бъде премахнат.
  • Деинсталирането на решение 2 не причинява изтриване на компонент. Само този слой ще бъде премахнат.
  • Деинсталирането на Решение 1 не причинява изтриване на компонент, тъй като в този случай има друго решение от същия издател (Издател A = Издател C)). Платформата премахва слоя от Решение 1 и го замества със слоя от Решение 3.

Сценарий 4: Деинсталирайте слоевете на решение в неуправляема персонализация

Деинсталиране с два слоя - Неуправлявано персонализиране.

  • Деинсталирането на активния (неуправляван) слой не води до изтриване на компонент. Само този слой ще бъде премахнат. Обърнете внимание, че не можете да деинсталирате активното решение, но можете да премахнете компоненти, като използвате функцията Премахнете активното персонализиране.
  • Деинсталирането на решение 1 причинява изтриване на компонент. Действието се случва в основния слой. За разлика от сценарий 2 можете да деинсталирате Решение 1. Активното решение не се счита за разширение и двата слоя ще бъдат премахнати.

Показване на страницата за зависимости

Командата Покажи зависимостите изброява зависимостите за избраното решение или компонент на решение. Може да се извика от:

  • Изберете Показване на зависимости на страницата на решението.
  • Избиране на Разширено>показване на зависимости в рамките на решение, когато е избран компонент на решение.
  • Опит за деинсталиране на решение, което ще накара платформата да открие, че зависимости съществуват.

От страницата "Зависимости" можете да отворите, премахнете или изтриете компонента. Повече информация: Преглед на зависимости за компонент

Диагностициране на зависимости

Нека разгледаме следния сценарий. Организацията по-долу има две решения: Решение - Работен поток и Решение - Потребителски обект.

Списък с решения с две решения.

Собственикът на организацията реши, че вече не изисква Решение - Потребителски обект, опита се да го изтрие и получи следната страница:

Подробности за зависимостта, след като се опитате да изтриете решение.

Без да навлизаме в подробности, можем да заключим, че деинсталирането на решението се опитва да изтрие същност с име Персонализиран обект и три полета - Персонализиран обект, Име и Числово поле - и всичките четири компонента имат зависимости.

Бележка

Деинсталирането на решението потенциално може да изтрие повече компоненти, но тъй като те нямат зависимости, те няма да се появят в списъка.

Следващата стъпка е да проверите връзката Слоеве на решение (най-дясната колона) за всяка зависимост. Това ще ви помогне да решите какво да направите, за да премахнете зависимостта.

Следващата фигура показва подробности за зависимостта между обекта (Персонализиран обект) и процеса (Тестов работен поток).

Подробни данни за зависимост на обект по избор.

Въз основа на показаните данни можете да видите, че зависимият компонент принадлежи на решение, наречено SolutionWorkflow. За да премахнем тази зависимост, можем или:

  • Актуализирайте дефиницията на работния поток в SolutionWorkflow, като премахнете всички препратки към обекта или неговите подкомпоненти. След това актуализирайте или надстройте решението.
  • Деинсталирайте решението SolutionWorkflow.
  • Премахнете работния поток от нова версия на решението SolutionWorkflow и изпълнете Надстройка.

Тъй като всеки един зависим компонент може да предотврати премахването на решението, препоръчваме ви да проверите всички зависимости и да направите всички необходими промени в една операция.

Следващата фигура показва подробности за зависимостта между обекта (Персонализиран обект) и приложение, управлявано от модел (Моето приложение).

Зависимост между обект (персонализиран обект) и приложение (моето приложение).

Въз основа на показаните данни можете да видите, че зависимият компонент принадлежи на решение, наречено Активно. Това показва, че зависимостта е създадена чрез импортиране на неуправлявано решение или чрез неуправлявана персонализация, която се изпълнява чрез съвременния потребителски интерфейс или API.

За да премахнем тази зависимост, можете да:

  • Редактирайте дефиницията на приложението, управлявано от модел, за да премахнете всякакви препратки към обекта или неговите подкомпоненти. Тъй като приложенията, управлявани от модели, поддържат публикуването, трябва да публикувате промените си.
  • Изтрийте приложението, управлявано от модел.

Бележка

Деинсталирането на неуправлявано решение не е опция за премахване на тази зависимост, тъй като неуправляваните решения са само средство за групиране на компоненти.

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

Управляваните зависимости са тези, при които зависимият компонент е асоцииран към завършено решение. За да разрешите този вид зависимост, трябва да действате върху решението, където компонентът е добавен. Това действие може да бъде различно в зависимост от това, което се опитвате да направите.

Ако се опитвате да деинсталирате решение

Следвайте тези стъпки:

  1. В целевата организация инспектирайте връзката Слоеве за решение, за да намерите кое е най-горното решение в списъка на зависимия компонент.
  2. В организацията източник подгответе нова версия на това решение, където решението или не съдържа зависимия компонент, или има актуализирана версия на зависимия компонент, която не съдържа препратки към задължителния компонент. Вашата цел е да премахнете всякакви препратки към задължителните компоненти в новата версия на решението.
  3. Експортирайте новата версия на решението.
  4. В целевата организация надстройте това решение.
  5. Опитайте повторно деинсталирането.

Ако се опитвате да надстроите решение

В този случай трябва да потвърдите, че искате да изтриете необходимия компонент (не забравяйте, че зависимостите се налагат само за компоненти, които се изтриват).

Ако не искате да изтриете компонента, можете да поправите новата версия на решението, като добавите компонента обратно, като направите следното:

  1. В целевата организация деинсталирайте поетапното решение (решението, което завършва с _Upgrade).
  2. В организацията източник добавете задължителните компоненти обратно към решението.
  3. Експортирайте новата версия.
  4. Опитайте повторно надстройката.

Ако изтриването е умишлено, трябва да премахнете зависимостта. Опитайте стъпките, описани в предходния раздел, „Ако се опитвате да деинсталирате решение“.

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

Зависимите компоненти могат да бъдат със слоеве, така че може да се наложи да промените повече от едно решение, за да премахнете напълно зависимостта. Рамката на зависимост само изчислява зависимостите между най-горните слоеве за необходимите и зависими компоненти. Това означава, че трябва да работите по пътя си от върха до дъното на решенията на зависимия компонент.

Обмислете следния сценарий:

Избор на решение за деинсталиране.

Опитвате се да деинсталирате Решение - Потребителски обект, а операцията е блокирана от зависимости.

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

Започвате да диагностицирате зависимостта, като изберете Слоеве за решение на атрибута new_numberfield. Виждате следния екран:

Зависимост между атрибута new_numberfield и работния поток

Тъй като зависимостите се създават само между най-горните слоеве на всеки компонент, първата стъпка е да се справим със зависимостта между атрибута new_numberfield в SolutionCustomEntity и работния поток Тестов работен поток в SolutionWorkflow3.

За да премахнете зависимостта, решавате да деинсталирате SolutionWorkflow3. Правите това, но когато опитвате да деинсталирате решението още веднъж, виждате същата страница със зависимости:

Зависимости, блокиращи деинсталирането на решение - персонализиран обект.

Атрибутът new_numberfield обаче вече не е в списъка, дори и да съществува в повече слоеве.

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

За да премахнете неуправляваните зависимости, трябва да действате директно върху компонентите, а не в решенията, към които принадлежат. Ако например искате да премахнете зависимостите между атрибут и формуляр, трябва да го редактирате в редактор на формуляри и да премахнете атрибута от формуляра. Зависимостта ще бъде премахната, след като изберете Записване и Публикуване.

Бележка

  • Командата Показване на зависимости ви позволява да предприемете действия за преглед, премахване на зависимостта, редактиране на компонента или изтриване на компонента. Повече информация: Преглед на зависимости за компонент
  • Можете също да изтриете зависимия компонент. Това действие изтрива всички зависимости, заедно с компонента.

За да видите зависимостите на компонент, от областта Решения отворете желаното решение, изберете вертикалните елипси до компонента и след това изберете Разширено>показване на зависимости.

Страницата на зависимостите има две отделни части:

  • Зависими компоненти: Списък на компоненти, които зависят от избраното поле. С други думи, тези компоненти ще имат това поле като необходим компонент.
  • Задължителни компоненти: Списък на компонентите, които това поле изисква, за да работи. С други думи, тези компоненти ще имат това поле като задължителен компонент.

Компонентни зависимости.

Вижте също