6.4 Identity Managerから受け取るパラメータの使用

メタディレクトリエンジンは、ポリシーのスタイルシートに、次のスタイルシートパラメータを渡します。

表 6-1 スタイルシートのパラメータ

パラメータ

説明

srcQueryProcessor

XdsQueryProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがソースデータストアに対し、より多くの情報を照会できるようになります。

destQueryProcessor

XdsQueryProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがターゲットデータストアに対し、より多くの情報を照会できるようになります。

srcCommandProcessor

XdsCommandProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがイベントソースに対し、コマンドをライトバックできるようになります。

destCommandProcessor

XdsCommandProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがコマンドを発行して、ターゲットデータストアにコマンドを直接送信できるようになります。

dnConverter

XdsCommandProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートが識別ボールトオブジェクトのDNをあるフォーマットから別のフォーマットに変換できるようになります。詳細については、「Interface DNCoverter」を参照してください。

fromNds

ソースデータストアが識別ボールトである場合には「True」、接続システムである場合には「False」であるブール値です。

iManagerまたはDesignerで作成した新しいスタイルシートには、これらのパラメータの宣言が含まれるスタイルシートが事前入力されています。

スキーママッピングポリシー、入力変換ポリシー、および出力変換ポリシーでクエリやコマンドパラメータを使用する場合、次の制限が適用されます。

クエリプロセッサ

クエリプロセッサの使用は、拡張関数のNovell® XSLTを実装するかどうかによって決まります。クエリを実行するには、XdsQueryProcessorインタフェースのネームスペースを宣言する必要があります。この作業は、次の内容をスタイルシートの<xsl:stylesheet>または<xsl:transform>要素に追加することで行います。

xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor"

iManagerまたはDesignerで作成したスタイルシートには、このネームスペース宣言が事前入力されています。クエリプロセッサについての詳細は、「Class XdsQueryProcessor」を参照してください。

次の例では、クエリプロセッサの1つを使用しています(長い行は折り返されているため、<で始まっていません)。このスタイルシートを表示するには、Query_Processors.xslを参照してください。

<!-- Query object name queries NDS for the passed object name -->

<xsl:template name="query-object-name">
   <xsl:param name="object-name"/>

<!-- build an xds query as a result tree fragment -->
   <xsl:variable name="query">
            <query>
               <search-class class-name="{ancestor-or-self:
                     :add/@class-name}"/>

<!-- NOTE: depends on CN being the naming attribute -->
               <search-attr attr-name="CN">
                   <value><xsl:value-of select="$object-name"/
                        ></value>
               </search-attr>
<!-- put an empty read attribute in so that we don’t get -->
<!-- the whole object back                               -->
               <read-attr/>
            </query>
   </xsl:variable>

<!-- query NDS -->
<xsl:variable name="result" select="query:query($destQuery
     Processor,$query)"/>

<!-- return an empty or non-empty result tree fragment -->
<!-- depending on result of query                      -->
   <xsl:value-of select="$result//instance"/>
</xsl:template>

他の例です。

<?xml version="1.0"?>
<xsl:transform 
       		version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:cmd="http://www.novell.com/nxsl/java
       com.novell.nds.dirxml.driver.XdsCommandProcessor"
>
<xsl:param name="srcCommandProcessor"/>

<xsl:template match="node()|@*">
     <xsl:copy>
          		<xsl:apply-templates select="@*|node()"/>
     	</xsl:copy>
</xsl:template>

<xsl:template match="add">
     	<xsl:copy>
          		<xsl:apply-templates select="@*|node()"/>
     	</xsl:copy>

	<!-- on a user add, add Engineering department to the source object -->
	<xsl:variable name="dummy">
     		<modify class-name="{@class-name} "dest-dn="{@src-dn}">
          			<xsl-copy-of select="association"/>
          			<modify-attr attr-name="OU">
               			<add-value>
                    					<value type="string">Engineering</value>
                				</add-value>
          			</modify-attr>
		</modify>
	</xsl:variable>
     	<xsl:variable name="dummy2"
         select="cmd:execute($srcCommandProcessor, $dummy)"/>
</xsl:template>

</xsl:transform>