Validation - 入力データのチェック

指定された条件に基づいてストリームのデータ検証を行います。
データの検証結果が正しかった場合には、ストリームは右側に流れます。検証に失敗した場合には下側に流れます。
ここで使われる条件は、Validationビルダーで指定します。詳細については下記トピック「Validationビルダーの使い方」を参照してください。

■ストリーム情報

入力フォーマットXML,CSV,FixedLength,ParameterList,Record
接続数1
出力フォーマットXML,CSV,FixedLength,ParameterList,Record
説明 入力ストリームをそのまま出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
Validationビルダーで設定済みboolean- Validationビルダーを使用してデータ検証の条件を指定したかどうかを示します。
はい [true] - Validationビルダーで条件を設定済
いいえ [false] - Validationビルダーで条件を未設定
エンティティのベースフォルダーchoice- 入力ストリーム型がXMLの場合、入力時のエンティティ展開時に使用するベースフォルダーを指定します。
システムフォルダー [SystemDefault]
[INSTALL_DIR]/flow/services/flowservice/dtd」のフォルダーを起点にします。
プロジェクトオーナーのホームフォルダー [ProjectOwner]
プロジェクトオーナーのホームフォルダーを起点にします。
実行ユーザーのホームフォルダー [ExecuteUser]
実行ユーザーのホームフォルダーを起点にします。
エラー詳細string   出力 データ検証が失敗した場合は、このプロパティに失敗時のエラーの理由が文字列で返ります。このプロパティは出力専用です。
入力が空のときの動作choice- 入力ストリームが空の場合の動作を選択します。
検証結果を正常とする [AlwaysPass]
入力ストリームが空の場合はデータ検証が常に成功します。
検証結果を正常としない [EvaluateConditions]
入力ストリームが空の場合も空の入力ストリームに対して条件式を評価します。この場合、ストリームに関する評価は失敗します。

■トランザクション処理

コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし データ検証の条件式が正しくない場合
なし エンティティのベースフォルダー が「実行ユーザーのホームフォルダー」の場合に実行ユーザーが存在しないため相対パスが解決できなかった場合

■Validationビルダーの使い方

Validationコンポーネントでデータを評価するための検証条件は、専用のValidationビルダーで作成します。Validationビルダーを起動するには、Validationコンポーネントを右クリックして表示されるメニューの「Validationビルダー」をクリックするする、またはValidationコンポーネントのアイコンをダブルクリックします。

Validationビルダーでは、「新規条件アイテムの追加」ボタンをクリックすることにより、評価条件リストの行(評価条件アイテム)がひとつ追加されます。評価条件アイテムとは、入力ストリーム中の評価位置とその評価式の組み合わせをあらわすレコードです。

●ストリームタイプ

Validationビルダーでは、Validationコンポーネントへの入力ストリームを、「ParameterList」、「Record」、「XML」のいずれかの形式で評価する条件式を作成します。ストリームタイプによって評価位置の指定の記述方法などが異なります。

XML

コンポーネントの入力ストリームフォーマットがXML の時、評価位置はXPathで指定します。「XPath」項目にXPath式を直接記述してください。評価位置が属性の場合、「属性」項目に属性名を直接記述することも可能です。

画面下部の「ドキュメントバリデーション」では、外部エンティティとしてDTD やXML Schemaを指定することで、これらのスキーマを使用したバリデーションを行うことも可能です。「DTD によるバリデーションを行う」、「XSD によるバリデーションを行う」を選択した場合は、DTD およびXML Schema 定義のエンティティを「バリデーションエンティティ」欄に入力します。

※ 否定式でのバリデーションがチェックされると、ドキュメントバリデーションに失敗した場合が真正の結果として処理されます。

ParameterList

コンポーネントの入力ストリームフォーマットがParameterListの時、評価位置は変数名で指定します。「変数名」項目には、変数名を直接記述してください。「属性」項目は使用しません。

※フロー変数を評価条件アイテムに使用する場合は、フロー変数であることを宣言するために「flow.」をプリフィックスとしてフロー変数の前に記述し(例:「flow.flowvar1」)、変数名の欄に書きます。

Record

コンポーネントの入力ストリームフォーマットがRecord、CSV、FixedLength の時、評価位置はフィールド名で指定します。フィールド名項目には[record]というプレフィックス付きのフィールド名かフィールドインデックスを直接記述してください。「属性」項目は使用しません。

フィールド名(例:”field1”、”field2”)による指定の例

record.field1
record.field2

フィールドインデックスによる指定の例 (インデックスは0ベースです)

record[0]
record[1]

各種変数

フロー変数、システム変数や外部変数セットを評価条件アイテムに使用する場合、各種変数のプレフィクスを変数名の前につけることで参照できます。

