JobParametersの妥当性チェックをする部品

Spring BatchではJobParametersの妥当性チェックをするインターフェースは用意されていますが、実装は用意されていません。

soracaneはSpringModulesによる妥当性チェックの方法を提供します。

以下で、サンプルを示します。

目標

ジョブの引数の妥当性チェックをすることを目標とします。

ここではValang方式による妥当性チェックをすることにします。

使用サンプル

<ジョブ設定ファイル: /test/job-context.xml>

<!-- valang関数追加インポート -->

<import resource="classpath:/jp/co/soracane/modules/valang/functions/valang-function-context.xml"/>

<!-- ジョブの処理1 -->

<job id="job" xmlns="http://www.springframework.org/schema/batch" incrementer="jobParametersIncrementer" >

<validator ref="jobParametersValidator" />

<step id="step1" parent="simpleStep" >

<tasklet>

<chunk reader="listItemReader" writer="mockItemWriter" commit-interval="10" />

</tasklet>

</step>

</job>

<!-- ジョブパラメタ変換クラス -->

<bean id="jobParametersConverter" class="org.springframework.batch.core.converter.DefaultJobParametersConverter" />

<!-- ジョブパラメタの妥当性チェック部品 -->

<bean id="jobParametersValidator" class="jp.co.soracane.batch.core.validator.JobParametersModulesValidator">

<property name="validator" ref="valangValidator" />

<property name="jobName" value="job" />

</bean>

<!-- Validator -->

<bean id="valangValidator" class="jp.co.soracane.batch.item.SpringValidatorWithResource">

<property name="validator" >

<!-- 妥当性チェックするクラス -->

<bean class="org.springmodules.validation.valang.ValangValidator">

<property name="valang">

<value>

<![CDATA[

{ map[name] : isZenkaku(?) IS TRUE : '名前は全角です。' : 'errors.zenkaku': '名前' }

]]>

</value>

</property>

</bean>

</property>

</bean>

ジョブパラメタの妥当性チェックをする部品は、JobParametersModulesValidatorクラスです。

使い方は、単にValidatorをプロパティに設定するだけです。

jobNameプロパティはValangの場合はあまり意味がありません。

Commons Validatorの場合は、validator.xml内で設定したform名になります。

SpringValidatorWithResourceクラスは、メッセージリソースを利用してログに妥当性チェックの結果を出力します。

他の記事でサンプルを記述しますので、そちらも参照ください。

後は、元々用意されている、jobタグ内のvalidatorタグに設定するだけです。

<コマンド実行サンプル>

>CommandLineJobRunner classpath:/test/job-context.xml job test=aa name=太郎

コマンド実行は普通どおりに行います。

プロンプト上で、上記のような感じで実行してみてください。環境によって少々実行の仕方は変わるかもしれませんので、うまく環境に合わせて実行してみてください。

チェック対象は赤字で書きましたnameパラメタになります。

最後に

ジョブパラメタの妥当性チェックにValangが使用できるとかなりすっきりします。

コードを書く必要がないのも大きいと思います。

うまく使っていただけると幸いです。

Created Date: 2010/01/10