Изменчивые (volatile) атрибуты#

Изменчивыми атрибутами являются те, которые могут изменяться на ресурсе без инициирования (или даже осведомленности о) этого конкретного изменения со стороны IDM.

Типичные случаи#

Существует несколько типичных случаев изменчивых атрибутов. (Некоторые из них пересекаются.)

  1. Различные виды значений по умолчанию могут быть установлены при создании объекта. Примером может служить адрес электронной почты Microsoft Exchange, который может получить значение по умолчанию на основе политик, установленных администратором Exchange.

  2. Атрибут может неожиданно измениться при его изменении IDM.

    Например, когда SMTP:x@y.z добавляется в список адресов Exchange, бывший основной псевдоним электронной почты (помеченный префиксом SMTP:) автоматически понижается до вторичного псевдонима (помеченного префиксом smtp:). После внесения изменений от IDM происходит скрытая обработка на стороне ресурса.

  3. Между атрибутами могут существовать зависимости, например, атрибут LDAP uid может измениться, если изменится DN.

  4. Могут существовать зависимости между атрибутами связанных объектов. Например, предположим, что роль имеет проекцию на LDAP OU и группу LDAP, находящуюся в этой OU. Когда роль переименовывается, изменяется отличительное имя LDAP OU. Однако это также неявно изменяет DN группы.

Варианты конфигурации#

Настройки уровня атрибута#

Изменчивость атрибута указывается с использованием элемента volatility в определении атрибута.

Здесь есть два случая:

  1. Атрибут, о котором идет речь, является нестабильным. Это указано как зависимость входящая. В настоящее время мы можем указать только операцию, при которой возникает эта зависимость: либо add, либо modify, либо обе. Когда операция не указана, предполагается как add, так и modify.

    (Позже будет возможно предоставить конкретные атрибуты, от которых зависит этот атрибут.)

    Пример:

    Атрибут uid зависит от неопределенных во время операций add и modify.

    <objectType> 
        <kind>...</kind>
        <intent>...</intent>
        
        <attribute>
            <ref>ri:uid</ref>
            
            <volatility>
                <incoming>
                    <operation>add</operation>
                    <operation>modify</operation>
                </incoming>
            </volatility>
        </attribute>
    </objectType>
    
  2. Атрибут, о котором идет речь, является источником волатильности для других (волатильных) атрибутов, то есть другие атрибуты зависят от него. Это указано как исходная зависимость. В настоящее время мы указываем здесь только операцию, и поддерживается только операция modify.

    (Позже будет возможно предоставить конкретные атрибуты, зависящие от этого.)

    Пример:

    Изменение атрибута dn может вызвать изменения в других атрибутах

          <objectType>
                <kind>...</kind>
                <intent>...</intent>
    
                <attribute>
                    <ref>ri:dn</ref>
    
                    <volatility>
                        <outgoing>
                            <operation>modify</operation>
                        </outgoing>
                    </volatility>
                </attribute>
            </objectType>
    

    Обратите внимание, что это замена свойства атрибута volatilityTrigger, которое теперь устарело.

Настройки уровня объекта#

Свойство volatility типа объекта#

В настоящее время настройки уровня атрибута могут не всегда быть достаточными для обеспечения правильной обработки объектов с изменчивыми атрибутами.

Экспериментальное свойство volatility уровня объекта влияет на обработку следующим образом:

  1. Если установлено значение unpredictable, IDM считывает текущее состояние объекта после любой операции создания или изменения. Это должно помочь, если изменчивость на уровне атрибута недостаточна. (Это следует использовать в дополнение к нему.)

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

Свойство dataBinding в конфигурации зависимости#

Например, приведенная ниже конфигурация указывает, что entitlement/group зависит от entitlement/org (смотрите случай #4 среди типичных случаев). Если изменяется entitlement/org, необходимо повторно загрузить entitlement/group, так как существует потенциальное изменение непосредственно на ресурсе.

Атрибуты в entitlement/group зависят от тех, которые находятся в entitlement/org.

<objectType>
    <kind>entitlement</kind>
    <intent>group</intent>

    <dependency>
        <kind>entitlement</kind>
        <intent>org</intent>
        <strictness>strict</strictness>
        <dataBinding>some</dataBinding>
    </dependency>
</objectType>

Ограничения#

Изменчивые атрибуты не должны использоваться ни с какими смоделированными функциями (например, с моделированной активацией), ни с ассоциациями.