階層属性データをOracle Identity Managerでシードするには、XSDごとに1つのXMLを作成し、カタログ同期化ジョブ・スケジュール済ジョブを使用して、そのXMLをOracle Identity Managerスキーマにロードします。Oracle Identity Managerスキーマが存在するデータベースのバージョンに応じて、適切なXML記憶域モデルが階層データの格納に使用されます。データベースにXMLスキーマを登録するために使用するXSD構造は、次の各項で説明するように、データベースのバージョンに応じて使用されるXSDスキーマの注釈のみが異なります。
Oracle Database 11gリリース1以降を使用している場合は、XMLスキーマの登録にバイナリXML記憶域モデルが使用されます。XSDスキーマのURLと構造は次のとおりです。
schemaurl:
http://localhost/public/xsd/hierarchicalEntitlement.xsd
schemadoc:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xdb="http://xmlns.oracle.com/xdb">
<xs:element name="oim" xdb:defaultTable="" >
<xs:complexType>
<xs:sequence>
<xs:element ref="applicationInstances"/> <!-- instead of namesapces/endpoints in OIA we can take in a list of application instances-->
<xs:element ref="attributes"/> <!-- you start with the attributes instead of the values -->
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="applicationInstances" xdb:defaultTable="" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="applicationInstance" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="applicationInstance" type="xs:string" xdb:defaultTable=""/>
<xs:element name="attributes" xdb:defaultTable="">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="attribute"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attribute" xdb:defaultTable="">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" ref="entitlementValues"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="entitlementValues" xdb:defaultTable="">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="entitlementValue" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_EVAL"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="entitlementValue" xdb:defaultTable="">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="value"/>
<xs:element minOccurs="0" maxOccurs="1" ref="description"/>
<xs:element minOccurs="0" maxOccurs="1" ref="attributes"/>
</xs:sequence>
<xs:attribute name="id"/>
</xs:complexType>
</xs:element>
<xs:element name="value" type="xs:string" xdb:defaultTable=""/>
<xs:element name="description" type="xs:string" xdb:defaultTable=""/>
</xs:schema>
このXSD構造を使用してXMLスキーマの登録が完了すると、次のようになります。
DBMS_XMLSCHEMA.REGISTERSCHEMA ( SCHEMAURL => schemaurl, SCHEMADOC => schemadoc, LOCAL => TRUE, GENTYPES => FALSE, GENTABLES => TRUE, OPTIONS => DBMS_XMLSCHEMA.REGISTER_BINARYXML ) /
表D-1に、XMLスキーマの登録が正常に完了した後でOracle Identity Managerスキーマに作成されるデータベース・オブジェクトのリストを示します。
表D-1 XMLスキーマの登録後に作成されるデータベース・オブジェクト
| オブジェクト・タイプ | 件数 | オブジェクト名 |
|---|---|---|
|
LOB |
1 |
システム生成 |
|
TRIGGER |
1 |
システム生成 |
|
TABLE |
1 |
CATALOG_HIERARCHICAL_ATTR_EVAL |
|
INDEX |
1 |
システム生成 |
その後で、次の問合せを実行してXMLスキーマの有無を検証し、Oracle Identity Managerスキーマに作成された基礎になる表のリストを取得します。
XMLスキーマの登録を検証するには:
SELECT SCHEMA_URL FROM USER_XML_SCHEMAS;
登録済XMLスキーマの基礎になる表を表示するには:
SELECT * FROM USER_XML_TABLES;
11gリリース1より前のOracle Databaseを使用している場合は、XMLスキーマの登録に非構造(CLOB) XML記憶域モデルが使用されます。XSDスキーマのURLと構造は次のとおりです。
schemaurl:
http://localhost/public/xsd/hierarchicalEntitlement.xsd
schemadoc:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xdb="http://xmlns.oracle.com/xdb">
<xs:element name="oim" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_OIM" >
<xs:complexType>
<xs:sequence>
<xs:element ref="applicationInstances"/> <!-- instead of namesapces/endpoints in OIA we can take in a list of application instances-->
<xs:element ref="attributes"/> <!-- you start with the attributes instead of the values -->
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="applicationInstances" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_AINS" >
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="applicationInstance" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="applicationInstance" type="xs:string" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_AIN"/>
<xs:element name="attributes" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_ATRS">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="attribute"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attribute" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_ATR">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" ref="entitlementValues"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="entitlementValues" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_EVLS">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="entitlementValue"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="entitlementValue" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_EVL">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="value"/>
<xs:element minOccurs="0" maxOccurs="1" ref="description"/>
<xs:element minOccurs="0" maxOccurs="1" ref="attributes"/>
</xs:sequence>
<xs:attribute name="id"/>
</xs:complexType>
</xs:element>
<xs:element name="value" type="xs:string" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_VAL"/>
<xs:element name="description" type="xs:string" xdb:defaultTable="CATALOG_HIERARCHICAL_ATTR_DESC"/>
</xs:schema>
このXSD構造を使用すると、次のようにXMLスキーマを登録できます。
DBMS_XMLSCHEMA.REGISTERSCHEMA ( SCHEMAURL => schemaurl, SCHEMADOC => schemadoc, LOCAL => TRUE, GENTYPES => FALSE, GENTABLES => TRUE ) /
表D-2に、XMLスキーマの登録が正常に完了した後でOracle Identity Managerスキーマに作成されるデータベース・オブジェクトのリストを示します。
表D-2 XMLスキーマの登録後に作成されるデータベース・オブジェクト
| オブジェクト・タイプ | 件数 | オブジェクト名 |
|---|---|---|
|
LOB |
9 |
システム生成 |
|
TABLE |
9 |
CATALOG_HIERARCHICAL_ATTR_OIM CATALOG_HIERARCHICAL_ATTR_AINS CATALOG_HIERARCHICAL_ATTR_AIN CATALOG_HIERARCHICAL_ATTR_ATRS CATALOG_HIERARCHICAL_ATTR_ATR CATALOG_HIERARCHICAL_ATTR_EVLS CATALOG_HIERARCHICAL_ATTR_EVL CATALOG_HIERARCHICAL_ATTR_VAL CATALOG_HIERARCHICAL_ATTR_DESC |
|
TRIGGER |
9 |
システム生成 |
|
INDEX |
9 |
システム生成 |
その後で、次の問合せを実行してXMLスキーマの有無を検証し、Oracle Identity Managerスキーマに作成された基礎になる表のリストを取得します。
XMLスキーマの登録を検証するには:
SELECT SCHEMA_URL FROM USER_XML_SCHEMAS;
登録済XMLスキーマの基礎になる表を表示するには:
SELECT * FROM USER_XML_TABLES;