3.4.4 マルチレンディション管理に関する操作

マルチレンディション管理に関する操作を実行する場合に使用するメソッドと,そのメソッドの発行順序について説明します。ここでは,次の操作について説明します。

これらの操作を実行する前に,まず,文書空間と接続してトランザクションを開始してください。また,すべての操作は,マルチレンディション文書に接続した状態で実行します。マルチレンディション文書に接続するためには,次の準備をしてください。

準備
レンディションを追加する文書の構成要素であるDMAオブジェクトのOIIDを,検索などによってあらかじめ取得します。
  • CdbrDocumentオブジェクトにレンディションを追加する場合は,DMAオブジェクトのDocVersionオブジェクトのOIIDを取得します。
  • CdbrVersionableDocumentオブジェクトにレンディションを追加する場合は,DMAオブジェクトのConfigurationHistoryオブジェクトのOIIDを取得します。

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

<この項の構成>
(1) レンディションの追加
(2) レンディションの削除
(3) マスタレンディションの変更
(4) レンディション一覧の取得
(5) レンディションのプロパティの設定
(6) マルチレンディション文書のバージョンアップ

(1) レンディションの追加

すでに登録されている文書(マスタレンディション)に対して,サブレンディションを追加する場合の操作について説明します。ここでは,DocumentBroker Rendering Optionを使用しない場合と使用する場合について説明します。

(a) DocumentBroker Rendering Optionを使用しない場合
  1. レンディションを追加する文書に接続します。
    接続するオブジェクトに応じて,CdbrDocumentクラスまたはCdbrVersionableDocumentクラスの,SetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. レンディションを追加します。
    AddRenditionメソッドをコールします。このとき,サブレンディションに登録するコンテントのファイルパスをURL形式で指定します。また,追加するサブレンディションに設定するレンディションタイプと,追加するレンディションに設定するプロパティ(dbrProp_RetrievalNameプロパティ)を指定します。

レンディションを追加するコールシーケンスの例を次に示します。

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

レンディションを追加するコールシーケンス

pSession->Begin();
//…
//レンディションを追加する文書のOIIDを取得する
//レンディションに設定するdbrProp_RetrievalNameプロパティの値を
//構造体PropListに登録する
//…
CdbrDocument Doc;
//レンディションを追加する文書に接続する
Doc.SetOIID(pSession,pOIID);
//レンディションを追加して,プロパティを設定する
Doc.AddRendition("file:///tmp/sample.txt",
                "MIME::text/plain",&PropList);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();

(b) DocumentBroker Rendering Optionを使用する場合
  1. レンディションを追加する文書に接続します。
    接続するオブジェクトに応じて,CdbrDocumentクラスまたはCdbrVersionableDocumentクラスの,SetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. レンディションを追加します。
    AddRenditionメソッドをコールします。メソッドは,レンディション変換の方法を指定する引数lConvertTypeがある形式を使用します。
    それぞれの引数には,次の値を指定します。
    • pFilePath
      NULLを指定します。
    • pRenditionType
      作成するコンテントに対応するレンディションタイプを指定します。
    • pPropList
      追加するサブレンディションのdbrProp_RetrievalNameプロパティの値を設定した構造体を指定します。
    • lConvertType
      DBR_CONVERT_TYPE_BATCHを指定します。
  3. DocumentBroker Rendering Optionのレンディション変換コマンドを実行します。

レンディションを追加するコールシーケンスの例を次に示します。

レンディションを追加するコールシーケンス

pSession->Begin();
//…
CdbrDocument Doc;
SDBR_PROP     Props;
SDBR_PROPLIST PropList;
//レンディションを追加する文書のOIIDを取得する
//レンディションに設定するdbrProp_RetrievalNameプロパティの値を
//構造体Propsに登録する
//…
//レンディションを追加する文書に接続する
Doc.SetOIID(pSession,pOIID);
//レンディションを追加して,プロパティを設定する
Doc.AddRendition(NULL,
               "MIME::text/plain",&PropList,
                DBR_CONVERT_TYPE_BATCH);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();

(2) レンディションの削除

マルチレンディション文書のサブレンディションを削除する場合の操作について説明します。

  1. レンディションを削除する文書に接続します。
    接続するオブジェクトに応じて,CdbrDocumentクラスまたはCdbrVersionableDocumentクラスのSetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. レンディションを削除します。
    DeleteRenditionメソッドをコールします。

