しおしお

IntelliJのあれやこれや

JBeretでスクリプト言語を使用してバッチアーチファクトを作ってみる

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

使うシーンがイメージできないけど。。。