カスタム・データ検証レベルの作成

あるビジネス・オブジェクトから変換コードに基づく別のビジネス・オブジェクトに値がマップされると、誤ったデータとなることがあります。データ検証機能により、入力のビジネス・オブジェクトのデータが特定の規則に従って出力するビジネス・オブジェクトのデータに変換できない場合に、マップの各操作を検査して、エラーがログに記録されます。

例: マップによりソース・ビジネス・オブジェクトのストリング値が宛先ビジネス・オブジェクトの整数値に変換されるとします。この型変換は、入力ストリング値が整数値 (例えば、「1234」は整数 1234 を表します) を表す場合には、正しく動作します。しかし、ストリング値が整数値を表さない場合 (例えば、「ABCD」は無効なデータと示されます) は、正しく動作しません。

このセクションでは、マップのデータ検証レベルの使用について、以下の内容を説明します。

データ検証レベルのコーディング

マップ開発システムではデータ検証レベル 0 と 1 を定義します。レベル 2 以上はユーザーが定義に使用できます。表 62 に、データ検証レベルを要約します。

表 62. データ検証レベル
レベル 説明
0 デフォルト。データを検証しません。
1 IBM 定義のデータ型を検査します。
2 以上 ユーザー定義の検証を検査します。

カスタム検証レベルを作成するには、属性をダブルクリックして「Activity Editor」ウィンドウにそのコードを表示します。次の if 文は、無効なデータを検出した場合に例外をスローするコードを設定します。

if (dataValidationLevel >= 1)
 

データ検証レベルに関連付けるアクションを指定するには、独自の if 文を追加します。レベルと関連付けするデータ検証規則は、ビジネス・ロジックやアプリケーションに該当するもの、および必要とするもののうちいずれでも構いません。例えば、特定の属性のレベル 2 規則で、特定の値を検査し、存在しなければ属性をデフォルトに設定できます。

例: 次の例は、データ検証レベル 2 で、クレジット・カード番号が有効であることを検査します。

/*
 ** At data validation level 2, check credit card numbers resulting
 ** from data entry errors, etc.
 */
 if (dataValidationLevel >= 2)
    {
    if (!CustUtility.validateCreditCard(ObjPurchaseReq.getString
          ("creditCardNumber")))
       {
       logWarning("Invalid credit card number sent through.");
       if (failOnInvalidData)
          {
          throw new MapFailureException(
             "Invalid credit card number.");
          }
       }
    }
 

データ検証レベルのテスト手順

マップのテストで、データ検証レベルを設定して適切に動作するかどうか確認できます。マップ・インスタンスのデータ検証レベルのテストは、次の手順で行います。

  1. 以下のようにして、「マップ・プロパティー」ダイアログを表示します。

    「編集」メニューから「マップ・プロパティー」を選択します。 「マップ・プロパティー」ダイアログを表示する他の方法については、"マップ・プロパティー情報の指定"を参照してください。

    結果: 「マップ・プロパティー」ダイアログの「一般」タブが表示されます。




    図 87. 「マップ・プロパティー」ダイアログの「一般」タブ

  2. テストするデータ検証レベルを設定します。必要により、データが無効の場合はマップが失敗するように設定します。
  3. 新しいデータ検証レベルを有効にするためにマップを停止し、再始動します。

注:
データ検証レベルと、「マップ・プロパティー」ウィンドウおよびサーバー・コンポーネント管理ビューから無効なデータが提示された場合に失敗するかどうかも設定できます。

Copyright IBM Corp. 2004