Sun IdM Extended Attribute

Atributy, které má Sun Identity Manager (dále IdM) uloženy ve své repository je možné rozšířit o atributy vlastní (Extended Attribute). Jednou z možností, jak to provést je použitím IDM pluginu v NetBeans IDE. Postup je následující: Pravý klik na Custom Identitity Manager Object -> IdM -> Download object. V kategorii Common Configuration Object Types vybereme IdM Schema Configurator.

Chceme-li přidat např. atribut „isBoss“, vložíme do tagu <IDMAttributeConfigurations> následující řádek:

<IDMAttributeConfiguration name='isBoss' description='isBoss flag' syntax='BOOLEAN'/>

Dále do tagu <IDMObjectClassConfiguration name=’User‘ extends=’Principal‘ description=’User description‘> který je podelementem tagu <IDMObjectClassConfigurations> vložíme řádek:

<IDMObjectClassAttributeConfiguration name='isBoss' queryable='true' summary='true'/>

Po uložení změn, provedeme upload souboru do IdM (pravý klik v souboru -> IdM -> Upload Object) a restartujeme aplikační server. Po opětovném načtení tohoto souboru bychom měli v atributech najít „náš“ atribut „isBoss“.

Nyní je možné nastavit uživateli (uživatelům) tento atribut. To je možné např. pomocí následujícího workflow.

<Activity name="fillValue">
	<Action id='0' application='com.waveset.session.WorkflowServices'>
                    <Argument name='op' value='checkoutView'/>
                    <Argument name='id' value='$(accountId)'/>
                    <Argument name='type' value='User'/>
                    <Return from='view' to='view'/>
            </Action>
            <Action name="setup">
                    <set name='view.accounts[Lighthouse].isBoss'>
                        <s>true</s>
                    </set>
            </Action>
            <Action id='2' application='com.waveset.session.WorkflowServices'>
 	      <Argument name='op' value='checkinView'/>
                  <Argument name='view' value='$(view)'/>
             </Action>
             <Transition to='end'/>
             <WorkflowEditor x='122' y='22'/>
</Activity>

Protože jsme u tohoto atributu nastavili parametr „queryable“ na true, je možné podle něj vyhledávat. Následující ukázka je část pravidla (rule), které vyhledá všechny uživatele, které mají nastavený atribut „isBoss“ na true a uloží je do proměnné „users“.

<defvar name="users">
    <invoke name='getUsers' class='com.waveset.ui.FormUtil'>
        <new class='com.waveset.session.InternalSession'/>
            <map>
                <s>conditions</s>
                <list>
                     <new class='com.waveset.object.AttributeCondition'>
                         <s>isBoss</s>
                         <s>equals</s>
                         <s>true</s>
                     </new>
                 </list>
             </map>
     </invoke>
</defvar>