CdbrVersionableDocument::CreateObjectメソッド

機能

オブジェクトの新規作成

形式

// シングルファイル文書の場合
DmaBoolean  CreateObject (
 CdbrSession*           pDbrSession,
 DmaInteger32           lDMAInfoListCount,
 SDBR_DMAINFO*          pDMAInfoList,
 pDmaString_T           pFilePath,
 pDmaString_T           pRenditionType,
 ppDmaString_T          ppOIID,
 DmaInteger32           lCreateIndexFlg = DBR_CREATE_INDEX)
 
// マルチファイル文書の場合
DmaBoolean CreateObject(
 CdbrSession*    pDbrSession,
 DmaInteger32    lDMAInfoListCount,
 SDBR_DMAINFO*   pDMAInfoList,
 SDBR_PATHLIST&  PathList,
 pDmaString_T    pRenditionType,
 ppDmaString_T   ppOIID)
 
// リファレンスファイル文書の場合
DmaBoolean CreateObject(
 CdbrSession*              pDbrSession,
 DmaInteger32              lDMAInfoListCount,
 SDBR_DMAINFO*             pDMAInfoList,
 SDBR_REFERENCE_PATHINFO&  ReferencePath,
 pDmaString_T              pRenditionType,
 ppDmaString_T             ppOIID)
 
// File Link文書の場合
DmaBoolean CreateObject(
 CdbrSession*             pDbrSession,
 DmaInteger32             lDMAInfoListCount,
 SDBR_DMAINFO*            pDMAInfoList,
 SDBR_FILELINK_PATHINFO&  FileLinkPath,
 pDmaString_T             pRenditionType,
 ppDmaString_T            ppOIID)
 
// プロパティ構造体
struct SDBR_PROP {
 DmaId              PropId;              // プロパティ識別子
 DmaInteger32       lType;               // データ型
 DmaInteger32       lCardinality;        // 基本単位
 DmaInteger32       lCount;              // 要素数
 union {                                 // プロパティの値
   pDmaBoolean      pbBoolean;           // Boolean型
   pDmaInteger32    plInteger32;         // Integer32型
   pDmaId           pId;                 // ID型
   pDmapv           ppObject;            // Object型
   ppDmaString_T    ppString;            // String型
 } uniValue;
};

// プロパティリスト構造体
struct SDBR_PROPLIST {
   DmaInteger32      lCount;
   SDBR_PROP*        pItem;
};
 
// DMAオブジェクト生成用の構造体
struct SDBR_DMAINFO {
 DmaId                  ClassId;
 SDBR_PROPLIST          PropList;
};
 
// ファイルパス情報構造体
struct SDBR_PATHINFO {
 pDmaString_T      pFilePath;       // ファイルのURL
 pDmaString_T      pComponentType;  // ファイルを識別する文字列
};
 
// ファイルパス情報リスト構造体
struct SDBR_PATHLIST {
 DmaInteger32      lCount;          // 登録ファイル数
 SDBR_PATHINFO*    pItem;           // ファイルパス情報構造体のポインタ
};
 
// リファレンスパス情報構造体
struct SDBR_REFERENCE_PATHINFO {
 DmaInteger32  lContentOperateMode; // 操作モード
 pDmaString_T  pEntry;              // ファイルのパスおよびロケーション
 pDmaString_T  pTargetPath;         // コンテント格納先パス
 pDmaString_T  pDeleteRootPath;     // 削除ディレクトリのルートパス
};
 
// File Linkパス情報構造体
struct SDBR_FILELINK_PATHINFO {
 pDmaString_T  pFilePath;          // 登録ファイルまたはディレクトリのURL
 pDmaString_T  pFamName;           // FAM名
 pDmaString_T  pFamFilePath;       // コンテント保管先パス
 DmaInteger32  lContentDeleteMode; // コンテント削除モード
 DmaInteger32  lFileNamingMode;    // コンテント名自動生成モード
};

詳細

オブジェクトを新規に作成するメソッドです。

