3.10.4 構成管理コンテナの操作

構成管理コンテナを操作する場合に使用するメソッドと,そのメソッドの発行順序について説明します。ここでは,次の操作について説明します。なお,バージョンアップについては,バージョン付き構成管理コンテナだけで実行できます。それ以外の操作については,バージョン付き構成管理コンテナとバージョンなし構成管理コンテナのどちらでも実行できます。

これらの操作を実行する前に,まず,文書空間と接続して,トランザクションを開始してください。

それぞれの操作で使用するメソッドの詳細については,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。

<この項の構成>
(1) 構成管理コンテナの作成
(2) 構成管理コンテナと文書の関連づけ
(3) 構成管理コンテナと文書の関連づけの解除
(4) 構成管理コンテナの構成要素のバージョンの確定
(5) バージョン付き構成管理コンテナのバージョンアップ
(6) 構成管理コンテナの削除

(1) 構成管理コンテナの作成

新しく構成管理コンテナを作成して,データベースに格納する場合,CdbrVersionTraceableContainer::CreateObjectメソッドまたはCdbrConfiguratedReferentialContainer::CreateObjectメソッドを使用します。メソッドの発行順序については,「3.2.3(1)文書の作成」を参照してください。ここでは,構成管理コンテナとしてCdbrVersionTraceableContainerオブジェクトおよびCdbrConfiguratedReferentialContainerオブジェクトを作成する場合の準備について示します。

準備
オブジェクトの構成要素になるDMAオブジェクト作成用のクラス識別子を指定した構造体(SDBR_DMAINFO構造体)を作成しておきます。
  • CdbrVersionTraceableContainerオブジェクトを作成する場合は,SDBR_DMAINFO構造体に,edmClass_ContainerVersionクラスまたはサブクラスの識別子を指定します。
  • CdbrConfiguratedReferentialContainerオブジェクトを作成する場合は,SDBR_DMAINFO構造体に,dmaClass_ConfigurationHistoryクラスまたはサブクラスの識別子と,edmClass_ContainerVersionクラスまたはサブクラスの識別子を指定します。ただし,構成管理の対象になるバージョン付き構成管理コンテナを作成する場合は,SDBR_DMAINFO構造体に,次のクラス識別子を指定します。
指定するクラス識別子
  • dmaClass_ConfigurationHistoryクラスまたはサブクラスの識別子
  • edmClass_ContainerVersionクラスまたはサブクラスの識別子

(2) 構成管理コンテナと文書の関連づけ

構成管理コンテナと文書を構成管理型のコンテインメントによって関連づける場合に使用するメソッドと,そのメソッドの発行順序について説明します。

準備
既存のオブジェクトに接続する場合,クラスライブラリのオブジェクトの構成要素であるDMAオブジェクトのOIIDは,検索などによってあらかじめ取得してください。検索については,「4. オブジェクトの検索」を参照してください。
取得するOIIDは,接続するオブジェクトの種類によって次のようになります。
  • CdbrVersionTraceableContainerオブジェクトに接続する場合は,DMAオブジェクトのContainerVersionオブジェクトのOIIDを指定します。
  • CdbrConfiguratedReferentialContainerオブジェクトに接続する場合は,DMAオブジェクトのConfigurationHistoryオブジェクトのOIIDを指定します。
  1. 構成管理コンテナと接続します。
    接続するオブジェクトに応じて,次のどれかのメソッドをコールします。
    • CdbrVersionTraceableContainer::SetOIIDメソッド
    • CdbrVersionTraceableContainer::ConnectObjectメソッド
    • CdbrConfiguratedReferentialContainer::SetOIIDメソッド
    • CdbrConfiguratedReferentialContainer::ConnectObjectメソッド
  2. 構成管理コンテナと文書を関連づけます。
    CdbrVersionTraceableContainerクラスまたはCdbrConfiguratedReferentialContainerクラスで定義されている,LinkVTFloatAndLockメソッド,LinkVTFloatメソッド,LinkVTFixAndLockメソッドまたはLinkVTFixメソッドのどれかをコールします。このメソッドによって,構成管理モードである,FLOATINGモードまたはFIXモードが設定されます。

