JBeretのユーザーズガイド見てたら、「Develop Batch Artifacts in Script Languages」なる章*1があったので試してみた。
JBeretのバージョンは1.3系にする
Gradleだとこんな感じです
compile 'org.jberet:jberet-se:1.3.0.Beta3'
使用するスクリプト言語のライブラリをdependencyに追加する
Groovyだとこんな感じになります
compile 'org.codehaus.groovy:groovy-jsr223:2.4.7' compile 'org.codehaus.groovy:groovy:2.4.7'
ジョブ定義をしてみる
簡単そうなBatchletで試してみました。
このれいでは、batchletタグ内にscriptタグでBatchletの実装を定義しています。
stepContextやjobContextの参照もできます。
<job id="script-sample" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0"> <step id="myStep"> <batchlet> <script type="groovy"> <![CDATA[ println("Groovy Script!") println("ステップ名:${stepContext.stepName}") ]]> </script> </batchlet> </step> </job>
実行結果
ちゃんと動いた!!!
[main] INFO org.jboss.weld.Version - WELD-000900: 2.4.1 (Final) [main] INFO org.jboss.weld.Bootstrap - WELD-000101: Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously. [main] INFO org.jboss.weld.Bootstrap - WELD-ENV-002003: Weld SE container STATIC_INSTANCE initialized Groovy Script! ステップ名:myStep [Thread-1] INFO org.jboss.weld.Bootstrap - WELD-ENV-002001: Weld SE container STATIC_INSTANCE shut down Weld SE container STATIC_INSTANCE shut down by shutdown hook
使うシーンがイメージできないけど。。。