SetOIIDメソッドもしくはConnectObjectメソッドによってオブジェクトとすでに接続されている場合,またはこのメソッドがすでにコールされている場合は,既存の接続は変更されずに,このメソッドのコールがエラーになります。接続を終了するには,ReleaseObjectメソッドを実行してください。

Windowsの場合,次のことに注意してください。

シングルファイル文書の場合
作成するオブジェクトが次の条件に当てはまる場合に,lCreateIndexFlgにDBR_CREATE_INDEXを指定すると,全文検索インデクスを作成できます。
  • DMAオブジェクト生成用の構造体である,SDBR_DMAINFO構造体のClassIdに,dmaClass_DocVersionクラスのサブクラスとして全文検索機能付き文書クラスが指定されている。
  • RenditionTypeがテキスト型(MIME::text/plain,MIME::text/sgmlまたはMIME::text/html)である。
ファイルの登録が正常に完了すると,パス名を除いたファイル名がRetrievalNameプロパティに設定されます。例えば,UNIXの場合にパス名が"file:///tmp/sample.doc"のファイルを登録すると,RetrievalNameプロパティには"sample.doc"が設定されます。Windowsの場合にパス名が"file:///c:¥temp¥sample.doc"のファイルを登録すると,RetrievalNameプロパティには"sample.doc"が設定されます。
UNIXの場合に,CdbrVersionableDocumentオブジェクトを新規に作成して接続する例を次に示します。この例では,DMAオブジェクトのConfigurationHistoryオブジェクトの基になるクラスの識別子「ClassID_ConfHist」およびDMAオブジェクトのDocVersionオブジェクトの基になるクラスの識別子「ClassID_DocVer」を指定して,CdbrVersionableDocumentオブジェクトを新規に作成します。そして,ファイル/tmp/sample.txtを,RenditionType"MIME::text/plain"で登録して,そのポインタを取得します。なお,Windowsの場合は,ファイルc:¥temp¥sample.txtを登録する例として,例中の"file:///tmp/sample.txt"を"file:///c:¥temp¥sample.txt"と読み替えてください。
CdbrVersionableDocumentオブジェクトを新規に作成して接続する例

// 変数宣言
CdbrVersionableDocument DbrVerDoc;
SDBR_DMAINFO           DMAClassList[2];
pDmaString              pOIID;

// DMAクラス情報の作成
DMAClassList[0].ClassId = ClassID_ConfHist;
DMAClassList[0].PropList.pItem = NULL;
DMAClassList[0].PropList.lCount = 0;
DMAClassList[1].ClassId = ClassID_DocVer;
DMAClassList[1].PropList.pItem = NULL;
DMAClassList[1].PropList.lCount = 0;
// オブジェクトの新規作成
DbrVerDoc.CreateObject(pDbrSession,
   2, DMAClassList,
   "file:///tmp/sample.txt", "MIME::text/plain", &pOIID,
   DBR_CREATE_INDEX);

マルチファイル文書の場合
登録するコンテントの情報として,SDBR_PATHLIST構造体を指定します。
マルチファイル文書を作成する場合は,次のことに注意してください。
  • マルチファイル文書では,テキストファイルの部分が特定できないため,全文検索用インデクスは作成されません。全文検索インデクスを作成する場合,テキスト部分を抽出したファイルを,CreateIndexメソッドの引数に指定して実行してください。なお,マルチファイル文書の場合,CreateIndexメソッドの引数にNULLを指定するとERR_CONTENTTYPE_MISMATCHのエラーになります。
  • dbrProp_RetrievalNameプロパティに値を設定する場合は,SDBR_DMAINFO構造体のメンバPropListに設定されたSDBR_PROPLIST構造体に設定してください。SDBR_PROPLIST構造体にdbrProp_RetrievalNameを設定していない場合,データベースにはNULL値が格納されます。
  • SDBR_PATHLIST構造体のlCountに指定したファイル数より,SDBR_PATHINFOの配列の個数が多い場合は,lCountに指定したファイル数分のファイルが登録されます。
  • 同じファイル名を持つコンテントを格納しようとした場合は,ERR_RETRIEVALNAME_DUPLICATEDのエラーになります。なお,ファイル名は,英字の大文字と小文字を区別して比較されます。
  • SDBR_PATHLIST構造体のlCountが1の場合で,コンテントを格納するオブジェクトしてdmaClass_ContentTransferオブジェクトを作成するときは,マルチファイル管理機能を使用しない場合の形式で,メソッドを実行してください。
