Базовые скрипты#
001-script-fix-global-policy-rule-focus-type.xml#
Тип#
ExecuteScript - скрипт выполнения
Описание#
Скрипт для исправления типа фокуса в глобальных правилах политики (Global Policy Rules) системной конфигурации.
Назначение#
Скрипт находит все глобальные правила политики в системной конфигурации, у которых:
FocusSelector.Typeимеет локальное имяObjectType(локальная часть равнаObjectType.COMPLEX_TYPE.getLocalPart())Пространство имен URI для типа фокуса пустое (
basic.isEmpty(it.getFocusSelector().getType()?.getNamespaceURI()))
Для таких правил скрипт устанавливает корректное значение типа фокуса в ObjectType.COMPLEX_TYPE.
Технические детали#
Используемые классы и импорты:#
ModelExecuteOptions- опции выполнения моделиItemPath- путь к элементам PrismMiscUtil- утилитыGlobalPolicyRuleType- тип глобального правила политикиObjectSelectorType- тип селектора объектовObjectType- тип объектаSystemConfigurationType- тип системной конфигурацииSystemObjectsType- системные объекты
Константы:#
SYS_CONF_OID = SystemObjectsType.SYSTEM_CONFIGURATION.value()- OID системной конфигурации
Алгоритм работы:#
Получает системную конфигурацию из репозитория
Создает delta-объект для модификации системной конфигурации
Получает список всех глобальных правил политики
Фильтрует правила по условиям:
Тип фокуса имеет локальное имя
ObjectTypeПространство имен URI пустое
Для каждого подходящего правила создает модификацию, устанавливая корректное значение типа
Если есть изменения, выполняет их через
midpoint.executeChanges()с опциейraw()
XML-структура:#
<s:executeScript>
<s:pipeline>
<execute>
<script>
<code>
<!-- Groovy код -->
</code>
</script>
<forWholeInput>true</forWholeInput>
</execute>
</s:pipeline>
</s:executeScript>
Режим выполнения#
forWholeInput="true"- скрипт выполняется для всего входного набора данных как единое целое