レンディションを削除するコールシーケンスの例を次に示します。

レンディションを削除するコールシーケンス

pSession->Begin();
//…
//レンディションを削除する文書のOIIDを取得する
//…
CdbrDocument Doc;
//レンディションを削除する文書に接続する
Doc.SetOIID(pSession,pOIID);
//レンディションを削除する
Doc.DeleteRendition("MIME::text/plain");
Doc.ReleaseObject();
//処理の確定
pSession->Commit();

(3) マスタレンディションの変更

マルチレンディション文書のマスタレンディションを変更する場合の操作について説明します。マスタレンディションを変更すると,それまでマスタレンディションだったレンディションは,サブレンディションに変更されます。

  1. マスタレンディションを変更する文書に接続します。
    接続するオブジェクトに応じて,CdbrDocumentクラスまたはCdbrVersionableDocumentクラスのSetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. マスタレンディションに変更するサブレンディションのレンディションタイプを指定して,マスタレンディションを変更します。
    ChangeMasterRenditionメソッドをコールします。

マスタレンディションを変更するコールシーケンスの例を次に示します。

マスタレンディションを変更するコールシーケンス

pSession->Begin();
//…
//マスタレンディションを変更する文書のOIIDを取得する
//…
CdbrDocument Doc;
//マスタレンディションを変更する文書に接続する
Doc.SetOIID(pSession,pOIID);
//マスタレンディションを変更する
Doc.ChangeMasterRendition("MIME::text/plain");
Doc.ReleaseObject();
//処理の確定
pSession->Commit();

(4) レンディション一覧の取得

マルチレンディション文書に登録されているレンディションの一覧を取得する場合の操作について説明します。

  1. レンディション一覧を取得する文書に接続します。
    接続するオブジェクトに応じて,CdbrDocumentクラスまたはCdbrVersionableDocumentクラスのSetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. レンディション一覧を取得します。
    GetRenditionListAndLockメソッドまたはGetRenditionListメソッドをコールします。

レンディション一覧を取得するコールシーケンスの例を次に示します。

レンディション一覧を取得するコールシーケンス

pSession->Begin();
//…
//レンディション一覧を取得する文書のOIIDを取得する
//…
CdbrDocument Doc;
//レンディション一覧を取得する文書に接続する
Doc.SetOIID(pSession,pOIID);
//レンディション一覧を取得する
Doc.GetRenditionListAndLock(2,&PropDefList,
                           ppRenditionList, DMA_LOCK_READ);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();

(5) レンディションのプロパティの設定

マルチレンディション文書の各レンディションのdbrProp_RetrievalNameプロパティの値を設定する場合の操作について説明します。

  1. レンディションを削除する文書に接続します。
    接続するオブジェクトに応じて,CdbrDocumentクラスまたはCdbrVersionableDocumentクラスの,SetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. レンディションにプロパティを設定します。
    PutRenditionPropertyValuesメソッドをコールします。

レンディションにプロパティを設定するコールシーケンスの例を次に示します。

レンディションにプロパティを設定するコールシーケンス

pSession->Begin();
//…
//レンディションにプロパティを設定する文書のOIIDを取得する
//…
CdbrDocument  Doc;
SDBR_PROP     Props;
SDBR_PROPLIST PropList;
//プロパティ識別子にdbrProp_RetrievalNameを指定して,
//必要な情報を設定したプロパティ構造体Propsを作成しておく
//…
//レンディションにプロパティを設定する文書に接続する
Doc.SetOIID(pSession,pOIID);
//レンディションにプロパティを設定する
Doc.PutRenditionPropertyValues("MIME::text/plain",
                               &PropList);
Doc.ReleaseObject();
//処理の確定
pSession->Commit();

(6) マルチレンディション文書のバージョンアップ

マルチレンディション文書をバージョンアップする場合の操作について説明します。ここでは,DocumentBroker Rendering Optionを使用しない場合と使用する場合について説明します。

