あるビジネス・オブジェクトから変換コードに基づく別のビジネス・オブジェクトに値がマップされると、誤ったデータとなることがあります。データ検証機能により、入力のビジネス・オブジェクトのデータが特定の規則に従って出力するビジネス・オブジェクトのデータに変換できない場合に、マップの各操作を検査して、エラーがログに記録されます。
例: マップによりソース・ビジネス・オブジェクトのストリング値が宛先ビジネス・オブジェクトの整数値に変換されるとします。この型変換は、入力ストリング値が整数値 (例えば、「1234」は整数 1234 を表します) を表す場合には、正しく動作します。しかし、ストリング値が整数値を表さない場合 (例えば、「ABCD」は無効なデータと示されます) は、正しく動作しません。
このセクションでは、マップのデータ検証レベルの使用について、以下の内容を説明します。
マップ開発システムではデータ検証レベル 0 と 1 を定義します。レベル 2
以上はユーザーが定義に使用できます。表 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."); } } }
マップのテストで、データ検証レベルを設定して適切に動作するかどうか確認できます。マップ・インスタンスのデータ検証レベルのテストは、次の手順で行います。
「編集」メニューから「マップ・プロパティー」を選択します。 「マップ・プロパティー」ダイアログを表示する他の方法については、"マップ・プロパティー情報の指定"を参照してください。
結果: 「マップ・プロパティー」ダイアログの「一般」タブが表示されます。