目次 > 第2章 バッチフレームワークチュートリアル > 2.3 ファイルアクセス機能を用いた単純なジョブ > 2.3.7 入力チェックの作成

2.3.7 入力チェックの作成

本節では、入力データに対する入力チェックの作成方法について説明する。

処理内容

“入金ファイル”の“入金金額”が4桁未満である場合、エラーメッセージを出力する。
エラーメッセージは“batchapps”内の“system-messages.properties”に定義されたメッセージが出力される。
なお、エラーが検知されたデータはビジネスロジックの処理対象にはならない。

設計情報例

ジョブ主処理定義例(入力チェック)

入力値検証

手順

1. “UC0001_validation.xml”を作成

  1. “batchapps\tutorial\UC0001”フォルダーを右クリックする。
  2. 「新規」→「ファイル」を選択し、ファイル名に“UC0001_validation.xml”と入力し「終了」を押下する。
  3. “UC0001_validation.xml”の内容を以下のように編集する。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC
     "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
     "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
<form-validation>
    <formset>
        <form name="JB0002Data">
            <field property="nyukin" depends="minLength">
                <arg key="入金金額" position="0" resource="false"/>
                <arg name="minLength" key="${var:minlength}" position="1" resource="false"/>
                <var>
                    <var-name>minlength</var-name>
                    <var-value>4</var-value>
                </var>
            </field>
        </form>
    </formset>
</form-validation>

バリデーション定義ファイルのform要素のnameにチェック対象となるファイル行オブジェクト“JB0002Data”を、
field要素のproperty属性にチェックを行う“nyukin”を、dependsに入力チェックルール“minLength(最小文字数制限)”を指定する。

備考

バリデーション定義ファイルのform要素のnameの値をクラス名ではなくフルパス名で指定したい場合は、 Batch版が提供する入力チェック定義ファイル“ValidationContext-batch.xml”、“ValidationContext-AsyncBatch.xml”を以下のように修正する。

  • ValidationContext-batch.xml
      <bean id="validator" class="org.springmodules.validation.commons.DefaultBeanValidator" abstract="true">
    	・・・(略)・・・
    	<!-- value要素の値をfalseからtrueにする -->
        <!-- <property name="useFullyQualifiedClassName" value="false" /> -->
        <property name="useFullyQualifiedClassName" value="true" />
      </bean>
    
    
  • ValidationContext-AsyncBatch.xml
      <bean id="validator" class="org.springmodules.validation.commons.DefaultBeanValidator">
    	・・・(略)・・・
    	<!-- value要素の値をfalseからtrueにする -->
        <!-- <property name="useFullyQualifiedClassName" value="false" /> -->
        <property name="useFullyQualifiedClassName" value="true" />
      </bean>
    
  • UC0001_validation.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE form-validation PUBLIC
         "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
         "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
    <form-validation>
        <formset>
            <form name="jp.terasoluna.batch.tutorial.uc0001.JB0002Data">
                <field property="nyukin" depends="minLength">
                    <arg key="入金金額" position="0" resource="false"/>
                    <arg name="minLength" key="${var:minlength}" position="1" resource="false"/>
                    <var>
                        <var-name>minlength</var-name>
                        <var-value>4</var-value>
                    </var>
                </field>
            </form>
        </formset>
    </form-validation>
    

2. “JB0002.xml”を編集

“JB0002.xml”に入力チェックの定義を追加する。

  • 入力チェックルール定義ファイルの設定
    入力チェックルール定義ファイルを設定するため、以下の定義を<beans></beans>内に定義する。
    <!-- 入力チェック定義 -->
    <util:list id="validationConfigLocations">
        <value>/common/validator-rules-ex.xml</value>
        <value>/common/validator-rules.xml</value>
        <value>/tutorial/UC0001/UC0001_validation.xml</value>
    </util:list>
    
    “validationConfigLocations”はBatch版が規定する入力チェックのBean IDである。
    “validationConfigLocations”のリストプロパティに、手順1で作成した“UC0001_validation.xml”と、Batch版が提供する入力チェックルール定義ファイル“validator-rules.xml”、“validator-rules-ex.xml”を指定する。
  • 入力チェックの処理結果ハンドラの設定
    次に、入力チェックの処理結果ハンドラの定義を追加する。
    以下の定義を<beans></beans>内に定義する。
    <!-- 入力チェック処理結果ハンドラ -->
    <bean id="validationResultHandler" class="jp.terasoluna.fw.batch.validation.StandardValidationResultHandler">
        <property name="errorContinueFlg" value="true"/>
        <property name="messageAccessor" ref="messageAccessor"/>
    </bean>
    
    “validationResultHandler”はBatch版が規定する固定のBeanである。ここではBatch版が提供する“StandardValidationResultHandler”クラスを設定する。
    “errorContinueFlg”プロパティに“true”を設定することで、入力チェックエラーが検知された場合でも処理を続行することができる。
    処理を停止したい場合は、この定義の追加は不要である。
  • コレクターの設定
    最後に、対象データ取得処理にて入力チェックを実施するため“collector”Beanの“parent”属性を以下のように修正する。
    <!-- コレクターの設定 -->
    <bean id="collector" parent="validationFileChunkCollector">
      ・・・(略)・・・
    </bean>
    
    “collector”がBatch版が提供する“validationFileChunkCollector”を継承することでを入力チェックありのコレクタに切り替わる。
    “validationFileChunkCollector”はBatch版が規定する固定のBeanである。

3. ログの確認

ジョブを起動し、以下のコンソールログが出力されることを確認する。

[DEBUG] start Batch
...
[WARN ] 入金金額には4文字以上にしてください.
[WARN ] 顧客ID"034"の取引日が運用日付以降です。
...
[DEBUG] 【 END 】 [jobId=JB0002] [jobRequestNo=] [StartType=SYNC] [jobExitCode=0]
[DEBUG] end Batch
備考

ジョブの起動方法およびデータの確認方法については「2.3.6 起動と確認」を参照のこと。

参考資料
  • 『BC-01 ファイルアクセス機能』
  • 『BD-02 対象データ取得機能』
  • 『RF-02 入力チェック機能』

次節:2.4 分割ジョブ

Copyright (C) 2007-2011 NTT DATA CORPORATION