3.15.7 オブジェクトの操作とアクセス制御情報の関係

ここでは,オブジェクトの操作とアクセス制御情報の関係について説明します。

アクセス制御情報は,クラスライブラリのオブジェクトのトップオブジェクトのプロパティとして設定されています。トップオブジェクト以外のオブジェクトに対する操作は,トップオブジェクトに設定されたアクセス制御情報に従って処理されます。

例として,CdbrReferentialContainerオブジェクトに対する操作について説明します。

CdbrReferentialContainerオブジェクトは,DMAオブジェクトのContainerオブジェクトをトップオブジェクトとして,DirectContainmentRelationshipオブジェクト,ReferentialContainmentRelationshipオブジェクトとともに構成されています。したがって,CdbrReferentialContainerオブジェクトのアクセス制御情報は,DMAオブジェクトのContainerオブジェクトのプロパティとして設定されています。

ここで,CdbrReferentialContainerオブジェクトで設定されているリンクに対して,プロパティを設定する場合について説明します。リンクのプロパティとは,DMAオブジェクトのDirectContainmentRelationshipオブジェクトまたはReferentialContainmentRelationshipオブジェクトのプロパティです。PutLinkPropertyValuesメソッドによってこのプロパティを更新しようとすると,DocumentBrokerはアクセス制御情報としてトップオブジェクトに設定されているアクセス制御情報を参照してアクセス権を判定し,アクセス権がある場合にメソッドを実行します。トップオブジェクト以外のオブジェクトにアクセスする場合の,アクセス制御の例を,次の図に示します。

図3-80 トップオブジェクト以外のオブジェクトにアクセスする場合のアクセス制御の例(CdbrReferentialContainerオブジェクトの例)

[図データ]

また,バージョン管理を実行したり,オブジェクト間のコンテインメントによる関連づけを実行したりする場合,複数のオブジェクトに対してパーミッションが必要なときがあります。

ここでは,複数のオブジェクトに対してパーミッションが必要な操作について説明します。

<この項の構成>
(1) バージョン管理に関する操作
(2) 文書間リレーションに関する操作
(3) コンテナへの関連づけに関する操作
(4) 構成管理に関する操作
(5) 一覧取得メソッドを使用する操作
(6) マルチレンディション管理に関する操作
(7) 各メソッドの実行に必要なパーミッション

(1) バージョン管理に関する操作

バージョン管理をしている文書の場合,一つのバージョン付き文書は,複数のバージョンなし文書によって構成されています。また,バージョン付き構成管理コンテナの場合も同様に,複数のバージョンなし構成管理コンテナによって構成されています。この場合,一つのバージョン付き文書を操作する場合に,バージョン付き文書のトップオブジェクトに設定されたパーミッションと,バージョンなし文書のトップオブジェクトに設定されたパーミッションが必要な場合があります。

バージョン付きオブジェクトとバージョンなしオブジェクトに設定されているアクセス制御情報について,次の図に示します。

図3-81 バージョン付きオブジェクトとバージョンなしオブジェクトに設定されているアクセス制御情報(CdbrVersionableDocumentオブジェクトおよびCdbrDocumentオブジェクトの場合)

[図データ]

ここでは,バージョン付き文書およびバージョン付き構成管理コンテナをバージョン付きオブジェクト,バージョンなし文書およびバージョンなし構成管理コンテナをバージョンなしオブジェクトとして,これら二つのオブジェクトにパーミッションが必要な操作について説明します。バージョン付きオブジェクトと1バージョンに相当するバージョンなしオブジェクトの対応について,次の表に示します。

表3-27 バージョン付きオブジェクトとバージョンなしオブジェクトの対応

バージョン付きオブジェクト1バージョンに相当するバージョンなしオブジェクト
CdbrVersionableDocumentオブジェクトCdbrDocumentオブジェクト
CdbrConfiguratedReferentialContainerオブジェクトCdbrVersionTraceableContainerオブジェクト

例として,CdbrVersionableDocumentオブジェクトとCdbrDocumentオブジェクトについて説明します。

CdbrDocumentオブジェクトは,CdbrVersionableDocumentオブジェクトの一つのバージョンに相当します。ユーザAがCdbrVersionableDocumentオブジェクトの1バージョンを削除しようとした場合,まず,CdbrVersionableDocumentオブジェクトに対して基本バージョン管理権が必要です。しかし,バージョンを削除することは実際には一つのCdbrDocumentオブジェクトを削除することと同じことになります。したがって,この場合は,CdbrVersionableDocumentオブジェクトの基本バージョン管理権のほかに,CdbrDocumentオブジェクトの基本オブジェクト削除権が必要になります。

バージョンなしオブジェクトに対して表3-29に示した以外のメソッドをコールする場合,バージョン付きオブジェクトのパーミッションは必要ありません。

(2) 文書間リレーションに関する操作

文書間リレーションを設定している文書間では,メソッドによってはリレーション元文書とリレーション先文書に対して適切なパーミッションが与えられている必要があります。

メソッドをコールするユーザがリレーション元文書とリレーション先文書に対して必要なパーミッションを次の表に示します。

表3-30 リレーション元文書とリレーション先文書に対して必要なパーミッション

リレーションに関係する操作(メソッド)リレーション元文書に必要なパーミッションリレーション先文書に必要なパーミッション
リレーションの作成
  • CreateRelation