リファレンスファイル文書の場合
登録するコンテントの情報として,SDBR_REFERENCE_PATHINFO構造体を指定します。
リファレンスファイル文書を作成する場合は,次のことに注意してください。
  • リファレンスファイル文書では,全文検索用インデクスは作成されません。全文検索インデクスを作成する場合,テキスト部分を抽出したファイルを,CreateIndexメソッドの引数に指定して実行してください。なお,リファレンスファイル文書の場合,CreateIndexメソッドの引数にNULLを指定するとERR_CONTENTTYPE_MISMATCHのエラーになります。
  • コンテントに登録するファイルの種類を表すレンディションタイプは,登録したファイルの拡張子からは設定されません。レンディションタイプは,CreateObjectメソッドの引数として明示的に指定してください。この引数に指定した値が,レンディションごとのファイルの種類を表すプロパティとして設定されます。
File Link文書の場合
登録するコンテントの情報として,SDBR_FILELINK_PATHINFO構造体を指定します。この構造体には,登録するコンテントとして,ファイルまたはディレクトリを指定できます。ディレクトリを指定した場合,指定したディレクトリおよびそのサブディレクトリ下のすべてのファイルをコンテントとして登録できます。また,すでにHiRDB File Linkで管理されているデータをコンテントとして登録することもできます。
File Link文書を作成する場合は,次のことに注意してください。
  • File Link文書では,全文検索用インデクスは作成されません。全文検索インデクスを作成する場合,テキスト部分を抽出したファイルを,CreateIndexメソッドの引数に指定して実行してください。なお,File Link文書の場合,CreateIndexメソッドの引数にNULLを指定するとERR_CONTENTTYPE_MISMATCHのエラーになります。
  • コンテントに登録するファイルの種類を表すレンディションタイプは,登録したファイルの拡張子からは設定されません。レンディションタイプは,CreateObjectメソッドの引数として明示的に指定してください。この引数に指定した値が,レンディションごとのファイルの種類を表すプロパティとして設定されます。
  • このメソッドで,ERR_FILELINK_FAILEDのエラーが発生した場合は,詳細メッセージにHiRDB File Linkが出力するエラー情報が出力されます。HiRDB File Linkが出力するエラーを参照して,対処してください。

引数

pDbrSession(入力)

CdbrSessionオブジェクトを指定します。

lDMAInfoListCount(入力)

pDMAInfoListで指定した配列の個数を指定します。

1を指定した場合は,edmClass_VersionTracedComponentDocVersionクラスを使用してDocVersionオブジェクトが作成されます。

0を指定した場合は,pDMAInfoListの内容は無視され,edmClass_VersionTracedComponentDocVersionクラスを使用してDocVersionオブジェクトが作成されます。また,dmaClass_ConfigurationHistoryクラスを使用してConfigurationHistoryオブジェクトが作成されます。

負の数を指定した場合は,エラーになります。

pDMAInfoList(入力)

オブジェクトの構成要素として新規に作成するDMAオブジェクトの情報である,SDBR_DMAINFO構造体を格納した構造体の配列を指定します。

DMAオブジェクトの情報としてpDMAInfoList[0]にはdmaClass_ConfigurationHistoryクラスまたはそのサブクラスの情報,pDMAInfoList[1]にはdmaClass_DocVersionクラスまたはそのサブクラスの情報を指定してください。

lDMAInfoListCountが正の整数のときにpDMAInfoListにNULLを指定すると,エラーになります。

SDBR_DMAINFO構造体については,「付録C.1(3) SDBR_DMAINFO構造体(DMAオブジェクト生成用の構造体)」を参照してください。

プロパティ情報を指定するSDBR_PROPLIST構造体およびSDBR_PROP構造体については,「付録C.1(14) SDBR_PROPLIST構造体(プロパティリスト構造体)」および「付録C.1(12) SDBR_PROP構造体(プロパティ構造体)」を参照してください。

