Asakusa Framework0.7.5のDirect I/Oのテキストファイル連携のメモ。
AsakusaFW 0.7.5で、Direct I/Oでテキストファイルを1行ずつ読み書きする機能がサポートされ、AsakusaFW 0.8.1で正式機能となった。[/2016-07-31]
カンマの入ったデータや改行無しのJSONを読み込んだりするのに使える。(当然、そのデータのパースは自分で行う必要がある)
AsakusaFW 0.7.5〜0.8.0ではサンドボックスの機能なので、build.gradleに依存ライブラリーを指定する必要がある。[/2016-07-31]
AsakusaFW 0.8.1以降は正式機能となったので、build.gradleに特に何かを記述する必要はない。
→テキストファイル連携機能を使わず、自前で1行ずつ読み書きする方法
AsakusaFW 0.7.5〜0.8.0では、Direct I/Oテキスト連携機能はサンドボックスの機能なので、build.gradleに依存ライブラリーを指定する必要がある。[/2016-07-31]
〜 dependencies { compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-core', version: asakusafw.asakusafwVersion compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-directio', version: asakusafw.asakusafwVersion compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-windgate', version: asakusafw.asakusafwVersion compile group: 'com.asakusafw.sandbox', name: 'asakusa-directio-dmdl-ext', version: asakusafw.asakusafwVersion 〜 }
AsakusaFW 0.8.1以降では、(Direct I/O lineの為には)これを記述する必要は無い。[2016-07-31]
テキストファイルを読み書きする為のデータモデルを用意する。
データモデル名は何でもよいが、@directio.line属性を付ける。
また、1行分のデータを扱う項目として、TEXT型のプロパティーが1つ必要になる。
データモデル内にTEXT型のプロパティーが1つだけであれば特に何も付けなくてよい(@directio.line.bodyを付けてもよい)が、2つ以上ある場合は、1つだけに@directio.line.body属性を付ける必要がある。
(余分な項目はファイルの読み書き時には無視される)
@directio.line text_example = { "1行分のテキスト" @directio.line.body line : TEXT; };
これでDMDLのコンパイルを行うと、「Abstractモデル名LineInputDescription」「Abstractモデル名LineOutputDescription」といったImporter/Exporterの抽象クラスが作られる。
このデータモデルを使ったフローのテストを記述する場合、テストフレームワーク自身はdirectio.lineであることを特別扱いしないので注意。
すなわち、@directio.line.bodyを付けた以外の項目がある場合、テストデータのExcelファイルでは、それらの項目は使わないようにする必要がある。
(それらの項目は、データのシートでは何も記述しない。検証ルールのシートでは、検査対象外にする)