圧縮されている従業員データから、勤務地が東京の従業員を抽出し、結果を圧縮して保存します。
図7.6 統合コマンドの処理概要(外部コマンドの使用)
入力データから目的のデータを取得するために必要な処理とファイルについて説明します。
順番 | 使用する機能 | 処理内容 | 入力 | 出力 |
---|---|---|---|---|
1 | 外部コマンド | 圧縮ファイルを解凍する | 従業員データ | 従業員データ |
2 | 抽出機能 | 勤務地が東京の従業員情報を抽出する | 1の結果 | 勤務地が東京の従業員データ |
3 | 外部コマンド | ファイルを圧縮する。 | 2の結果 | 勤務地が東京の従業員データ |
設計した内容を、統合定義ファイルに定義していきます。
データの文字コード、ログファイル名を定義します。
使用する外部コマンド(bzip2)を外部コマンド定義部に定義します。
圧縮・解凍を行う実行プラグラムとして、“/usr/bin/bzip2”を使用し、統合定義ファイル内で識別するために“bzip2”という名前をつけます。
このプログラムは、正常時に終了ステータス0を返すため、TerminationStatusタグのtype属性に“normal”を指定します。異常時に標準エラー出力にエラー文字列を出力するため、Messageタグのtransmit属性に“true”、protocol属性に“string”を指定します。
各処理の定義を処理条件定義部に定義します。
ここでは、3つの処理を実行するので、それぞれを定義します。
実行順序を、シナリオ定義部に定義します。
処理は順番に指定します。Type属性を省略した場合は、“serial”が指定されたものとみなします。
統合定義ファイルの例
統合定義ファイルの指定例を以下に示します。
Linux/Solarisの場合(deconfig2.xml)
<?xml version="1.0" encoding="utf-8"?> <DataEffector> <!-- 共通定義部 --> <CommonCfg> <Data CharacterCode="UTF-8" /> <LogFile>/home/shun/Sample2/log/all.log</LogFile> </CommonCfg> <!-- 外部コマンド定義部 --> <CommandDefinitions> <CommandDefinition CommandId="bzip2" ExecutableFile="/usr/bin/bzip2"> <TerminationStatus Type="normal" /> <Message Transmit="true" Protocol="string" /> </CommandDefinition> </CommandDefinitions> <!-- 圧縮ファイルの解凍 --> <!-- 処理条件定義部:外部コマンド --> <ExternalCommand CommandId="bzip2" Name="decompress"> <Arguments> <Argument>-d</Argument> <Argument>-k</Argument> <Argument>data/Employee.csv.bz2</Argument> </Arguments> </ExternalCommand> <!--処理条件定義部:Select --> <Select Name="select"> <BaseDirectory>/home/shun/Sample2</BaseDirectory> <DataFile> <File>data/Employee.csv</File> </DataFile> <SkipChar>\s, \t,\S</SkipChar> <SeparateChar>\s,\t</SeparateChar> <ANKmix Flag="true" /> <KNJmix Flag="true" /> <OutCondition SearchNumber="1"> <Query>$AREA = '東京'</Query> <OutFile>data/select_kekka.csv</OutFile> </OutCondition> </Select> <!-- CSVファイルの圧縮 --> <!-- 処理条件定義部:外部コマンド --> <ExternalCommand CommandId="bzip2" Name="compress"> <Arguments> <Argument>-z</Argument> <Argument>data/select_kekka.csv</Argument> </Arguments> </ExternalCommand> <!-- シナリオ定義部 --> <Scenario Name="Scenario2"> <Step>decompress</Step> <Step>select</Step> <Step>compress</Step> </Scenario> </DataEffector> |
統合コマンドにシナリオ名:Scenario2を指定して実行します。
Windowsの場合
> deex -p Scenario2 -f D:\Shunsaku\cfg\deconfig2.xml |
Linux/Solarisの場合
# deex -p Scenario2 -f /home/shun/cfg/deconfig2.xml |