なお,VariableArray型プロパティを設定するとき,次の場合はエラーになります。このとき,major_codeとしてERR_DMA,minor_codeとしてDMARC_BAD_VALUEが返却されます。

それぞれのデータ型に対応する値の範囲については,マニュアル「DocumentBroker Version 3 システム導入・運用ガイド」を参照してください。

PathList(入力)

登録するファイルのファイルパス情報が設定されたSDBR_PATHLIST構造体を指定します。ファイルパス情報リスト構造体については,「付録C.1(11) SDBR_PATHLIST構造体(ファイルパス情報リスト構造体)」を参照してください。

pFilePath(入力)

登録するファイルのパス名を指定します。パス名はURL形式で設定します。例えば,UNIXの場合,ファイル"/tmp/sample.doc"を登録するには,"file:///tmp/sample.doc"と指定します。Windowsの場合,ファイル"c:¥temp¥sample.doc"を登録するには,"file:///c:¥temp¥sample.doc"と指定します。有効なプロトコルは"file:"だけです。これ以外のプロトコルを指定した場合または指定を省略した場合はエラーになります。NULLを指定した場合,ファイルは登録されません。

pRenditionType(入力)

RenditionTypeを表す文字列を指定します。例えばHTML文書の場合は,"MIME::text/html"などとします。

NULLを指定した場合,ファイルの拡張子からRenditionTypeを決定する処理はされません。したがって,RenditionTypeには何も設定されません。

ppOIID(出力)

作成したCdbrVersionableDocumentオブジェクトのOIIDへのポインタが設定されます。ポインタを格納する領域を指定してください。なお,*ppOIIDがポイントするメモリは,ユーザプログラムでは解放しないでください。

lCreateIndexFlg(入力)

全文検索インデクスを作成するかどうかを指定します。次のどちらかを指定してください。省略した場合は,DBR_CREATE_INDEXを指定したものとして処理されます。

なお,SDBR_DMAINFO構造体のClassIdに全文検索機能付きクラス以外のクラスを指定して作成した場合またはファイルのRenditionTypeがテキスト型でない場合は,lCreateIndexFlgの値は無視されます。

ReferencePath(入力)

リファレンスファイル文書を登録するために必要な情報を格納した,SDBR_REFERENCE_PATHINFO構造体を指定します。リファレンスファイル文書を登録するには,SDBR_REFERENCE_PATHINFO構造体のメンバlContentOperateModeにDBR_OPERATEMODE_USER_RELATIVE_CONTENTを指定し,pEntryに登録するファイルのパス名をURL形式で指定します。また,SDBR_REFERENCE_PATHINFO構造体のメンバpTargetPathに,コンテント格納先パスを,CdbrSession::SetReferencePathメソッドで設定したコンテント格納先ベースパスを基点とする相対パスで指定します。DocumentBrokerサーバがWindowsの場合UNC形式のパスで指定することもできます。

なお,lContentOperateModeにDBR_OPERATEMODE_NONEを指定した場合,コンテントがないオブジェクトが作成されます。

このメソッドを実行する場合,次に示すことに注意してください。

また,pTargetPathで指定するコンテント格納先パスの中に,カレントディレクトリの一つ上位のディレクトリを示す".."は指定できません。指定した場合,DMARC_BAD_PARAMETERのエラーになります。

リファレンスファイル文書を登録する場合,SDBR_REFERENCE_PATHINFO構造体のメンバpDeleteRootPathへの値の指定は,無効になります。

SDBR_REFERENCE_PATHINFO構造体に設定する内容については,「付録C.1(15) SDBR_REFERENCE_PATHINFO構造体(リファレンスパス情報構造体)」を参照してください。

FileLinkPath(入力)

File Link文書を登録するために必要な情報を格納した,SDBR_FILELINK_PATHINFO構造体を指定します。

なお,SDBR_FILELINK_PATHINFO構造体のメンバpFilePathとメンバpFamFilePathの両方にNULLを設定した場合には,登録コンテントがないオブジェクトが作成されます。

