統合定義ファイルは、XML形式の文書で記述します。
統合定義ファイルは、ルートタグ、共通定義部、外部コマンド定義部、処理条件定義およびシナリオ定義部から構成されます。
図5.10 統合定義ファイルの構成要素
注意
統合定義ファイルは、UTF-8で記述してください。
処理条件定義部には、1つ以上の処理名が定義されている必要があります。
統合定義ファイルに記述できるシナリオの数は1つです。
Data Effectorタグを記載します。省略できません。
CommonCfgタグ配下です。データの文字コードやログファイルの指定など、共通の定義を記述します。
本定義部を省略した場合、すべて省略時の振る舞いとなります
CommandDefinitionsタグ配下です。外部のコマンドを使用する場合の条件を記述します。
外部コマンドを使用しない場合、本定義は指定する必要ありません。
処理条件定義部
実行したい処理の条件を定義します。以下の構成要素がありますので、必要な処理のタグ情報を指定します。1つ以上の処理名が定義されている必要があります。
構成要素 | 用途 |
---|---|
Selectタグ | 抽出機能を使う場合に定義します、 |
Replaceタグ | 連結機能を使う場合に定義します。 |
Analyzeタグ | 集計機能を使う場合に定義します。 |
Sortタグ | ソート機能を使う場合に定義します。 |
ExternalCommandタグ | 外部のコマンドを使う場合に定義します。 |
Scenarioタグ配下です。処理条件定義部で指定した処理に付けるシナリオ名と、処理の実行順序を記述します。
処理をシナリオとして定義しない場合、本定義部は指定する必要ありません。
実行順序には、以下の2つがあります。
処理が完了してから次の処理を実行する方法で、複数の処理を順番に実行したい場合、StepGroupタグのType属性に“serial”を指定し、そのタグの子要素にStepタグで処理名を指定します。
Replace1→Select1→Sort1 の順番に実行する場合
<DataEffector> : <Scenario Name="Scenario1"> <StepGroup Type="serial"> <Step>Replace1</Step> <Step>Select1</Step> <Step>Sort1</Step> </StepGroup> </Scenario> </DataEffector> |
複数の処理を並列に同時に実行したい場合、StepGroupタグのType属性に“parallel”を指定し、そのタグの子要素にStepタグで処理名を指定します。
Replace1とSelect1とSort1を同時に実行する場合
<DataEffector> : <Scenario Name="Scenario1"> <StepGroup Type="parallel"> <Step>Replace1</Step> <Step>Select1</Step> <Step>Sort1</Step> </StepGroup> </Scenario> </DataEffector> |
統合定義ファイルは、UTF-8で記述してください。
統合定義ファイルに記述された内容は、統合コマンドが統合定義ファイルのDataタグのCharacterCode属性に指定した文字コードに変換します。
Data Effectorが動作する環境にInterstage Charset Managerがインストールされているかどうかで、DataタグのCharacterCode属性に指定できる値が変わります。
Interstage Charset Managerの有無 | |
---|---|
未インストール | インストール済 |
OSに標準で添付されているiconvを使用します。データの文字コードは以下を指定できます。
(注) | Interstage Charset Managerを使用します。データの文字コードは以下を指定できます。
|
注) SHIFT-JISを指定した場合は、SHIFT-JISを使用して変換します。EUCを指定した場合はEUC-JPを使用して変換します。
参照
使用できるInterstage Charset Managerのバージョンについては、“利用ガイド”の“関連ソフトウェア”を参照してください。
統合コマンドでは、処理単位の実行とシナリオの実行ができます。
統合コマンドで処理名を指定した場合は、統合定義ファイルの処理条件定義部の情報に従って処理を実行します。
統合コマンドでシナリオ名を指定した場合は、統合定義ファイルのシナリオ定義部の情報に従って処理を実行します。処理の実行の方法は、以下があります。
指定した順番に処理を実行する
指定した処理を並列に処理を実行する
上記の組合せ
実行中の処理でエラーが発生した場合は、以下のように動作します。
エラーが発生した処理の次以降の処理は実行されません。
エラーが発生した時点で並列実行中の処理が存在した場合、並列実行中の処理は中断します。
処理の結果が警告だった場合に、その次以降の処理を続行したい場合、または中断したい場合は、統合定義ファイル内のタグの属性値を指定することで選択できます。(シナリオ定義部のScenarioタグのIgnoreWarning属性で指定できます)
ポイント
シナリオ定義部には、処理条件定義部で定義した処理名のうち、必要な処理だけを選択できます。
以下の場合、処理Aと処理Bだけ実行されて、処理Cは実行されません。
処理条件定義部に、処理A、処理Bおよび処理Cを定義する
シナリオ定義部に、処理A、処理Bを実行するシナリオXを定義する
deexコマンドの-pオプションにシナリオXを指定する
統合コマンドでは、各コマンドの入出力情報を動作ログとして採取できます。
統合コマンドの動作ログには、以下の情報を採取できます。
コマンドの呼出しシーケンス
コマンドと発生したエラー情報
コマンドの実行時間
ログは、統合コマンド実行ごとに同一のファイルに出力します。
ログファイルの採取
ログファイルを採取する場合は、統合定義ファイルの共通定義部のLogFileタグを指定します。
ログファイルは、指定されたログファイルが存在しない場合には新規に作成します。指定されたログファイルが存在する場合には、追記出力します。
ログファイルは、100メガバイトのサイズを契機に循環利用します。
1世代前のログファイルはファイル名に“_old”を付加して保存されます。
すでに“ログファイル名_old”が存在する場合には、上書きされます。
注意
共通定義部のLogFileタグに指定したログと、各処理条件定義部のLogFileタグを指定したログは採取する情報が異なります。
各コマンドで採取される情報については“2.8 ログファイル”を参照してください。
指定例
<DataEffector> <CommonCfg> <LogFile>/home/shunsaku/log/all.log</LogFile> <CommonCfg> : </DataEffector> |
ログファイルに採取される情報
ログファイルに採取される情報について説明します。
●統合コマンドが正常終了したときのメッセージ
YYYY/MM/DD hh:mm:ss [thread:スレッド番号] [INF][deex] Command execute. process name : [処理名].(注1) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] [INF][deex]process [処理名] exec time : [処理時間] sec.(注2) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] shnde: INFO: 06011: Sub processing has been completed. Process name = [処理名]. (deex)(注3) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] shnde: INFO: 01000: Processing has been completed. (deex) (注4) |
スレッド番号は、処理のスレッド番号を出力します。
処理名には、処理条件定義部のName属性で設定した処理名を出力します。
処理時間には、処理の実行時間を出力します。単位は秒です。
注1) 処理の開始メッセージです。処理ごとに、出力します。
注2) 処理の終了メッセージです。処理ごとに、出力します。
注3) 処理の正常終了メッセージです。処理ごとに、出力します。
注4) 統合コマンドの正常終了メッセージです。1回だけ、出力します。
●統合コマンドが異常終了したときのメッセージ
YYYY/MM/DD hh:mm:ss [thread:スレッド番号] [INF][deex] Command execute. process name : [処理名].(注1) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] [INF][deex]process [処理名] exec time : [処理時間] sec.(注2) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] shnde: INFO: 06012: Sub processing has been aborted. Details are following. Process name = [処理名]. (deex)(注3) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] shnde: [異常事象のメッセージ]・・・(注4) YYYY/MM/DD hh:mm:ss [thread:スレッド番号] shnde: INFO: 06010: The processing has been stopped because sub processing has terminated abnormally. (deex) (注5) |
スレッド番号は、処理のスレッド番号を出力します。
処理名には、処理条件定義部のName属性で設定した処理名を出力します。
処理時間には、処理の実行時間を出力します。単位は秒です。
注1) 処理の開始メッセージです。処理ごとに、出力します。
注2) 処理の終了メッセージです。処理ごとに、出力します。
注3) 処理の異常終了メッセージです。処理ごとに、出力します。
注4) 処理異常時の詳細メッセージです。処理ごとに、出力します。メッセージの意味と処置については、“メッセージ集”を参照してください。
注5) 統合コマンドの異常終了メッセージです。1回だけ、出力します。
ポイント
メモリ使用量(一時的に使用したメモリ量のピーク値)は、各コマンドのログを採取することで確認できます。
各コマンドのログは、処理条件定義部のLogFileタグで指定します。
出力例
処理名:select_1が正常終了した場合
2010/05/01 10:20:30 [thread:1000] [INF][deex]Command execute. process name : [select_1]. |
処理名:select_2が異常終了した場合
2010/05/01 10:20:30 [thread:2000] [INF][deex]Command execute. process name : [select_2]. 2010/05/01 10:20:31 [thread:2000] [INF][deex]process [select_2] exec time : [0.032] sec. 2010/05/01 10:20:31 [thread:2000] shnde: INFO: 06012: Sub processing has been aborted. Details are following. Process name = select_2. (deex) 2010/05/01 10:20:31 [thread:2000] shnde: ERROR: 06512: There is an error with one of the values specified in parameters in the file. Parameter = /DataEffector/Select/@ParallelNum; Line number = 8. (deex) 2010/05/01 10:20:31 [thread:2000] shnde: INFO: 06010: The processing has been stopped because sub processing has terminated abnormally. (deex) |
2つの処理(syori1,syori2)を並列実行し、正常終了した場合
2010/05/01 10:20:30 [thread:3000] [INF][deex]Command execute. process name : [syori2]. 2010/05/01 10:20:30 [thread:3300] [INF][deex]Command execute. process name : [syori1]. 2010/05/01 10:20:30 [thread:3000] [INF][deex]process [syori2] exec time : [0.016] sec. 2010/05/01 10:20:30 [thread:3000] shnde: INFO: 06011: Sub processing has been completed. Process name = syori2. (deex) 2010/05/01 10:20:30 [thread:3300] [INF][deex]process [syori1] exec time : [0.016] sec. 2010/05/01 10:20:30 [thread:3300] shnde: INFO: 06011: Sub processing has been completed. Process name = syori1. (deex) 2010/05/01 10:20:30 [thread:3350] shnde: INFO: 01000: Processing has been completed. (deex) |
2つの処理(syori1,syori2)を並列実行し、どちらかが異常終了した場合
2010/05/01 10:21:50 [thread:4000] [INF][deex]Command execute. process name : [syori2]. 2010/05/01 10:21:50 [thread:4020] [INF][deex]Command execute. process name : [syori1]. 2010/05/01 10:21:50 [thread:4020] [INF][deex]process [syori1] exec time : [0.000] sec. 2010/05/01 10:21:50 [thread:4020] shnde: INFO: 06012: Sub processing has been aborted. Details are following. Process name = syori1. (deex) 2010/05/01 10:21:50 [thread:4020] shnde: ERROR: 05126: The specified path is not available. Path name = /data/select/xxxschema_selectSample_utf8.csv; Path type = schema file; System call = stati64; Error number = 2. (deex) 2010/05/01 10:21:50 [thread:4400] shnde: INFO: 06014: Sub processing has been aborted by deex. Process name = syori2.(deex) 2010/05/17 13:27:54 [thread:3080] shnde: INFO: 06010: The processing has been stopped because sub processing has terminated abnormally. (deex) |