ここでは,オブジェクトの操作とアクセス制御情報の関係について説明します。
アクセス制御情報は,クラスライブラリのオブジェクトのトップオブジェクトのプロパティとして設定されています。トップオブジェクト以外のオブジェクトに対する操作は,トップオブジェクトに設定されたアクセス制御情報に従って処理されます。
例として,CdbrReferentialContainerオブジェクトに対する操作について説明します。
CdbrReferentialContainerオブジェクトは,DMAオブジェクトのContainerオブジェクトをトップオブジェクトとして,DirectContainmentRelationshipオブジェクト,ReferentialContainmentRelationshipオブジェクトとともに構成されています。したがって,CdbrReferentialContainerオブジェクトのアクセス制御情報は,DMAオブジェクトのContainerオブジェクトのプロパティとして設定されています。
ここで,CdbrReferentialContainerオブジェクトで設定されているリンクに対して,プロパティを設定する場合について説明します。リンクのプロパティとは,DMAオブジェクトのDirectContainmentRelationshipオブジェクトまたはReferentialContainmentRelationshipオブジェクトのプロパティです。PutLinkPropertyValuesメソッドによってこのプロパティを更新しようとすると,DocumentBrokerはアクセス制御情報としてトップオブジェクトに設定されているアクセス制御情報を参照してアクセス権を判定し,アクセス権がある場合にメソッドを実行します。トップオブジェクト以外のオブジェクトにアクセスする場合の,アクセス制御の例を,次の図に示します。
図3-80 トップオブジェクト以外のオブジェクトにアクセスする場合のアクセス制御の例(CdbrReferentialContainerオブジェクトの例)
また,バージョン管理を実行したり,オブジェクト間のコンテインメントによる関連づけを実行したりする場合,複数のオブジェクトに対してパーミッションが必要なときがあります。
ここでは,複数のオブジェクトに対してパーミッションが必要な操作について説明します。
バージョン管理をしている文書の場合,一つのバージョン付き文書は,複数のバージョンなし文書によって構成されています。また,バージョン付き構成管理コンテナの場合も同様に,複数のバージョンなし構成管理コンテナによって構成されています。この場合,一つのバージョン付き文書を操作する場合に,バージョン付き文書のトップオブジェクトに設定されたパーミッションと,バージョンなし文書のトップオブジェクトに設定されたパーミッションが必要な場合があります。
バージョン付きオブジェクトとバージョンなしオブジェクトに設定されているアクセス制御情報について,次の図に示します。
図3-81 バージョン付きオブジェクトとバージョンなしオブジェクトに設定されているアクセス制御情報(CdbrVersionableDocumentオブジェクトおよびCdbrDocumentオブジェクトの場合)
ここでは,バージョン付き文書およびバージョン付き構成管理コンテナをバージョン付きオブジェクト,バージョンなし文書およびバージョンなし構成管理コンテナをバージョンなしオブジェクトとして,これら二つのオブジェクトにパーミッションが必要な操作について説明します。バージョン付きオブジェクトと1バージョンに相当するバージョンなしオブジェクトの対応について,次の表に示します。
表3-27 バージョン付きオブジェクトとバージョンなしオブジェクトの対応
バージョン付きオブジェクト | 1バージョンに相当するバージョンなしオブジェクト |
---|---|
CdbrVersionableDocumentオブジェクト | CdbrDocumentオブジェクト |
CdbrConfiguratedReferentialContainerオブジェクト | CdbrVersionTraceableContainerオブジェクト |
例として,CdbrVersionableDocumentオブジェクトとCdbrDocumentオブジェクトについて説明します。
CdbrDocumentオブジェクトは,CdbrVersionableDocumentオブジェクトの一つのバージョンに相当します。ユーザAがCdbrVersionableDocumentオブジェクトの1バージョンを削除しようとした場合,まず,CdbrVersionableDocumentオブジェクトに対して基本バージョン管理権が必要です。しかし,バージョンを削除することは実際には一つのCdbrDocumentオブジェクトを削除することと同じことになります。したがって,この場合は,CdbrVersionableDocumentオブジェクトの基本バージョン管理権のほかに,CdbrDocumentオブジェクトの基本オブジェクト削除権が必要になります。
表3-28 バージョン付きオブジェクトとバージョンなしオブジェクトに必要なパーミッション(バージョン付きオブジェクトを操作する場合)
バージョン管理に関係する操作(メソッド) | バージョン付きオブジェクトに必要なパーミッション | バージョンなしオブジェクトに必要なパーミッション |
---|---|---|
バージョンチェックアウト
| 基本バージョン管理権 (PRIM_VERSION) |
|
バージョンチェックイン
| 基本バージョン管理権 (PRIM_VERSION) | - |
バージョンチェックアウトのキャンセル
| 基本バージョン管理権 (PRIM_VERSION) | - |
バージョンの削除
| 基本バージョン管理権 (PRIM_VERSION) | 基本オブジェクト削除権 (PRIM_DELETE) |
バージョン情報の一覧取得
| 基本プロパティ参照権 (PRIM_READ_PROPS) | 基本プロパティ参照権※2 (PRIM_READ_PROPS) |
バージョン識別子を指定したバージョンなしオブジェクトの操作 | 基本プロパティ参照権 (PRIM_READ_PROPS) | バージョンなしオブジェクトに直接メソッドをコールした場合に必要なパーミッション |
表3-29 バージョン付きオブジェクトとバージョンなしオブジェクトに必要なパーミッション(バージョンなしオブジェクトを操作する場合)
バージョンなしオブジェクトに対する操作(メソッド) | バージョン付きオブジェクトに必要なパーミッション | バージョンなしオブジェクトに必要なパーミッション |
---|---|---|
オブジェクトの削除
| 基本バージョン管理権 (PRIM_VERSION) | 基本オブジェクト削除権 (PRIM_DELETE) |
自オブジェクトを1バージョンとして包含しているバージョン付きオブジェクトの一覧取得
| 基本プロパティ参照権※ (PRIM_READ_PROPS) | 基本プロパティ参照権 (PRIM_READ_PROPS) |
バージョンなしオブジェクトに対して表3-29に示した以外のメソッドをコールする場合,バージョン付きオブジェクトのパーミッションは必要ありません。
文書間リレーションを設定している文書間では,メソッドによってはリレーション元文書とリレーション先文書に対して適切なパーミッションが与えられている必要があります。
メソッドをコールするユーザがリレーション元文書とリレーション先文書に対して必要なパーミッションを次の表に示します。
表3-30 リレーション元文書とリレーション先文書に対して必要なパーミッション
リレーションに関係する操作(メソッド) | リレーション元文書に必要なパーミッション | リレーション先文書に必要なパーミッション |
---|---|---|
リレーションの作成
| 基本リンク権 (PRIM_LINK) | 基本プロパティ参照権※ (PRIM_READ_PROPS) |
リレーション情報の取得
| 基本プロパティ参照権※ (PRIM_READ_PROPS) | 基本プロパティ参照権※ (PRIM_READ_PROPS) |
リレーションの削除
| 基本リンク権 (PRIM_LINK) | - |
リレーションのプロパティの設定
| 基本リンク権 (PRIM_LINK) | - |
直接型や参照型のコンテインメントによってコンテナと関連づけている文書やコンテナでは,コンテナを表すオブジェクトと関連づけられるコンテナまたは文書を表す二つのオブジェクトに対して,適切なパーミッションを与えられている必要があります。
コンテナを表すオブジェクトとコンテナに関連づけられるオブジェクトの対応について,次の表に示します。
表3-31 コンテナとコンテナに関連づけられているオブジェクトの対応
コンテナになるオブジェクト | コンテナに関連づけられるオブジェクト |
---|---|
CdbrReferentialContainerオブジェクト | CdbrContainableクラスのサブクラスのオブジェクト |
CdbrConfiguratedReferentialContainerオブジェクト(1バージョン) | CdbrContainableクラスのサブクラスのオブジェクト |
CdbrVersionTraceableContainerオブジェクト | CdbrContainableクラスのサブクラスのオブジェクト |
例えば,CdbrReferentialContainerオブジェクトに対して,CdbrDocumentオブジェクトおよびCdbrVersionableDocumentオブジェクトとのコンテインメントを設定する場合に必要なアクセス制御情報が設定されているDMAオブジェクトは,次の図のようになります。
図3-82 コンテナとコンテナに関連づけられているオブジェクトに設定されているアクセス制御情報
表3-32 コンテナとコンテナと関連づけられている文書またはコンテナに対して必要なパーミッション(コンテナを操作する場合)
リンクに関係する操作(メソッド) | コンテナに必要なパーミッション | コンテナに関連づけられるオブジェクトに必要なパーミッション |
---|---|---|
コンテナとオブジェクトの関連づけ
| 基本リンク権 (PRIM_LINK) | 基本プロパティ参照権 (PRIM_READ_PROPS) |
コンテナとオブジェクトの関連づけの解除
| 基本リンク権 (PRIM_LINK) | - |
リンクのプロパティの参照
| 基本プロパティ参照権 (PRIM_READ_PROPS) | - |
リンクのプロパティの更新
| 基本リンク権 (PRIM_LINK) | - |
コンテナと関連づけている要素の一覧取得
| 基本プロパティ参照権 (PRIM_READ_PROPS) | 基本プロパティ参照権※ (PRIM_READ_PROPS) |
表3-33 コンテナとコンテナに関連づけられている文書またはコンテナに対して必要なパーミッション(コンテナと関連づけられるオブジェクトを操作する場合)
コンテナに関連づけられているオブジェクトに対する操作(メソッド) | コンテナに必要なパーミッション | コンテナに関連づけられている文書またはコンテナに必要なパーミッション |
---|---|---|
自オブジェクトを包含要素として関連づけているコンテナの一覧取得
| 基本プロパティ参照権※ (PRIM_READ_PROPS) | 基本プロパティ参照権 (PRIM_READ_PROPS) |
コンテナに関連づけられているオブジェクトに対して表3-33に示した以外のメソッドがコールされた場合,コンテナであるオブジェクトのパーミッションは必要ありません。
構成管理コンテナ(CdbrConfiguratedReferentialContainerオブジェクトまたはCdbrVersionTraceableContainerオブジェクト)によって構成管理機能を使用している場合は,構成管理コンテナと構成管理されているオブジェクトの二つのオブジェクトに対して,適切なパーミッションが必要です。
バージョン付き構成管理コンテナまたはバージョンなし構成管理コンテナを表すオブジェクトに構成管理型のコンテインメントで関連づけられるオブジェクトの対応について,次の表に示します。
表3-34 構成管理コンテナと構成管理型で関連づけられるオブジェクトの対応
構成管理コンテナになるオブジェクト | 構成管理コンテナに関連づけられる オブジェクト |
---|---|
CdbrConfiguratedReferentialContainerオブジェクト | CdbrVersionableクラスのサブクラスのオブジェクト |
CdbrVersionTraceableContainerオブジェクト | CdbrVersionableクラスのサブクラスのオブジェクト |
表3-35 構成管理コンテナと構成管理型のコンテインメントで関連づけられる文書またはコンテナに必要なパーミッション
構成管理型のリンクに関係する操作(メソッド) | 構成管理コンテナに必要なパーミッション | 構成管理型のコンテインメントで関連づけられる文書またはコンテナに必要なパーミッション |
---|---|---|
構成管理コンテナとオブジェクトの構成管理型での関連づけ
| 基本リンク権 (PRIM_LINK) | 基本プロパティ参照権 (PRIM_READ_PROPS※) |
構成管理コンテナとオブジェクトの構成管理型での関連づけの解除
| 基本リンク権 (PRIM_LINK) | - |
構成管理モードのFIXモードへの変更
| 基本リンク権 (PRIM_LINK) | - |
構成管理モードのFLOATINGモードへの変更
| 基本リンク権 (PRIM_LINK) | - |
なお,FLOATINGモードによって構成管理している場合,構成管理型で関連づけているオブジェクトがバージョンアップすると,関連づけているオブジェクトが変更されますが,表3-35のパーミッションは,メソッドによって関連づけを作成,変更した場合にだけチェックされます。バージョンアップ時にはチェックされません。
一覧取得メソッドとは,Get~ListメソッドまたはGet~ListAndLockメソッドなどのメソッドです。クラスライブラリのオブジェクトがほかのクラスライブラリのオブジェクトとコンテインメントやバージョン管理機能によって関連づけられている場合に,その関連づけられているオブジェクトの一覧を取得します。
一覧取得メソッドには,メソッドで設定されたデフォルトの情報だけを取得する以外に,明示的に指定した接続先オブジェクトのプロパティが取得できるメソッドがあります。これらのメソッドで,接続先のオブジェクトのプロパティを取得する場合は,接続先オブジェクトに基本プロパティ参照権が必要です。このパーミッションが設定されていない場合は,一覧に取得されません。なお,デフォルトの情報だけを取得する場合は,接続先のオブジェクトにパーミッションは必要ありません。これは,ユーザプログラムの内部処理に使うことを想定しています。システムを使用するエンドユーザに対してプロパティを表示して文書一覧を表示する場合などには,接続先のオブジェクトのプロパティを取得するメソッドを使用して,アクセス権があるものだけを表示するといった運用方法をお勧めします。
また,GetPropertyValuesメソッドを使用して,該当するプロパティ識別子を指定した場合も,接続先オブジェクトの個数は取得できます。ただし,このメソッドでは,接続先オブジェクトに対するパーミッションに関係なく,接続されているすべてのオブジェクトの個数が取得されます。
マルチレンディション管理をしている文書の場合,レンディションの操作は,そのレンディションを含むCdbrDocumentオブジェクトのトップオブジェクトに当たる,DMAオブジェクトのDocVersionオブジェクトに対して設定されているアクセス権に従って制御されます。
アクセス制御機能を使用している文書空間で,メソッドをコールするユーザはそのメソッドのコールに必要なパーミッションを持っている必要があります。
各メソッドのコールに必要なパーミッションについては,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。