S-JIS[2017-08-13/2017-12-02] 変更履歴

Asakusa Framework info.sh

Asakusa Framework0.9.2のinfo.shについて。→Asakusa CLI


概要

AsakusaFW 0.9.2のインキュベーター機能で、info.shというものがある。
これを使うと、Asakusa on SparkやAsakusa on M3BPの実行環境上のバッチ一覧やオペレーター一覧が取得できる。
また、Graphvizによるオペレーターグラフの作成(可視化)も出来る。

※この機能はAsakusaFW 0.10.0でAsakusa CLI(asakusaコマンド)に変わった。[2017-12-02]


使用方法

まず、build.gradleでincubatingをtrueにしておく。

build.gradle

asakusafw {
    sdk.incubating true	//追加
〜
}

そしてAsakusaアプリをビルド(デプロイメントアーカイブを作成)し、実行環境にデプロイ(ASAKUSA_HOME配下に展開)する。

$ ./gradlew assemble

出来上がったデプロイメントアーカイブを実行環境で展開
$ tar xf asakusafw-XXX.tar.gz -C $ASAKUSA_HOME

そうしたら、実行環境にて、$ASAKUSA_HOME/tools/bin/info.shが実行できる。

$ $ASAKUSA_HOME/tools/bin/info.sh
usage: info.sh  [<args>]

The most commonly used info.sh commands are:
    draw   Generates Graphviz DOT scripts
    help   Display help information
    list   Displays information list

See 'info.sh help ' for more information on a specific command.

Cygwinでの使用方法

info.shはWindows開発環境のCygwin上でも使う事が出来る。
この場合、ビルドに使われた作業ディレクトリーを直接ASAKUSA_HOMEに指定するということも出来る。

  1. Cygwin上でビルドする。
    $ ./gradlew m3bpCompileBatchapps --compiler-properties "m3bp.native.cmake=cmake.exe,m3bp.native.make=make.exe,m3bp.native.cmake.CMAKE_SYSTEM_NAME=Linux,m3bp.native.cmake.CMAKE_CXX_COMPILER=x86_64-pc-linux-gnu-g++.exe" assemble
  2. 環境変数ASAKUSA_HOMEをWindows用のパスで定義する。
    $ export ASAKUSA_HOME=$(cygpath -ma build/asakusafw-assembly-prod)
  3. info.sh内の_ROOTの作成方法をCygwin用に変更する。
    $ vi $ASAKUSA_HOME/tools/bin/info.sh
    
    _ROOT="$(cd "$(dirname "$0")/.." ; pwd)"
    _ROOT=$(cygpath -ma $_ROOT)		←追加

これで、ビルド時の作業ディレクトリー(build/asakusafw-assembly-prod)にあるバッチに対してCygwin上から$ASAKUSA_HOME/tools/bin/info.shが実行できる。


バッチ情報の表示

バッチ一覧を表示するには、オプションでlist batchを指定する。

$ $ASAKUSA_HOME/tools/bin/info.sh list batch
m3bp.example.summarizeSales
spark.example.summarizeSales

ここに表示されるバッチは、ASAKUSA_HOME/batchappsの下にあるバッチで、かつ、etc/batch-info.jsonが存在するものらしい。
batch-info.jsonはAsakusaFW 0.9.2でincubatingをtrueにしておかないと生成されない。


Batch DSLの@Batchにコメントやパラメーターの情報が書いてあれば、それも表示できる。

SummarizeBatch.java:

import com.asakusafw.vocabulary.batch.Batch;
import com.asakusafw.vocabulary.batch.Batch.Parameter;
import com.asakusafw.vocabulary.batch.BatchDescription;

/**
 * 売上の集計を計算する。
 */
@Batch(name = "example.summarizeSales", comment = "売上集計バッチ", parameters = {
    @Parameter(key = "date", comment = "日付", required = true, pattern = "\\d+\\-\\d+\\-\\d+")
})
public class SummarizeBatch extends BatchDescription {
〜
}

$ $ASAKUSA_HOME/tools/bin/info.sh list batch -v
m3bp.example.summarizeSales:
      class: com.example.batch.SummarizeBatch
    comment: 売上集計バッチ
spark.example.summarizeSales:
      class: com.example.batch.SummarizeBatch
    comment: 売上集計バッチ
$ $ASAKUSA_HOME/tools/bin/info.sh list parameter spark.example.summarizeSales
parameter(name=date)

$ $ASAKUSA_HOME/tools/bin/info.sh list parameter spark.example.summarizeSales -v
date:
      comment: 日付
      pattern: \d+\-\d+\-\d+
    mandatory: true

グラフの生成

AsakusaFW 0.9.2のAsakusa on SparkAsakusa on M3BPのフローのグラフを生成することが出来る。
なお、Graphvizのdotコマンド(Windowsならdot.exe)にパスが通っている必要がある。

$ $ASAKUSA_HOME/tools/bin/info.sh draw operator spark.example.summarizeSales --encoding UTF-8 | dot.exe -Tpdf -Nfontname=MEIRYO > operator-graph.pdf

-aオプションを付けると、ポート情報等も表示される。

$ $ASAKUSA_HOME/tools/bin/info.sh draw operator spark.example.summarizeSales --encoding UTF-8 -a | dot.exe -Tpdf -Nfontname=MEIRYO > operator-graph.pdf


可視化へ戻る / AsakusaFW目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま