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