変数の種類プレフィクス
フロー変数flow.
システム変数system.
外部変数セットexvar.[外部変数名].

使用例
フロー変数の場合

flow.var1 > 5
外部変数セットの場合
exvar.exvar1.var1 = "MATCH"

※評価条件は固定値の比較のみであり、「record.field1 = flow.var1」のようなフィールド値と変数の比較はできません。

●条件アイテム

条件アイテムとは、入力ストリームを評価するためのひとつの評価条件を表したものです。Validationコンポーネントでは、この条件アイテムを複数組み合わせて入力ストリームを評価します。条件アイテムは次の項目で構成されています。

ID

条件アイテムをユニークに区別する番号です。新規条件アイテムの追加時に、Validationビルダーによって自動的に割り振られます。条件アイテムを削除してID が連番でなくなった場合はValidationビルダーを一度閉じ、再表示させてください。

評価位置

条件アイテムが適用される、入力ストリームでのノードやフィールドです。入力ストリームの形式によって異なります。また、属性は入力ストリームがXML の時のみ有効です。

制限

評価するレコードやノードが複数評価対象となった場合、そのすべてを評価条件とするか、あるいはいずれかとするかを選択します。すべてを評価する場合は「すべて」、いずれかの場合は「いずれか」を選択します。「すべて」が選択された場合、すべてのレコードやノードが評価式を満たさなくては真とはなりません。「いずれか」の場合は、評価対象のレコードやノードのいずれかが評価式を満たしていれば真となります。

データ型

データ型を選択します。「String」「int」「boolean」「enum」「double」「regex」が選択可能です。

最小値

値の最小値を入力します。評価する値がここで指定された値以下であった場合は偽となります。入力されない場合は評価は行われません。データ型が「String」の場合、この項目は最小の文字数として検証されます。

最大値

値の最大値を入力します。評価する値がここで指定された値以上であった場合は偽となります。入力されない場合は評価は行われません。データ型が「String」の場合、この項目は最大の文字数として検証されます。

値を入力します。ここで入力された値と評価する値が等しい場合に真となります。入力されない場合は評価は行われません。データ型がenumの場合は、「,」記号で複数の値を繋げることができます。データ型がregexの場合、正規表現で文字列を評価できます。正規表現については、Mapperコンポーネントのサービスファンクションである「regexp」関数のヘルプを参照してください。

エラーメッセージ

データ検証に失敗した場合にエラー詳細 で取得するメッセージを指定します。メッセージ中に「$value」「$no」「$NO」を埋め込むことで、検証に失敗した値とレコード番号に置換することができます。
メッセージを指定しない場合は、自動生成されたメッセージが使用されます。
置換文字列説明
$value検証した値
$noレコード番号(※ストリームタイプがRecordの場合のみ有効、0ベース)
$NOレコード番号(※ストリームタイプがRecordの場合のみ有効、1ベース)

使用例
エラーメッセージ「$NO行目のレコードで名前の文字数制限を超えています 名前:$value」
レコード番号「5」
値「Sample Corporation」の場合

5行目のレコードで名前の文字数制限を超えています 名前:Sample Corporation

条件評価方法

条件アイテムを複数定義した場合に、各々を組み合わせて最終的な評価条件を構成します。

すべての条件を「AND」として評価すべての条件に合致した場合に真となります。
すべての条件を「 OR 」として評価いずれかの条件に合致した場合に真となります。
カスタム条件設定ユーザーが設定した内容に合致した場合に真となります。
カスタム条件設定では、条件アイテムの「ID」欄で割り当てられた数値と、「|」「&」の2つの記号、そしてカッコ「()」を使って内容を指定できます。 「&」はANDを表します。「1&2」と入力した場合、ID1とID2の両方の条件に合致すれば真となります。 「|」はORを表します。「1|2」と入力した場合、ID1とID2のいずれかの条件に合致すれば真となります。 ANDとORを複合した条件を作成する場合は、「()」を利用します。「(1&2)|(3&4)」と入力した場合、1と2の両方の条件に合致するか、3と4の両方の条件に合致するかのいずれかである場合に真となります。

●Validationコンポーネントの動作

Validationビルダーで条件を作成してOKボタンをクリックすると評価条件がValidationコンポーネントに登録されます。 Validationコンポーネントでは、入力されたデータが評価条件に合致している場合は、アイコンの右線(青色)の方向に制御が流れます。合致しない場合は、下線(黒色)の方向に制御が流れます。合致しなかった場合は、その詳細をエラー詳細 プロパティで参照することができます。例えば、Validationコンポーネントの後にMapperコンポーネントを配置し、マッピング画面で詳細を得ることが可能です。また、FlowService.logにもデバッグレベルで同様の情報が出力されます。