バージョン管理機能を使用する場合の,使用するメソッドと,そのメソッドの発行順序について説明します。
ここでは,次の操作について説明します。
これらの操作を実行する前に,まず,文書空間と接続してトランザクションを開始してください。
なお,例では,バージョン付き文書であるCdbrVersionableDocumentオブジェクトを使用します。
それぞれの操作に使用するメソッドの詳細については,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。
バージョン管理する文書およびコンテナは,CdbrVersionableDocumentクラスまたはCdbrConfiguratedReferentialContainerクラスのCreateObjectメソッドをコールすることで作成されます。CreateObjectメソッドの使用例については,「3.2.3(1)文書の作成」を参照してください。
チェックアウトとチェックインをすることで文書やコンテナにバージョンを追加します。
チェックアウトの取り消しには,CdbrVersionableクラスで定義されたVersionRevokeメソッドを使用します。
バージョンを追加する流れを説明します。この説明では,既存の文書をデータベースから取り出して編集し,新しいバージョンとして登録します。
ここでは,文書のチェックアウトとチェックインの流れについて説明します。
チェックアウト,チェックインによってバージョンを追加する,コールシーケンスの例を次に示します。
なお,このコールシーケンスは,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();
チェックインの実行によってすでに確定している文書またはコンテナのバージョンを削除する場合は,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();