asakusaFWを用いたバッチの実装について

80 views
Skip to first unread message

ico

unread,
Nov 20, 2013, 5:01:25 AM11/20/13
to us...@asakusafw.com
はじめまして。
 
業務で使用するためasakusaFWを勉強しはじめたのですが、
実際に設計・実装するに当たって不明な点が出てきましたのでご質問させていただきます。
# ASAKUSAの技術サイト等は一通り目を通したのですが、、、
# 基本的なことを聞いているようでしたら申し訳ありません。
 
前処理 →  主処理 → 後処理 の処理の流れを実現したいと思っています。
以下のような実装方法で実現できるのでしょうか?
それとも、別ツールで前処理を行った後に主処理となるバッチをキック、
プロセスが終了したら後処理を行う・・・という実装でないと実現できないでしょうか。
 
【実装例】
@Batch(name = "testBatch")
public class testBatch extends BatchDescription {
    @Override
    public void describe() {
       
        // 前処理
        doPreProcess();
 
        // 主処理
        Work aaa= run(FirstJob.class).soon();
        run(SecondJob.class).after(aaa);
 
        // 後処理
        doAfterProcess();
    }
}
 
 
後者の別ツールから主処理をキックする方法では動作の確認ができたのですが、
できればバッチ1本で実現できた方が望ましいとのため、試行錯誤している状態です。。
何かよい知恵がありましたらお貸しください。
 
なお、前処理、後処理では、空ファイルの作成、削除とログの出力処理
(← ・・・ についても実現できるのかまだ不明瞭ですが・・・) を行う予定です。
(空ファイルはバッチが実行中であるかを外部システムから判定するため作成します)
 
以上、どうぞよろしくお願いいたします。

KAWAGUCHI, Akira

unread,
Nov 21, 2013, 8:53:50 PM11/21/13
to us...@asakusafw.com
かわぐちです。

        // 前処理
        doPreProcess();
...
        // 後処理
        doAfterProcess();

BatchDescription#describeは
ジョブフロー間の関係を記述する用途にのみ使用できます。
BatchDescriptionが提供するメソッドやオブジェクト以外を使用しても
DSLコンパイル後にこれがMapReduceに変換されるわけではないので、
おそらく先の例で挙げたコードでは
意図した結果にはならないと思います。

現状ではYAESSコマンドでバッチを実行する前後で
前処理、後処理を入れるか、
前処理、後処理用のジョブフローを定義する
(これはおそらく用途に対してオーバーヘッドが高そうですが)
といった方法になるかと思います。

----
かわぐち

2013年11月20日水曜日 19時01分25秒 UTC+9 ico:

ico

unread,
Nov 21, 2013, 10:04:56 PM11/21/13
to us...@asakusafw.com
かわぐち様
 
ご返信ありがとうございます。
 
 
BatchDescription#describeは
ジョブフロー間の関係を記述する用途にのみ使用できます。
 
 
やはりそうなのですね。
Javaライクな書き方のようだったので、もしかしたら例に挙げたようなコードで
意図したことが実現ができるのかも・・・?と考えておりました・・・。
ありがとうございます。
 
 
現状ではYAESSコマンドでバッチを実行する前後で
前処理、後処理を入れるか、
前処理、後処理用のジョブフローを定義する
(これはおそらく用途に対してオーバーヘッドが高そうですが)
といった方法になるかと思います。
 
そうですね、前者のYAESSコマンド実行の前後で前処理、後処理を入れて
実装する方向で考えたいと思います。
 
この度はご回答ありがとうございました。
 
 

2013年11月22日金曜日 10時53分50秒 UTC+9 KAWAGUCHI, Akira:
Reply all
Reply to author
Forward
0 new messages