構成管理コンテナと文書を関連づけるコールシーケンスの例を次に示します。

構成管理コンテナと文書を関連づけるコールシーケンス

pSession->Begin();
//…
//検索によって格納する文書および構成管理コンテナのOIIDを取得する
//…
CdbrConfiguratedReferentialContainer VrContainer;
//検索で取得したOIIDをオブジェクトに設定する
VrContainer.SetOIID(pSession, pOIID);
//構成管理コンテナにwriteロックを設定して,
//構成管理コンテナと文書をFLOATINGモードで関連づける
VrContainer.LinkVTFloatAndLock(NULL, pVrDoc, NULL, &pLinkId,
                              DMA_LOCK_WRITE);
VrContainer.ReleaseObject();
pSession->Commit();

(3) 構成管理コンテナと文書の関連づけの解除

構成管理コンテナと構成要素の関連づけを解除する場合は,関連づける場合と同様に構成管理コンテナに接続してから,CdbrVersionTraceableContainerクラスまたはCdbrConfiguratedReferentialContainerクラスで定義されているUnlinkVTAndLockメソッドまたはUnlinkVTメソッドをコールします。

構成管理コンテナに格納した文書との関連づけを解除するコールシーケンスの例を次に示します。

構成管理コンテナに格納した文書との関連づけを解除するコールシーケンス

pSession->Begin();
//…
//検索によって関連づけを解除する文書および構成管理コンテナの
//OIIDを取得する
//…
CdbrConfiguratedReferentialContainer VrContainer;
//検索で取得したOIIDをオブジェクトに設定する
VrContainer.SetOIID(pSession, pOIID);
//構成管理コンテナが構成管理している文書の一覧を取得して,
//取得した文書一覧から関連づけを削除する文書のリンクIDを取得する
VrContainer.GetVTContaineeList(&bContinue, NULL, 0, NULL, 10,
                               &pVTObjList);
//構成管理コンテナにwriteロックを設定して,
//構成管理コンテナと文書を解除する
VrContainer.UnlinkVTAndLock(pLinkId,DMA_LOCK_WRITE);
VrContainer.ReleaseObject();
pSession->Commit();

(4) 構成管理コンテナの構成要素のバージョンの確定

構成管理コンテナの構成要素のバージョンの確定には,CdbrVersionTraceableContainer::SetVTFixメソッドまたはCdbrConfiguratedReferentialContainer::SetVTFixメソッドを使用します。また,バージョンの確定の解除には,CdbrVersionTraceableContainer::SetVTFloatメソッドまたはCdbrConfiguratedReferentialContainer::SetVTFloatメソッドを使用します。

構成要素のバージョンを確定するコールシーケンスの例を次に示します。

構成要素のバージョンを確定するコールシーケンス

pSession->Begin();
//…
//検索によって該当する構成管理コンテナのOIIDを取得する
//…
CdbrConfiguratedReferentialContainer VrContainer;
//検索で取得したOIIDをオブジェクトに設定する
VrContainer.SetOIID(pSession,pOIID);
//構成管理コンテナが構成管理している文書の一覧を取得して,
//取得した一覧から構成管理モードをFIXにする文書のリンクIDを取得する
VrContainer.GetVTContaineeList(&bContinue, NULL, 0, NULL, 10,
                               &pVTObjList);
//一覧で取得した文書の一つの構成管理モードをFIXモードに確定する
VrContainer.SetVTFix(pLinkId, DBR_VTVERSION);
VrContainer.ReleaseObject();
//処理の確定
pSession->Commit();

(5) バージョン付き構成管理コンテナのバージョンアップ

