S-JIS[2015-12-05/2016-07-31] 変更履歴

Asakusa Framework Direct I/Oテキストファイル連携

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]

build.gradle:

〜
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属性を付ける必要がある。
(余分な項目はファイルの読み書き時には無視される)

src/main/dmdl/example.dmdl:

@directio.line
text_example = {

    "1行分のテキスト"
    @directio.line.body
    line : TEXT;
};

これでDMDLのコンパイルを行うと、「Abstractモデル名LineInputDescription」「Abstractモデル名LineOutputDescription」といったImporter/Exporterの抽象クラスが作られる。


このデータモデルを使ったフローのテストを記述する場合、テストフレームワーク自身はdirectio.lineであることを特別扱いしないので注意。

すなわち、@directio.line.bodyを付けた以外の項目がある場合、テストデータのExcelファイルでは、それらの項目は使わないようにする必要がある。
(それらの項目は、データのシートでは何も記述しない。検証ルールのシートでは、検査対象外にする)


Direct I/Oへ戻る / AsakusaFW目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま