第23章 MVEL
概要
MVEL は Java ベースの動的な言語で、OGNL に似ていますが、OGNL より高速だと言われています。MVEL のサポートは camel-mvel
モジュールにあります。
構文
MVEL のドット構文を使用して Java メソッドを呼び出することができます。以下に例を示します。
getRequest().getBody().getFamilyName()
MVEL は動的に型付けされているため、getFamilyName()
メソッドを呼び出す前にメッセージボディーのインスタンス (Object
型) をキャストする必要はありません。Bean の属性を取得する場合は、以下のような簡単な構文を使用することもできます。
request.body.familyName
MVEL モジュールの追加
ルートで MVEL を使用するには、例23.1「camel-mvel 依存関係の追加」 で示すように、camel-mvel
の依存関係をプロジェクトに追加する必要があります。
例23.1 camel-mvel 依存関係の追加
<!-- Maven POM File --> <properties> <camel-version>2.23.2.fuse-7_13_0-00013-redhat-00001</camel-version> ... </properties> <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-mvel</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
組み込み変数
表23.1「MVEL 変数」 に、MVEL を使用する際にアクセス可能な組み込み変数の一覧を示します。
名前 | 型 | 説明 |
---|---|---|
|
| 現在のエクスチェンジ |
|
| 現在のエクスチェンジ |
|
| エクスチェンジの例外 (ある場合) |
|
| エクスチェンジの ID |
|
| Fault メッセージ (ある場合) |
|
| IN メッセージ |
|
| OUT メッセージ |
|
| エクスチェンジプロパティー |
|
| 指定されたエクスチェンジプロパティーの値 |
|
| 指定されたエクスチェンジプロパティーのタイプの値。 |
例
例23.2「MVEL を使用したルート」 は、MVEL を使用するルートを示しています。
例23.2 MVEL を使用したルート
<camelContext> <route> <from uri="seda:foo"/> <filter> <language langauge="mvel">request.headers.foo == 'bar'</language> <to uri="seda:bar"/> </filter> </route> </camelContext>