Автоматическая эскалация этапов сертификационной кампании#

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

Эскалация настраивается путем добавления одного или нескольких блоков timedActions в элемент stageDefinition определения сертификационной кампании.

Блок timedActions может иметь следующие элементы и значеничя:

  1. number — порядковый номер уровня эскалации. Используется для перехода между уровнями эскалации.

  2. name — название, используемое для данного блока.

  3. displayName — название, отображаемое в UI, для данного блока.

  4. time — время выполнения действия. Имеет следующие элементы:

    1. value — значение, определяющее промежуток времени. Задается в формате ISO 8601. Положительные значения означают промежуток времени начиная с создания элемента. Отрицательные значения означают промежуток времени до наступления «дедлайна» (конца длительности этапа сертификации).

  5. actions — тип действия, которое нужно выполнить. Возможны следующие значения:

    1. complete — закрывает элемент с указанным результатом. Имеет дополнительные параметры:

      1. outcome — результат, с которым закрывается элемент (accept, revoke и т.п.).

      2. notifyBeforeAction — промежуток времени до выполнения действия, за который будет отправлено стандартное оповещение. Указывается в формате ISO 8601.

    2. escalate — эскалирует элемент, добавляя или заменяя согласующих. Имеет следующие элементы:

      1. approverRef — oid конкретного пользователя, на которого эскалируется элемент.

      2. approverExpression — выражение, определяющее согласующих, на которых эскалируется элемент.

      3. outcomeIfNoApprovers — решение по умолчанию, которое принимается по элементу, если не обнаружено ни одного согласующего, подходящего по заданным критериям.

      4. delegationMethod — метод эскалации. По умолчанию replaceAssignees. Возможны следующие значения:

        • replaceAssignees — заменяет всех текущих согласующих на указанных в блоке.

        • addAssignees — добавляет указанных в блоке согласующих к уже назначенным (текущим) согласующим.

  6. escalationLevelFrom — число, с которым сравнивается текущий уровень эскалации. Если текущий уровень эскалации больше или равен указанному числу, то данный блок timedActions будет применен, иначе он будет пропущен.

  7. escalationLevelTo — число, с которым сравнивается текущий уровень эскалации. Если текущий уровень эскалации меньше указанного числа, то данный блок timedActions будет применен, иначе он будет пропущен.

Например:

<accessCertificationDefinition
        xmlns='http://midpoint.evolveum.com/xml/ns/public/common/common-3'
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <name>All user assignments</name>
    <description>Certifies all users' assignments. Everything is certified by the administrator.</description>
    <handlerUri>http://midpoint.evolveum.com/xml/ns/public/certification/handlers-3#direct-assignment</handlerUri>
    <scopeDefinition xsi:type="AccessCertificationAssignmentReviewScopeType">
        <objectType>UserType</objectType>
    </scopeDefinition>
    <ownerRef oid="00000000-0000-0000-0000-000000000002" type="UserType"><!-- administrator --></ownerRef>
    <remediationDefinition>
        <style>automated</style>
    </remediationDefinition>
    <stageDefinition>
        <number>1</number>
        <name>Ревью администратора</name>
        <description>На этом этапе администратор согласовывает все назначения всех учетных карточек.</description>
        <duration>P14D</duration>   <!-- 14 дней -->
        <notifyBeforeDeadline>PT48H</notifyBeforeDeadline> <!-- 48 часов -->
        <notifyBeforeDeadline>PT12H</notifyBeforeDeadline> <!-- 12 часов -->
        <notifyOnlyWhenNoDecision>true</notifyOnlyWhenNoDecision>  <!-- опция по умолчанию -->
        <reviewerSpecification>
            <defaultReviewerRef oid="00000000-0000-0000-0000-000000000002" type="UserType" />   <!-- administrator -->
        </reviewerSpecification>
        <timedActions>
            <time>
                <value>P7D</value> <!-- Спустя 7 дней после начала этапа Ревью администратора происходит эта эскалация -->
            </time>
            <actions>
                <escalate>
                    <approverRef oid="018fe48d-4952-4f4b-8c0a-b8670ec1748e" type="UserType" />  <!-- Пользователь 1 (не administrator) -->
                    <delegationMethod>addAssignees</delegationMethod>
                    <escalationLevelName>Level1</escalationLevelName>
                </escalate>
            </actions>
        </timedActions>
        <timedActions>
            <time>
                <value>P10D</value> <!-- Спустя 10 дней после начала этапа Ревью администратора (то есть через 3 дня после первой эскалации) происходит эта эскалация -->
            </time>
            <actions>
                <escalate>
                    <approverRef oid="42b48a07-e167-4fdc-baca-8eaa13d4eaad" type="UserType" />  <!-- Пользователь 2 (не 1, не administrator) -->
                    <delegationMethod>replaceAssignees</delegationMethod>
                    <escalationLevelName>Level2</escalationLevelName>
                </escalate>
            </actions>
            <escalationLevelFrom>1</escalationLevelFrom>
            <escalationLevelTo>1</escalationLevelTo>
        </timedActions>
    </stageDefinition>
</accessCertificationDefinition>