動的モデル: 実行時に新しいプロパティーを Virtual member manager のエンティティーに追加する

Virtual member manager は、動的モデルを使用するように構成されています。 新しいプロパティー・タイプを作成して、実行時に動的に Virtual member manager の組み込みエンティティー・タイプに追加できます。

このタスクについて

Virtual member manager の createSchema API を呼び出して新しいプロパティー・タイプを作成し、Virtual member manager を再始動せずに、作成した新しいプロパティー・タイプを、 実行時に Virtual member manager の既存の組み込みエンティティー・タイプに追加してください。 すぐに使用可能な LDAP アダプターと DB アダプターは、両方ともこのタイプのプロシージャーをサポートします。 この例では、postOfficeBox という新しいプロパティー・タイプを作成し、このプロパティー・タイプを、Virtual member manager の組み込みエンティティー・タイプ PersonAccount に追加します。 この例では LDAP アダプターを使用します。

以下を行ってください。

手順

  1. 基礎となるアダプターに LDAP アダプターが含まれている場合は、新しいプロパティー・タイプの対応する LDAP 属性スキーマが LDAP サーバーで定義され、エンティティー・タイプの LDAP オブジェクト・クラスによって含まれます。 Virtual member manager は、LDAP サーバーで LDAP スキーマを作成および更新する機能を備えていません。 この例では、エンティティー・タイプ PersonAccount のオブジェクト・クラス inetOrgPerson が既に LDAP 属性 postOfficeBox を含んでいます。

    基礎となるアダプターに DB アダプターが含まれている場合は、特に準備を必要としません。

  2. クライアント側で、新しいプロパティー・タイプを作成するデータ・グラフを構成します。 新しいプロパティー・タイプの作成にはデータ・オブジェクト PropertySchema が使用されます。 新しいプロパティー・タイプのメタデータの指定には、propertyName、dataType、multiValued などの属性が使用されます。 適用できるエンティティー・タイプは、要素 applicableEntityTypeNames で定義されます。 複数のエンティティー・タイプを指定できます。 このプロパティーの対応するリポジトリー属性名を定義するには、LDAP 属性構成を追加し、対応する Virtual member manager プロパティー名を指定します。これをコマンド行インターフェースを使用して構成する方法については、WebSphere Application Server インフォメーション・センターの「AdminTask オブジェクトの IdMgrRepositoryConfig コマンド・グループ」で、addIdMgrLDAPAttr コマンドについて参照してください。
    注: propertySchema データ・オブジェクトと extensionPropertySchema データ・オブジェクトについて詳しくは、プログラミングの前提条件のトピックにあるプロパティー・スキーマの拡張のセクションを参照してください。 また、WebSphere Application Server インフォメーション・センターの「 フェデレーテッド・リポジトリーリポジトリー構成におけるプロパティー拡張リポジトリーの構成」も参照してください。
    次に、サンプル・データ・グラフを示します。 作成する新しいプロパティー・タイプは postOfficeBox と呼ばれ、これはエンティティー・タイプ PersonAccount に追加されます。 対応する LDAP 属性名 postOfficeBox はプロパティー名と同じなので、このプロパティー名の LDAP 構成を追加する必要はありません。
    <?xml version="1.0" encoding="UTF-8"?>
    <sdo:datagraph xmlns:sdo="commonj.sdo"
        xmlns:wim="http://www.ibm.com/websphere/wim">
      <wim:schema>
        <wim:propertySchema nsURI="http://www.yourco.com/wim/yourext" 
         dataType="STRING" multiValued="true"
            propertyName="postOfficeBox">
          <wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
        </wim:propertySchema>
      </wim:schema>
    </sdo:datagraph>

タスクの結果

クライアント側では、 活動中の Virtual member manager アプリケーションが、ローカル・サービス・プロバイダーを通じて Virtual member manager の createSchema API を呼び出します。 ローカル・サービス・プロバイダーは、この呼び出しでスキーマが変更され、createSchema API 呼び出しの完了後にローカル・スキーマ (ECore) が更新されることを検出します。

サーバー側では、スキーマ・マネージャーがクライアントから API 呼び出しを受け取ります。 スキーマ・マネージャーはまず、新しいプロパティー・タイプが既に存在しているかどうかを調べ、存在している場合には例外をスローします。 次に、スキーマ・マネージャーは、メモリーにある ECore モデルを更新して、新しいエンティティー・タイプを既存のエンティティー・タイプに追加します。 このサンプルでは、PersonAccount という EClass に、postOfficeBox という新しい EAttribute が追加されます。

スキーマ・マネージャーは、新しいプロパティー・タイプのスキーマを、wimxmlextension.xml ファイルに追加します。 次に、この更新が完了した後の wimxmlextension.xml ファイルの内容サンプルを示します。
<wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
    dataType="STRING" multiValued="true" propertyName="postOfficeBox">
      <wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
    </wim:propertySchema>
スキーマ・マネージャーがリポジトリー・マネージャーを呼び出し、次いでリポジトリー・マネージャーがすべてのアダプターの createSchema SPI メソッドを呼び出します。
次に、スキーマの作成をサポートするアダプターが、新しいスキーマのサポートに必要な操作を実行します。 例えば、LDAP アダプターはキャッシュをリフレッシュして、変更をスキーマと構成に反映させます。 DB アダプターは、そのデータベースに新しいエンティティーとプロパティーのスキーマを作成し、そのキャッシュをリフレッシュします。
注: スキーマの作成をサポートしないアダプター (例えば、実行時に新しいタイプの作成をサポートしないファイル・アダプター) は、OperationNotSupportedException をスローします。

少なくとも 1 つのリポジトリー・アダプターが新しいエンティティーの作成をサポートしていて、OperationNotSupportedException をスローしなかった場合は、Virtual member manager が出力データ・グラフでこれらのリポジトリーのリポジトリー ID を戻します。

クライアント側では、createSchema API 呼び出しが戻されると、ローカル・サービス・プロバイダーが getEPackages API を呼び出して最新のスキーマを取得します。 ローカル・サービス・プロバイダーは、このスキーマをクライアント JVM に再登録します。 活動中のアプリケーションは、Virtual member manager の create API を呼び出して、 タイプ PersonAccount の新しいエンティティーをプロパティー postOfficeBox と一緒に作成できます。 Virtual member manager を再始動しなくても、スキーマの変更はアクティブになります。

サンプル・データ・グラフおよびサンプル・コードについては、「新しいプロパティー・タイプを作成して既存のエンティティー・タイプに追加する」を参照してください。


利用条件 | フィードバック