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 アダプターを使用します。
以下を行ってください。
クライアント側では、 活動中の Virtual member manager アプリケーションが、ローカル・サービス・プロバイダーを通じて Virtual member manager の createSchema API を呼び出します。 ローカル・サービス・プロバイダーは、この呼び出しでスキーマが変更され、createSchema API 呼び出しの完了後にローカル・スキーマ (ECore) が更新されることを検出します。
サーバー側では、スキーマ・マネージャーがクライアントから API 呼び出しを受け取ります。 スキーマ・マネージャーはまず、新しいプロパティー・タイプが既に存在しているかどうかを調べ、存在している場合には例外をスローします。 次に、スキーマ・マネージャーは、メモリーにある ECore モデルを更新して、新しいエンティティー・タイプを既存のエンティティー・タイプに追加します。 このサンプルでは、PersonAccount という EClass に、postOfficeBox という新しい EAttribute が追加されます。
<wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
dataType="STRING" multiValued="true" propertyName="postOfficeBox">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:propertySchema>
スキーマ・マネージャーがリポジトリー・マネージャーを呼び出し、次いでリポジトリー・マネージャーがすべてのアダプターの createSchema SPI メソッドを呼び出します。少なくとも 1 つのリポジトリー・アダプターが新しいエンティティーの作成をサポートしていて、OperationNotSupportedException をスローしなかった場合は、Virtual member manager が出力データ・グラフでこれらのリポジトリーのリポジトリー ID を戻します。
クライアント側では、createSchema API 呼び出しが戻されると、ローカル・サービス・プロバイダーが getEPackages API を呼び出して最新のスキーマを取得します。 ローカル・サービス・プロバイダーは、このスキーマをクライアント JVM に再登録します。 活動中のアプリケーションは、Virtual member manager の create API を呼び出して、 タイプ PersonAccount の新しいエンティティーをプロパティー postOfficeBox と一緒に作成できます。 Virtual member manager を再始動しなくても、スキーマの変更はアクティブになります。