EssAsyncBuildDim

非同期次元構築要求を発行します。

非同期データ・ロードおよび次元構築を使用する場合、このプロセス中に次の情報をクエリーできます:

構文

            ESS_FUNC_M EssAsyncBuildDim(
            hCtx, RulesObj, DataObj, MbrUser, bOverwrite, usBuildOption, szTmpOtlFile
            )
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

APIコンテキスト・ハンドル。

RulesObj

ESS_POBJDEF_T

ルール・ファイル・オブジェクト定義構造体へのポインタ。

DataObj

ESS_POBJDEF_T

データ・ファイル・オブジェクト定義構造体へのポインタ。

MbrUser

ESS_PMBRUSER_T

SQLユーザー構造体(データ・ソースがSQLデータベースの場合)。

SQLユーザー構造体がNULLの場合は、SQL以外のデータ・ソースを示します。

bOverwrite

ESS_BOOL_T

ブール。値:

  • ESS_TRUE - 既存のエラー・ファイルを上書きします。

  • ESS_FALSE - 上書きしません。既存のエラー・ファイルに追加します。

usBuildOption

ESS_USHORT_T

有効な値:

  • ESS_INCDIMBUILD_BUILD

    メンバーの構築のみ行います。

  • ESS_INCDIMBUILD_VERIFY

    メンバーを構築してアウトラインを確認します。

  • ESS_INCDIMBUILD_SAVEOTL

    メンバーを構築して、アウトラインを一時アウトライン・ファイルに保存します。

  • ESS_INCDIMBUILD_ALL

    メンバーを構築し、アウトラインを確認し、再構築します。

  • ESS_INCDIMBUILD_ABORT

    構築プロセスを中止します。

szTmpOtlFile

ESS_STR_T

一時アウトライン・ファイルの名前。拡張子またはパスは必要ありません。この回の次元構築で得られたアウトラインにアウトライン確認エラーがある場合、Essbaseは拡張子が.otbの一時アウトライン・ファイルをapp/dbディレクトリに作成します。

備考

この関数は、データ・オブジェクトがクライアント上にある場合はエラーを戻します。エラーが戻された場合でも、クライアントとサーバー間のネットワーク接続はアクティブなままです。

接続を閉じるには、EssCloseAsyncProcを呼び出す必要があります。接続を閉じていない場合、サーバー要求ハンドラにより、同じログイン・セッションからの後続の要求がブロックされます。

戻り値

正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。

         
void ESS_AsyncBuildDim()
{
	ESS_STS_T sts = 0;
	ESS_OBJDEF_T Rules;
	ESS_OBJDEF_T Data;
	ESS_PMBRUSER_T pMbrUser; 
	ESS_BOOL_T bOverwrite;
	ESS_USHORT_T usBuildOption;
	ESS_STR_T szTmpOtlFile;
	ESS_STR_T bldDimErrFile;
	ESS_STR_T asyncProcErrLog;
	ESS_BLDDL_STATE_T procState;
	ESS_BOOL_T errFileOverWrite;

	szAppName = "Sample";
	szDbName = "Basic";
	ESS_SetActive();
	
	AddMember("800");

	sts = EssBeginIncrementalBuildDim(hCtx);
	printf("EssBeginIncrementalBuildDim sts: %ld\n",sts);

	memset(&Rules,0,sizeof(ESS_OBJDEF_T));
	memset(&Data,0,sizeof(ESS_OBJDEF_T));
	Rules.hCtx     = hCtx;
	Rules.FileName = "apgeibl"; 
	Rules.AppName  = szAppName;
	Rules.DbName   = szDbName;
	Rules.ObjType  = ESS_OBJTYPE_RULES;
	Data.hCtx      = hCtx;
	Data.AppName   = szAppName;
	Data.DbName    = szDbName;
	Data.ObjType   = ESS_OBJTYPE_TEXT;    
	Data.FileName  = "apgeibl1";

	pMbrUser = ESS_NULL; 	   
	bOverwrite = ESS_TRUE; 
	usBuildOption = ESS_INCDIMBUILD_BUILD; 
	szTmpOtlFile = "asyncBldTmp";
	sts = EssAsyncBuildDim(hCtx, &Rules, &Data, pMbrUser, bOverwrite, usBuildOption, szTmpOtlFile);
	printf("EssAsyncBuildDim sts: %ld\n",sts);

	sts = EssGetAsyncProcLog (hCtx, ".\\AsyncProc.log", ESS_TRUE);
	printf("EssGetAsyncProcLog sts: %ld\n",sts);

	sts = EssGetAsyncProcState(hCtx, &procState);
	printf("EssGetAsyncProcState sts: %ld\n",sts);
	if(!sts)
	{
		do
		{
			DisplyProcesStateInfo(procState);
			if(procState.ilProcessStatus)
			{
				sts = EssCancelAsyncProc(hCtx, asyncProcErrLog, errFileOverWrite);
				printf("EssCancelAsyncProc sts: %ld\n",sts);
			}
			else
			{
				sts = EssGetAsyncProcState(hCtx, &procState);
				printf("EssGetAsyncProcState sts: %ld\n",sts);
			}

		}while(procState.usProcessState != ESS_BLDDL_STATE_DONE);
		
		if(!procState.ilProcessStatus)
		{
			sts = EssCloseAsyncProc(hCtx, &procState);
			printf("EssCloseAsyncProc sts: %ld\n",sts);
		}
	}

	bldDimErrFile = "F:\\testArea\\mainapi\\BldDim.err";
	sts = EssEndIncrementalBuildDim(hCtx, ESS_DOR_ALLDATA, szTmpOtlFile, bldDimErrFile, ESS_FALSE);
	printf("EssEndIncrementalBuildDim sts: %ld\n",sts);
}
      

関連トピック