SDBR_FILELINK_PATHINFO構造体に設定する内容については,「付録C.1(5) SDBR_FILELINK_PATHINFO構造体(File Linkパス情報構造体)」を参照してください。

戻り値

DMA_TRUE  正常終了

DMA_FALSE 異常終了

戻り値の詳細

major_codeminor_code説明対処
ERR_CORBACORBAの戻り値が設定されます。CORBAでエラーが発生しました。ユーザプログラムでは対処できません。エラー情報として文字列の値を取得して,ユーザプログラムを終了してください。
ERR_DBERR_DB_DEADLOCK_OCCURREDデータベースでデッドロックが発生しました。時間を置いて,再度実行してください。
ERR_DBERR_DB_FAILEDデータベースで障害が発生しました。syslogを参照して,障害の原因を取り除いてください。
ERR_DBERR_DB_LOCKEDオブジェクトがロックされています。時間を置いて,再度実行してください。
ERR_DBRERR_ACCESS_NOT_PERMITTEDアクセス権がありません。この操作は実行できません。
ERR_DBRERR_BAD_CONTENTSCOUNT登録しようとするファイルの数が多過ぎます。登録するファイルの数を見直してください。
ERR_DBRERR_BAD_PERMISSION不正なパーミッションが指定されました。正しいパーミッションを指定してください。
ERR_DBRERR_BAD_SUBJECT_TYPE不正なサブジェクト種別が指定されました。正しいサブジェクト種別を指定してください。
ERR_DBRERR_FAL_NOT_LOADEDHiRDB File Linkのライブラリがロードできません。
  • 詳細メッセージを基に対処してください。
ERR_DBRERR_FILELINK_FAILEDHiRDB File Linkでエラーが発生しました。
  • 詳細メッセージを基に対処してください。
ERR_DBRERR_FILE_REFERENCE_OPERATION_FAILEDリファレンスファイル管理機能で扱うサーバマシンでのコンテントの操作でエラーが発生しました。詳細メッセージを基に対処してください。
ERR_DBRERR_INVALID_ACE不正なアクセス制御エレメント(ACE)が指定されました。ACEとして正しいCdbrCompoundオブジェクトを指定してください。
ERR_DBRERR_INVALID_ACE_COUNT設定するアクセス制御エレメント(ACE)の個数が制限値を超えています。ACEは64個以内で指定してください。
ERR_DBRERR_INVALID_PUBLICACL_COUNTバインドするパブリックACLの個数が制限値を超えています。パブリックACLは10個以内で指定してください。
ERR_DBRERR_INVALID_STATUSセッションの状態が不正です。一つのセッションに同時に複数のメソッド処理要求が出されています。一つのセッションに対しては,一度に一つの処理要求しか出さないように見直してください。
ERR_DBRERR_INVALID_SUBJECT_LENGTHサブジェクトの長さが不正です。次に示す範囲内でサブジェクトを指定してください。
  • サブジェクトの種別がユーザ識別子の場合,1文字以上,ユーザ識別子の最大長以下の文字列を指定してください。
    ユーザ識別子の最大長は,通常254文字ですが,DocumentBrokerの環境設定時に512文字まで拡張できます。
  • サブジェクトの種別がグループ識別子の場合,1文字以上,グループ識別子の最大長以下の文字列を指定してください。
    グループ識別子の最大長は,通常254文字ですが,DocumentBrokerの環境設定時に512文字まで拡張できます。
  • サブジェクトの種別がシステムサブジェクトの場合,1文字以上,254文字以下の文字列を指定してください。