基本リンク権
(PRIM_LINK)
基本プロパティ参照権
(PRIM_READ_PROPS)
リレーション情報の取得
  • GetRelationList
  • GetRelationListAndLock
基本プロパティ参照権
(PRIM_READ_PROPS)
基本プロパティ参照権
(PRIM_READ_PROPS)
リレーションの削除
  • RemoveRelation
基本リンク権
(PRIM_LINK)
リレーションのプロパティの設定
  • PutRelationPropertyValues
基本リンク権
(PRIM_LINK)
(凡例)
-:パーミッションは必要ありません。
注※
リレーション先文書のプロパティを取得しない場合は不要です。

(3) コンテナへの関連づけに関する操作

直接型や参照型のコンテインメントによってコンテナと関連づけている文書やコンテナでは,コンテナを表すオブジェクトと関連づけられるコンテナまたは文書を表す二つのオブジェクトに対して,適切なパーミッションを与えられている必要があります。

コンテナを表すオブジェクトとコンテナに関連づけられるオブジェクトの対応について,次の表に示します。

表3-31 コンテナとコンテナに関連づけられているオブジェクトの対応

コンテナになるオブジェクトコンテナに関連づけられるオブジェクト
CdbrReferentialContainerオブジェクトCdbrContainableクラスのサブクラスのオブジェクト
CdbrConfiguratedReferentialContainerオブジェクト(1バージョン)CdbrContainableクラスのサブクラスのオブジェクト
CdbrVersionTraceableContainerオブジェクトCdbrContainableクラスのサブクラスのオブジェクト

例えば,CdbrReferentialContainerオブジェクトに対して,CdbrDocumentオブジェクトおよびCdbrVersionableDocumentオブジェクトとのコンテインメントを設定する場合に必要なアクセス制御情報が設定されているDMAオブジェクトは,次の図のようになります。

図3-82 コンテナとコンテナに関連づけられているオブジェクトに設定されているアクセス制御情報

[図データ]

コンテナに関連づけられているオブジェクトに対して表3-33に示した以外のメソッドがコールされた場合,コンテナであるオブジェクトのパーミッションは必要ありません。

(4) 構成管理に関する操作

構成管理コンテナ(CdbrConfiguratedReferentialContainerオブジェクトまたはCdbrVersionTraceableContainerオブジェクト)によって構成管理機能を使用している場合は,構成管理コンテナと構成管理されているオブジェクトの二つのオブジェクトに対して,適切なパーミッションが必要です。

バージョン付き構成管理コンテナまたはバージョンなし構成管理コンテナを表すオブジェクトに構成管理型のコンテインメントで関連づけられるオブジェクトの対応について,次の表に示します。

表3-34 構成管理コンテナと構成管理型で関連づけられるオブジェクトの対応

構成管理コンテナになるオブジェクト構成管理コンテナに関連づけられる
オブジェクト
CdbrConfiguratedReferentialContainerオブジェクトCdbrVersionableクラスのサブクラスのオブジェクト
CdbrVersionTraceableContainerオブジェクトCdbrVersionableクラスのサブクラスのオブジェクト

なお,FLOATINGモードによって構成管理している場合,構成管理型で関連づけているオブジェクトがバージョンアップすると,関連づけているオブジェクトが変更されますが,表3-35のパーミッションは,メソッドによって関連づけを作成,変更した場合にだけチェックされます。バージョンアップ時にはチェックされません。

(5) 一覧取得メソッドを使用する操作

一覧取得メソッドとは,Get~ListメソッドまたはGet~ListAndLockメソッドなどのメソッドです。クラスライブラリのオブジェクトがほかのクラスライブラリのオブジェクトとコンテインメントやバージョン管理機能によって関連づけられている場合に,その関連づけられているオブジェクトの一覧を取得します。

一覧取得メソッドには,メソッドで設定されたデフォルトの情報だけを取得する以外に,明示的に指定した接続先オブジェクトのプロパティが取得できるメソッドがあります。これらのメソッドで,接続先のオブジェクトのプロパティを取得する場合は,接続先オブジェクトに基本プロパティ参照権が必要です。このパーミッションが設定されていない場合は,一覧に取得されません。なお,デフォルトの情報だけを取得する場合は,接続先のオブジェクトにパーミッションは必要ありません。これは,ユーザプログラムの内部処理に使うことを想定しています。システムを使用するエンドユーザに対してプロパティを表示して文書一覧を表示する場合などには,接続先のオブジェクトのプロパティを取得するメソッドを使用して,アクセス権があるものだけを表示するといった運用方法をお勧めします。

また,GetPropertyValuesメソッドを使用して,該当するプロパティ識別子を指定した場合も,接続先オブジェクトの個数は取得できます。ただし,このメソッドでは,接続先オブジェクトに対するパーミッションに関係なく,接続されているすべてのオブジェクトの個数が取得されます。

(6) マルチレンディション管理に関する操作

マルチレンディション管理をしている文書の場合,レンディションの操作は,そのレンディションを含むCdbrDocumentオブジェクトのトップオブジェクトに当たる,DMAオブジェクトのDocVersionオブジェクトに対して設定されているアクセス権に従って制御されます。

(7) 各メソッドの実行に必要なパーミッション

アクセス制御機能を使用している文書空間で,メソッドをコールするユーザはそのメソッドのコールに必要なパーミッションを持っている必要があります。

各メソッドのコールに必要なパーミッションについては,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。