(a) DocumentBroker Rendering Optionを使用しない場合
  1. バージョンアップする文書に接続します。
    CdbrVersionableDocumentクラスの,SetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. バージョン付き文書をチェックアウトします。
    CdbrVersionable::CheckOutメソッドをコールします。これによって,次バージョンの追加を予約する,仮のバージョンが作成されます。このとき,仮のバージョンとしてコピーされるのは,マスタレンディションだけです。
  3. マスタレンディションのコンテントを更新します。
    CdbrVersionableDocument::UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドをコールします。
  4. 仮のバージョンに,レンディションを追加します。
    CdbrVersionableDocument::AddRenditionメソッドをコールします。このとき,サブレンディションに登録するファイルパスを指定します。
  5. バージョン付き文書をチェックインします。
    CdbrVersionableDocument::VersionCheckInメソッドをコールします。これによって,仮のバージョンが最新バージョンとして確定します。

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

マルチレンディション文書をバージョンアップするコールシーケンス(DocumentBroker Rendering Optionを使用しない場合)

//あらかじめマスタレンディションを更新するファイルを基に,
// サブレンディションを更新するファイルを作成しておく
pSession->Begin();
//…
//バージョンアップする文書のOIIDを取得する
//…
CdbrVersionableDocument VrDoc;
//バージョンアップする文書に接続する
VrDoc.SetOIID(pSession,pOIID);
//文書をチェックアウトする
VrDoc.VersionCheckOut(&pReservedVerId);
//マスタレンディションのコンテントを更新する
VrDoc.UpdateContent("file:///tmp/sample.doc",NULL,
                    pReservedVerId, DBR_CREATE_INDEX);
//仮のバージョンにレンディションを追加する
//(ファイルパスには事前に作成しておいた
//  サブレンディションのファイルのパスを指定する)
VrDoc.AddRendition(pReservedVerId,"file:///tmp/sample.pdf,
                  "MIME::application/pdf",&PropList);
//文書をチェックインする
VrDoc.VersionCheckIn();
VrDoc.ReleaseObject();
pSession->Commit();

(b) DocumentBroker Rendering Optionを使用する場合
  1. バージョンアップする文書に接続します。
    CdbrVersionableDocumentクラスの,SetOIIDメソッドまたはConnectObjectメソッドをコールします。
  2. バージョン付き文書をチェックアウトします。
    CdbrVersionable::CheckOutメソッドをコールします。これによって,次バージョンの追加を予約する,仮のバージョンが作成されます。このとき,仮のバージョンとしてコピーされるのは,マスタレンディションだけです。
  3. マスタレンディションのコンテントを更新します。
    CdbrVersionableDocument::UpdateContentメソッドまたはUpdateContentAndRenditionTypeメソッドをコールします。
  4. 仮のバージョンに,レンディションを追加します。
    CdbrVersionableDocument::AddRenditionメソッドをコールします。このとき,サブレンディションに登録するファイルパスを指定する引数pFilePathにはNULLを指定します。レンディション変換の方法を指定する引数lConvertTypeには,DBR_CONVERT_TYPE_BATCHを指定します。
  5. DocumentBroker Rendering Optionのレンディション変換を実行します。
    これによって,手順3.で登録したマスタレンディションのコンテントを基に,手順4.で追加したサブレンディションのコンテントが作成され,登録されます。
  6. バージョン付き文書をチェックインします。
    CdbrVersionableDocument::VersionCheckInメソッドをコールします。これによって,仮のバージョンが最新バージョンとして確定します。

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

マルチレンディション文書をバージョンアップするコールシーケンス(DocumentBroker Rendering Optionを使用する場合)

pSession->Begin();
//…
//バージョンアップする文書のOIIDを取得する
//…
CdbrVersionableDocument VrDoc;
//バージョンアップする文書に接続する
VrDoc.SetOIID(pSession,pOIID);
//文書をチェックアウトする
VrDoc.VersionCheckOut(&pReservedVerId);
//マスタレンディションのコンテントを更新する
VrDoc.UpdateContent("file:///tmp/sample.doc",NULL,
                    pReservedVerId, DBR_CREATE_INDEX);
//仮のバージョンにレンディションを追加する
//(ファイルパスにはNULLを指定する)
VrDoc.AddRendition(pReservedVerId,NULL,
                  "MIME::application/pdf",
                  &PropList,DBR_CONVERT_TYPE_BATCH);
//DocumentBroker Rendering Optionを使用して
// レンディション変換を実行する
//…
//文書をチェックインする
VrDoc.VersionCheckIn();
VrDoc.ReleaseObject();
pSession->Commit();