コンテナを使用した文書管理をする場合に使用するメソッドと,そのメソッドの発行順序について説明します。ここでは,次の操作について説明します。
これらの操作を実行する前に,まず,文書空間と接続してトランザクションを開始してください。
それぞれの操作で使用するメソッドの詳細については,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。
新しくコンテナを作成して,データベースに格納する場合,CdbrReferentialContainer::CreateObjectメソッドを使用します。メソッドの発行順序については,「3.2.3(1) 文書の作成」を参照してください。ここでは,コンテナとしてCdbrReferentialContainerオブジェクトを作成する場合の準備について示します。
ここでは,コンテナと文書を関連づける場合に使用するメソッドと,そのメソッドの発行順序について説明します。
コンテナに文書を格納するコールシーケンスの例を次に示します。
pSession->Begin();
//…
//検索によって関連づける文書およびコンテナのOIIDを取得する
//…
CdbrReferentialContainer Container;
//検索で取得したOIIDをオブジェクトに設定する
Container.SetOIID(pSession, pOIID);
//コンテナにwriteロックを設定して,コンテナと文書を
//直接型のコンテインメントで関連づける
Container.LinkAndLock(pVrDoc, DBR_CONTAINMENT_DIRECT,
DMA_LOCK_WRITE);
Container.ReleaseObject();
pSession->Commit();
コンテナと文書の関連づけを解除する場合に使用するメソッドと,そのメソッドの発行順序について説明します。なお,(2)と同様に,あらかじめ接続する文書の構成要素のOIIDを取得しておきます。
コンテナと文書の関連づけを解除するコールシーケンスの例を次に示します。
pSession->Begin();
//…
//検索によって関連づけを解除するコンテナのOIIDを取得する
//…
CdbrReferentialContainer Container;
//検索で取得したOIIDをオブジェクトに設定する
Container.SetOIID(pSession, pOIID);
//コンテナが管理している文書の一覧を取得して,
//取得した文書一覧から関連づけを削除する文書のOIIDを取得する
Container.GetContainableListAndLock(&bContinue,
DBR_CONTAINMENT_REFERENTIAL,
0,NULL,10,&pObjList,
DMA_LOCK_READ);
//コンテナにwriteロックを設定して,
//文書との関連づけを解除する
Container.UnlinkAndLock(pVrDoc, DMA_LOCK_WRITE);
Container.ReleaseObject();
pSession->Commit();
コンテナは,階層構造を付けて管理できます。ここでは,階層を付けて管理されている特定のコンテナを,階層構造をたどって取得する場合に使用するメソッドと,そのメソッドの発行順序について説明します。この説明では,ユーザ定義プロパティとして定義されているコンテナの名称を基に取得します。
階層構造をたどってコンテナを検索するコールシーケンスの例を次に示します。ここでは,直接型のコンテインメントで関連づけられているコンテナを検索します。
pSession->Begin();
CdbrReferentialContainer Container;
//最上位のコンテナのOIIDを設定する
Container.SetOIID(pSession, RootOIID);
//最上位のコンテナのプロパティを取得する
Container.GetPropertyValues(2, PropDef, &pPropList);
//最上位のコンテナと直接型のコンテインメントで関連づけられている
//下位のコンテナの一覧を取得する
Container.GetContainableList(&bContinue,
DBR_CONTAINMENT_DIRECT, 2,
pPropDef, 10, &pObjList);
//取得したコンテナから検索する値のプロパティを持つコンテナを取得する
//…
Container.ReleaseObject();
pSession->Commit();
コンテナの削除には,CdbrReferentialContainer::RemoveObjectメソッドを使用します。これによって,DMAオブジェクトのContainerオブジェクトとDirectContainmentRelationshipオブジェクトおよびReferentialContainmentRelationshipオブジェクトが削除されます。このとき,削除したコンテナが包含していたオブジェクトに当たる文書やコンテナは削除されません。RemoveObjectメソッドの使用方法については,「3.2.3(4)文書の削除」を参照してください。
コンテナを削除するコールシーケンスの例を次に示します。
pSession->Begin();
//…
//検索によって削除するコンテナのOIIDを取得する
//…
CdbrReferentialContainer Container;
//検索で取得したOIIDをオブジェクトに設定する
Container.SetOIID(pSession, pOIID);
//コンテナを削除する
Container.RemoveObject();
Container.ReleaseObject();
pSession->Commit();