マルチファイル管理に関する操作を実行する場合に使用するメソッドと,そのメソッドの発行順序について説明します。ここでは,次の操作について説明します。
これらの操作を実行する前に,まず,文書空間と接続してトランザクションを開始してください。
ここでは,マルチファイル文書の操作について説明します。マルチファイルを管理するバージョン付き文書のバージョンの操作については,「3.3.3 バージョン管理機能の操作」を参照してください。
それぞれの操作に使用するメソッドの詳細については,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。
マルチファイル文書を作成して,データベースに格納する場合に使用するメソッドと,そのメソッドの発行順序について説明します。なお,マルチファイル文書を登録する時,全文検索インデクスは作成できません。全文検索インデクスは,CdbrDocument::CreateIndexメソッドまたはCdbrVersionableDocument::CreateIndexメソッドを実行して作成してください。
マルチファイル文書を作成するコールシーケンスの例を次に示します。
//…
pSession->Begin();
CdbrDocument Doc;
SDBR_PATHLIST PathList;
//マルチファイル文書の作成および登録
Doc.CreateObject(pSession,
1, DMAClassList, PathList,
"MIME::application/x-edm-undefined", &pOIID);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();
すでにデータベースに登録されている文書とコンテントとして登録されているファイルを参照する場合に使用するメソッドと,そのメソッドの発行順序について説明します。マルチファイル管理を使用して登録した文書は,コンテントを一括して取得できます。
マルチファイル文書を参照する場合の,コールシーケンスの例を次に示します。
なお,このコールシーケンスは,UNIXの場合です。Windowsの場合は,GetContentAndLockメソッドの引数に指定するファイルパスを,「"file:///c:¥temp"」のように指定してください。
pSession->Begin();
//…
//検索によって参照するマルチファイル文書のOIIDを取得する
//…
CdbrDocument Doc;
SDBR_CONTENTLIST* pContentList=NULL;
//検索で取得したOIIDをオブジェクトに設定する
Doc.SetOIID(pSession, pOIID);
//readロックを設定して,マルチファイル文書の複数コンテントの情報を取得する
Doc.GetContentInfo(NULL, &pContentList,
DMA_LOCK_READ);
//readロックを設定して,マルチファイル文書の複数コンテントを取得する
Doc.GetContentAndLock("file:///tmp",
*pContentList, NULL,
DMA_LOCK_READ);
Doc.ReleaseObject();
dbrDelete(pContentList);
//処理の確定
pSession->Commit();
すでにデータベースに登録されている文書とコンテントとして登録されているファイルを編集して更新する場合に使用するメソッドと,そのメソッドの発行順序について説明します。なお,(2)と同様に,あらかじめ接続する文書の構成要素であるDMAオブジェクトのOIIDを取得しておきます。マルチファイル管理を使用して登録した文書は,コンテントを一括して更新できます。
マルチファイル文書を更新する場合の,コールシーケンスの例を次に示します。
なお,このコールシーケンスは,UNIXの場合です。Windowsの場合は,GetContentAndLockメソッドおよびUpdateContentメソッドの引数に指定するファイルパスを,「"file:///c:¥temp"」のように指定してください。
pSession->Begin();
//…
//検索によって更新するマルチファイル文書のOIIDを取得する
//…
CdbrDocument Doc;
SDBR_CONTENTLIST* pContentList=NULL;
//検索で取得したOIIDをオブジェクトに設定する
Doc.SetOIID(pSession, pOIID);
//writeロックを設定して,マルチファイル文書の複数コンテントの情報を取得する
Doc.GetContentInfo(NULL, &pContentList,
DMA_LOCK_WRITE);
//writeロックを設定して,マルチファイル文書の複数コンテントを取得する
Doc.GetContentAndLock("file:///tmp",
*pContentList, NULL,
DMA_LOCK_WRITE);
//…
//取得したコンテントの内容の更新する
//…
//マルチファイル文書を更新する
Doc.UpdateContent(&PathList,
"MIME::application/x-edm-undefined");
Doc.ReleaseObject();
//処理の確定
pSession->Commit();