リファレンスファイル管理に関する操作を実行する場合に使用するメソッドと,そのメソッドの発行順序について説明します。ここでは,次の操作について説明します。
これらの操作を実行する前に,まず,文書空間と接続してトランザクションを開始してください。また,コンテントロケーションをコンテントの相対パスで管理するために,CdbrSession::SetReferencePathメソッドでコンテント格納先ベースパスを設定しておく必要があります。
ここでは,リファレンスファイル文書の操作について説明します。リファレンスファイルを管理するバージョン付き文書のバージョンの操作については,「3.3.3 バージョン管理機能の操作」を参照してください。
それぞれの操作に使用するメソッドの詳細については,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。
リファレンスファイル文書を作成して,DocumentBrokerサーバに格納する場合に使用するメソッドと,その発行順序について説明します。なお,リファレンス文書を登録するとき,登録するコンテントから全文検索インデクスは作成できません。全文検索インデクスを作成する場合は,CdbrDocument::CreateIndexメソッドまたはCdbrVersionableDocument::CreateIndexメソッドを実行して作成してください。
リファレンスファイル文書を作成するコールシーケンスの例を次に示します。
//pTargetContentPathにコンテント格納先ベースパスを設定しておく
//…
pSession->Begin();
pSession->SetReferencePath(pTargetContentPath);
CdbrDocument Doc;
SDBR_REFERENCE_PATHINFO RefInfo;
//RefInfoにリファレンスファイル文書の登録に必要な情報を設定する
//…
//リファレンスファイル文書の作成および登録
Doc.CreateObject(pSession,
1, DMAClassList, RefInfo,
"MIME::application/x-edm-undefined", &pOIID);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();
すでにデータベースに登録されている文書と任意のディレクトリに登録されているコンテント(ファイル)を参照する場合に使用するメソッドと,そのメソッドの発行順序について説明します。
リファレンスファイル文書を参照する場合の,コールシーケンスの例を次に示します。
//pTargetContentPathにコンテント格納先ベースパスを設定しておく
//…
pSession->Begin();
pSession->SetReferencePath(pTargetContentPath);
//…
//検索によって参照するリファレンスファイル文書のOIIDを取得する
//…
CdbrDocument Doc;
SDBR_REFERENCE_PATHINFO RefInfo;
//RefInfoにリファレンスファイル文書のコンテント取得に必要な情報を設定する
//…
//検索で取得したOIIDをオブジェクトに設定する
Doc.SetOIID(pSession, pOIID);
//readロックを設定して,リファレンスファイル文書のコンテントを取得する
Doc.GetContentAndLock(RefInfo,
NULL, &lReferenceType, &pContentLocation,
DMA_LOCK_READ);
Doc.ReleaseObject();
dbrDelete(pContentLocation);
//処理の確定
pSession->Commit();
すでにデータベースに登録されている文書と任意のディレクトリに登録されている文書のコンテントを編集して更新する場合に使用するメソッドと,そのメソッドの発行順序について説明します。なお,(2)と同様に,あらかじめ接続する文書の構成要素であるDMAオブジェクトのOIIDを取得しておきます。
リファレンスファイル文書を更新する場合の,コールシーケンスの例を次に示します。
//pTargetContentPathにコンテント格納先ベースパスを設定しておく
//…
pSession->Begin();
pSession->SetReferencePath(pTargetContentPath);
//…
//検索によって更新するマルチファイル文書のOIIDを取得する
//…
CdbrDocument Doc;
SDBR_REFERENCE_PATHINFO RefInfo;
//RefInfoにリファレンスファイル文書のコンテント取得に必要な情報を設定する
//…
//検索で取得したOIIDをオブジェクトに設定する
Doc.SetOIID(pSession, pOIID);
//writeロックを設定して,リファレンスファイル文書のコンテントを取得する
Doc.GetContentAndLock(RefInfo,
NULL, NULL, NULL,
DMA_LOCK_WRITE);
//…
//取得したコンテントの内容の更新する
//…
//RefInfoにリファレンスファイル文書の更新に必要な情報を設定する
//…
//リファレンスファイル文書を更新する
Doc.UpdateContentAndRenditionType(RefInfo,
"MIME::application/x-edm-undefined", NULL);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();
リファレンスファイル文書を削除するメソッドには,従来のメソッドとリファレンスファイル用のメソッドの2種類あります。ここでは,リファレンスファイル用のメソッドを使用して,リファレンスファイル文書を削除する場合の,コールシーケンスの例を次に示します。なお,(2)と同様に,あらかじめ接続する文書の構成要素であるDMAオブジェクトのOIIDを取得しておきます。
//pTargetContentPathにコンテント格納先ベースパスを設定しておく
//…
pSession->Begin();
pSession->SetReferencePath(pTargetContentPath);
//…
//検索によって削除する文書のOIIDを取得する
//…
CdbrDocument Doc;
SDBR_REFERENCE_PATHINFO RefInfo;
//RefInfoにリファレンスファイル文書の削除に必要な情報を設定する
//…
//検索で取得したOIIDをオブジェクトに設定する
Doc.SetOIID(pSession, pOIID);
//文書を削除する
Doc.RemoveObject(RefInfo);
Doc.ReleaseObject();
pSession->Commit();