検証モジュール

検証モジュールは、Mule フローのメッセージの内容が特定の条件と一致するかどうかを検証します。このモジュールは、フロー内での例外の原因に関する明示的なメッセージを提供します。検証する特定のデータに基づいて、ログに表示される例外メッセージをカスタマイズできます。

メッセージが定義されている検証条件を満たさないと、検証が失敗し、VALIDATION エラー (例: VALIDATION:INVALID_URL) が返され、ValidationException となります。デフォルトでは、このメッセージは意味のある内容となっており、カスタマイズ可能です。

サポートされる検証操作

検証モジュールには、そのまま使用できる検証操作が用意されています (下記参照)。

Is Blank String

指定された値が空白の文字列であることを検証します。

<validation:is-blank-string value="#[payload]"/>

Is Blank String

指定された値が空白の文字列 ではない ことを検証します。

<validation:is-not-blank-string value="#[payload]" message="The username cannot be blank"/>

Is Empty Collection

指定された値が空白のコレクションであることを検証します。

<validation:is-empty-collection values="#[payload]"/>

Is Not Empty Collection

値が空白のコレクションではないことを検証します。この値のデフォルトは次のペイロードとなります。

<validation:is-not-empty-collection values="#[payload]"/>

Validate Size

入力サイズが特定の minmax の間であることを検証します。 文字列、コレクション、マップ、および配列の入力に対して有効です。文字列の場合、サイズは文字数を意味します。

<validation:validate-size value="#[payload]" min="#[vars.minLength]" max="#[vars.maxLength]"/>

Is Not Null

指定された値が null の場合、失敗します。

<validation:is-not-null value="#[payload]" message="Null is not a valid value"/>

Is Null

指定された値が null でない 場合、失敗します。

<validation:is-null value="#[payload]"/>

Is True

式が true に評価されることを検証します。

<validation:is-true expression="#[vars.doReply]"/>

Is False

式が false に評価されることを検証します。

<validation:is-false expression="#[vars.withFailures]"/>

Is Number

指定された locale (デフォルトはシステムロケール) と pattern (デフォルトはロケールパターン) を使用して、文字列が指定された型の数値として解析できることを検証します。また、minValue パラメータと maxValue パラメータを使用することで、有効な数字の範囲を指定できます。

<validation:is-number value="#[payload]"
                      minValue="#[vars.minValue]"
                      maxValue="#[vars.maxValue]"
                      numberType="INTEGER" locale="US"/>

Is Time

時刻が指定されたパターンとロケールに対して有効であることを検証します。パターンが指定されていない場合は、ロケールのデフォルトが使用されます。

<validation:is-time time="#[payload]" pattern="h:mm a" locale="UK"/>

Is Elapsed Time

since で指定された初期時刻から time で指定された時間が経過していることを検証します。

<validation:is-elapsed time="20" timeUnit="SECONDS" since="#[vars.initialTime]"/>

Is Not Elapsed Time

since で指定された初期時刻から time で指定された時間が経過 していない ことを検証します。

<validation:is-not-elapsed time="20" timeUnit="SECONDS" since="#[vars.time]"/>

Is Email

指定されたメールが有効であることを検証します。値のデフォルトはペイロードです。

<validation:is-email email="#[vars.email]" message="The value is not a valid email"/>

Is URL

指定された文字列が URL として解釈できることを検証します。検証は java.net.URL クラスの URL(String) コンストラクタを呼び出すことによって行います。このコンストラクタが例外をスローした場合、検証は失敗します。このコンストラクタが受け入れたすべての文字列は有効と見なされます。

<validation:is-url url="#[vars.callbackUrl]"/>

Is IP

指定された IP アドレスが有効であることを検証します。IPV4 と IPV6 の両方がサポートされています。IPV6 の場合は、完全表記と省略表記の両方がサポートされますが、ポートを含むアドレスはサポートされません

<validation:is-ip ip="#[payload]" message="The value provided is not a valid IP address"/>

Is Whitelisted IP

指定された IP がホワイトリストに登録されていることを検証します。IP 検索条件リストは、アプリケーション内でグローバルに定義するか、または各バリデータ内で定義することができます。

<validation:ip-filter-list name="whitelist_ipv4">
  <validation:ips>
      <validation:ip value="192.168.1.0/24"/>
      <validation:ip value="127.0.0.1"/>
      <validation:ip value="193.1"/>
  </validation:ips>
</validation:ip-filter-list>

<flow name="validate-id">
  <validation:is-whitelisted-ip whiteList="whitelist_ipv4" ipAddress="#[payload]"/>
</flow>

Is Not Blacklisted IP

指定された IP がブラックリストに登録されていないことを検証します。IP 検索条件リストは、アプリケーション内でグローバルに定義するか、または各バリデータ内で定義することができます。

<flow name="validate-not-filtered-ip">
  <validation:is-not-blacklisted-ip ipAddress="#[vars.ip]">
    <validation:black-list>
        <validation:ips>
            <validation:ip value="2001:db8::/48"/>
        </validation:ips>
    </validation:black-list>
  </validation:is-not-blacklisted-ip>
</flow>

Matches Regex

指定された式が Java の正規表現と一致することを検証します。

<validation:matches-regex value="#[payload]" regex=".+\.log" caseSensitive="false"/>

Was this article helpful?

💙 Thanks for your feedback!