3.3.3 バージョン管理機能の操作

バージョン管理機能を使用する場合の,使用するメソッドと,そのメソッドの発行順序について説明します。

ここでは,次の操作について説明します。

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

なお,例では,バージョン付き文書であるCdbrVersionableDocumentオブジェクトを使用します。

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

<この項の構成>
(1) バージョン管理する文書またはコンテナの作成
(2) バージョンの追加
(3) 文書のバージョンの削除

(1) バージョン管理する文書またはコンテナの作成

バージョン管理する文書およびコンテナは,CdbrVersionableDocumentクラスまたはCdbrConfiguratedReferentialContainerクラスのCreateObjectメソッドをコールすることで作成されます。CreateObjectメソッドの使用例については,「3.2.3(1)文書の作成」を参照してください。

(2) バージョンの追加

チェックアウトとチェックインをすることで文書やコンテナにバージョンを追加します。

チェックアウトの取り消しには,CdbrVersionableクラスで定義されたVersionRevokeメソッドを使用します。

バージョンを追加する流れを説明します。この説明では,既存の文書をデータベースから取り出して編集し,新しいバージョンとして登録します。

準備
接続するオブジェクトの構成要素であるDMAオブジェクトのOIIDを,検索などによってあらかじめ取得しておきます。検索については「4. オブジェクトの検索」を参照してください。
文書やコンテナにバージョンを追加する場合に取得するOIIDは,接続するオブジェクトの種類によって,次のようになります。
  • CdbrVersionableDocumentオブジェクトに接続する場合は,構成要素であるDMAオブジェクトの,ConfigurationHistoryオブジェクトのOIIDを取得しておきます。
  • CdbrConfiguratedReferentialContainerオブジェクトに接続する場合は,構成要素であるDMAオブジェクトの,ConfigurationHistoryオブジェクトのOIIDを取得しておきます。

ここでは,文書のチェックアウトとチェックインの流れについて説明します。

チェックアウト,チェックインによってバージョンを追加する,コールシーケンスの例を次に示します。

なお,このコールシーケンスは,UNIXの場合です。Windowsの場合は,GetContentAndLockメソッドおよびUpdateContentメソッドの引数に指定するファイルパスを,「"file:///c:¥temp¥sample.txt"」のように指定してください。

文書をチェックアウトするコールシーケンス

pSession->Begin();
//…
//検索によって更新するバージョン付き文書のOIIDを取得する
//…
CdbrVersionableDocument VrDoc;
//検索で取得したOIIDをオブジェクトに設定する
VrDoc.SetOIID(pSession, pOIID);
//バージョン付き文書をチェックアウトする
VrDoc.VersionCheckOut(&pReservedVerId);
//writeロックを設定してファイルを取得する
VrDoc.GetContentAndLock("file:///tmp/sample.txt",
                       pReservedVerId,
                       DMA_LOCK_WRITE);
VrDoc.ReleaseObject();
pSession->Commit();

文書をチェックインするコールシーケンス

//クライアント環境でチェックアウトして取得したファイルの内容を
//更新しておく
pSession->Begin();
CdbrVersionableDocument VrDoc;
//OIIDをオブジェクトに設定する
VrDoc.SetOIID(pSession, pOIID);
//チェックアウトで作成されたコピーしたバージョン付き文書のファイルを
//更新する
VrDoc.UpdateContent("file:///tmp/sample.txt",
                   pReservedVerId);
//バージョン付き文書をチェックインする
VrDoc.VersionCheckIn();
VrDoc.ReleaseObject();
pSession->Commit();

(3) 文書のバージョンの削除

チェックインの実行によってすでに確定している文書またはコンテナのバージョンを削除する場合は,CdbrVersionableクラスで定義されているDeleteVersionメソッドを使用します。このメソッドによって,指定したバージョンの,次に示すDMAオブジェクトが削除されます。

CdbrVersionableDocumentオブジェクトのバージョンに対してDeleteVersionメソッドをコールすると,そのバージョンに対応するCdbrDocumentオブジェクトが削除されます。つまり,CdbrDocumentオブジェクトに対してRemoveObjectメソッドをコールした場合と同じ操作になります。

また,バージョン付き構成管理コンテナによって構成管理されている文書のバージョンを削除する場合は,その構成管理モードによって,削除されるオブジェクトが異なります。詳細は,「3.10.2(6)構成管理コンテナで構成管理しているオブジェクトの削除」を参照してください。

CdbrVersionableDocumentオブジェクトのバージョンを削除するコールシーケンスの例を次に示します。

文書のバージョンを削除するコールシーケンス

pSession->Begin();
//…
//検索によってバージョンを削除するバージョン付き文書のOIIDを取得する
//…
CdbrVersionableDocument VrDoc;
//検索で取得したOIIDをオブジェクトに設定する
VrDoc.SetOIID(pSession, pOIID);
//バージョンの一覧を取得する
VrDoc.GetVersionListAndLock(&bContinue, 0, NULL, 10,
                           &pObjList,DMA_LOCK_READ);
//バージョンを削除する
VrDoc.DeleteVersion(pVersionId);
VrDoc.ReleaseObject();
pSession->Commit();