バージョン付き構成管理コンテナをバージョンアップするには,文書のバージョンアップと同様に,チェックアウトおよびチェックインを実行します。このとき,構成要素(バージョン付き文書またはバージョン付き構成管理コンテナ)を管理している構成管理モードを適切に変更することによって,バージョン管理コンテナごとに構成要素のバージョンの履歴管理ができるようになります。

バージョン付き構成管理コンテナのバージョンごとに構成要素の履歴を管理する場合の手順を,次の図に示します。

図3-51 バージョンアップ構成管理コンテナのバージョンアップの手順

[図データ]

図3-51について説明します。

  1. バージョンアップ前の構成管理コンテナが構成要素を管理している構成管理モードを,FIXモードに変更します。
    CdbrConfiguratedReferentialContainer::SetVTFixメソッドをコールします。
    図3-51は,バージョン1の構成管理コンテナでは,文書A V1(バージョン1)と,文書B V2(バージョン2)を管理します。
  2. バージョン付き構成管理コンテナをチェックアウトします。
    CdbrConfiguratedReferentialContainer::VersionCheckOutメソッドをコールします。
    仮のバージョンの構成管理コンテナが作成されます。仮のバージョンの構成管理コンテナが構成要素を管理する構成管理モードは,チェックアウト前の状態と同じ,FIXモードになります。
  3. 構成要素を編集します。
    図3-51では,文書Aをバージョンアップしています。ただし,構成管理モードがFIXモードなので,この時点で仮のバージョンのコンテナが構成管理するのは,文書A V1のままです。
  4. 仮のバージョンの構成管理コンテナで構成要素を管理している構成管理モードを,すべてFLOATINGモードにします。
    CdbrConfiguratedReferentialContainer::SetVTFloatメソッドをコールします。
    この時点で,仮のバージョンの構成管理コンテナが管理する構成要素が,文書A V1から文書A V2に変わります。
  5. バージョン付き構成管理コンテナをチェックインします。
    CdbrConfiguratedReferentialContainer::VersionCheckInメソッドをコールします。
    仮のバージョンの構成管理コンテナが,バージョン2の構成管理コンテナとして確定されます。
    これによって,バージョン1の構成管理コンテナで管理する文書Aは文書A V1,バージョン2の構成管理コンテナで管理する文書Aは文書A V2となり,バージョン付き構成管理コンテナのバージョンごとの文書の履歴管理が実現できます。
注意
バージョンアップ後の構成管理コンテナの構成要素を編集する場合,バージョンアップ前の構成管理コンテナの構成管理モードをFIXモードに変更したあとで,構成要素を編集してください。構成管理モードがFLOATINGモードの状態で構成要素を編集した場合,バージョンアップ前の構成管理コンテナが管理する構成要素も編集後の構成要素に切り替わってしまうため,構成管理コンテナのバージョンによる構成要素の履歴管理ができません。

それぞれの構成要素のバージョンアップについては,「3.3.3 バージョン管理機能の操作」を参照してください。

(6) 構成管理コンテナの削除

バージョン付き構成管理コンテナであるCdbrConfiguratedReferentialContainerオブジェクトを削除する場合は,CdbrConfiguratedReferentialContainer::RemoveObjectメソッドを使用します。これによって,CdbrConfiguratedReferentialContainerオブジェクトを構成していたすべてのDMAオブジェクトが削除されます。

また,特定のバージョンに対応するバージョンなし構成管理コンテナであるCdbrVersionTraceableContainerオブジェクトは,次のどちらかの方法で削除します。

どちらのメソッドを使用した場合も,該当するバージョンのバージョンなし構成管理コンテナを構成していたDMAオブジェクトのVersionDescriptionオブジェクト,ContainerVersionオブジェクト,VersionTraceableContainmentRelationshipオブジェクト,DirectContainmentRelationshipオブジェクトおよびReferentialContainmentRelationshipオブジェクトが削除されます。

なお,バージョン付き構成管理コンテナおよび特定のバージョンに対応するバージョンなし構成管理コンテナを削除しても,包含していた文書やコンテナは削除されません。