Базовые скрипты#

001-script-fix-global-policy-rule-focus-type.xml#

Тип#

ExecuteScript - скрипт выполнения

Описание#

Скрипт для исправления типа фокуса в глобальных правилах политики (Global Policy Rules) системной конфигурации.

Назначение#

Скрипт находит все глобальные правила политики в системной конфигурации, у которых:

  1. FocusSelector.Type имеет локальное имя ObjectType (локальная часть равна ObjectType.COMPLEX_TYPE.getLocalPart())

  2. Пространство имен URI для типа фокуса пустое (basic.isEmpty(it.getFocusSelector().getType()?.getNamespaceURI()))

Для таких правил скрипт устанавливает корректное значение типа фокуса в ObjectType.COMPLEX_TYPE.

Технические детали#

Используемые классы и импорты:#

  • ModelExecuteOptions - опции выполнения модели

  • ItemPath - путь к элементам Prism

  • MiscUtil - утилиты

  • GlobalPolicyRuleType - тип глобального правила политики

  • ObjectSelectorType - тип селектора объектов

  • ObjectType - тип объекта

  • SystemConfigurationType - тип системной конфигурации

  • SystemObjectsType - системные объекты

Константы:#

  • SYS_CONF_OID = SystemObjectsType.SYSTEM_CONFIGURATION.value() - OID системной конфигурации

Алгоритм работы:#

  1. Получает системную конфигурацию из репозитория

  2. Создает delta-объект для модификации системной конфигурации

  3. Получает список всех глобальных правил политики

  4. Фильтрует правила по условиям:

    • Тип фокуса имеет локальное имя ObjectType

    • Пространство имен URI пустое

  5. Для каждого подходящего правила создает модификацию, устанавливая корректное значение типа

  6. Если есть изменения, выполняет их через midpoint.executeChanges() с опцией raw()

XML-структура:#

<s:executeScript>
    <s:pipeline>
        <execute>
            <script>
                <code>
                    <!-- Groovy код -->
                </code>
            </script>
            <forWholeInput>true</forWholeInput>
        </execute>
    </s:pipeline>
</s:executeScript>

Режим выполнения#

  • forWholeInput="true" - скрипт выполняется для всего входного набора данных как единое целое