ユーザ識別子とグループ識別子の最大長を拡張する方法の詳細は,マニュアル「DocumentBroker Version 3 システム導入・運用ガイド」を参照してください。
ERR_DBRERR_NONEXISTS_PUBLICACL指定されたパブリックACLは存在しません。存在しないパブリックACLを指定しないで処理を再実行してください。
ERR_DBRERR_OBJECT_ALREADY_CONNECTEDオブジェクトはすでに接続されています。この操作は実行できません。
ERR_DBRERR_RETRIEVALNAME_DUPLICATEDRetrievalNameが重複して指定されています。RetrievalNameが重複しないように指定してください。
ERR_DBRERR_SESSION_NOT_CONNECTセッションが接続されていません。セッションを接続してください。
ERR_DBRERR_TARGETCONTENTPATH_NOT_SETリファレンスファイル管理機能で,コンテント格納先ベースパスが設定されていません。または,UNC形式のパスの場合(Windowsだけ),コンテント格納先ベースパスにコンピュータ名またはIPアドレスだけが使用されています。コンテント格納先ベースパスを設定してください。
ERR_DMADMARC_ACCESS_DENIED要求された操作に対してアクセス権がありません。正しいアクセス権を設定してください。
ERR_DMADMARC_BAD_CLASSID指定された識別子は,利用できるオブジェクトのクラスではありません。正しいクラス識別子を指定してください。
ERR_DMADMARC_BAD_PARAMETER不正な引数が入力されました。正しい引数を指定してください。
ERR_DMADMARC_BAD_PROPIDプロパティの識別子が不正です。正しいプロパティ識別子を指定してください。
ERR_DMADMARC_BAD_URLリソースのURLが不正です。URLの内容を見直してください。
ERR_DMADMARC_BAD_VALUE次のどれかの要因が考えられます。
  1. プロパティやリストの値が,許容範囲外の値であるか,または最大値を超えました。
  2. VariableArray型プロパティに設定する可変長配列の要素数が最大値を超えました。
  3. docspace.iniの[Entry0001]セクションに「VArrayElementCheck=Yes」の定義がある場合に,VariableArray型プロパティの要素の値が,許容範囲外の値であるか,または最大値を超えました。
次のどれかの方法で対処してください。
  1. プロパティやリストの値の範囲を見直してください。
  2. VariableArray型プロパティに設定する可変長配列の要素数を見直してください。
  3. VariableArray型プロパティの要素の値の範囲を見直してください。
ERR_DMADMARC_DATATYPE_MISMATCHプロパティのデータ型に適切ではないメソッドです。正しい型を指定してください。
ERR_DMADMARC_NO_MEMORYメモリ不足で実行できません。メモリを増設してください。またはメモリを大量に消費しているアプリケーションを停止させて,処理を再実行してください。
ERR_DMADMARC_NOT_SUPPORTEDこのセッションまたはオブジェクトではサポートされていないメソッドです。この操作は実行できません。
ERR_DMADMARC_READ_ONLY読み取り専用のオブジェクトまたはプロパティのため,異常終了しました。このプロパティの値は更新できません。
ERR_DMADMARC_RESOURCE_NOT_FOUND指示されたリソースが見つかりません。正しいリソースを指定してください。
ERR_DMADMARC_UNEXPECTED予期しないエラーが発生しました。処理を終了してください。
ERR_DMADMARC_URL_PROTOCOL_NOT_SUPPORTEDサポートしていないURLプロトコルです。file:///で始まっているか確認してください。
ERR_DMAEDMRC_FTPSERVICE_LOST_CONNECTIONファイル転送サービスへのセッションが切断されました。ネットワーク環境を確認してください。または,時間を置いて,再度実行してください。
ERR_DMAEDMRC_FTPSERVICE_MAX_SESSIONファイル転送サービスに同時に接続できるセッション数の上限に達しています。時間を置いて,Connectユーザ数が減ったあと,再度実行してください。または,ファイル転送サービス環境定義ファイルのFtpSessionMaxエントリを見直してください。
ERR_DMAEDMRC_FTPSERVICE_NOT_AVAILABLEファイル転送サービスが利用できません。サーバのバージョンに対応したクライアントを利用してください。
ERR_DMAEDMRC_NO_FTPSERVICE使用できるファイル転送サービスがありません。
  • ネットワーク環境を確認してください。
  • _HIEDMS_FTPMODE=STATICを指定してファイル転送サービスを起動しているかどうかを,確認してください。
  • 時間を置いて,再度実行してください。
  • ファイル転送サービスのセットアップコマンドを実行しているかどうかを,確認してください。