第282章 Simple 言語
Camel バージョン 1.1 で利用可能
Simple Expression Language は、作成時に非常にシンプルな言語でしたが、より強力になりました。これは主に、XPath に新しい依存関係や知識を必要とせずに式と述語を評価するための非常に小さい言語であることが意図されているため、camel-core でのテストに適しています。この概念は、Camel ルート内に式ベースのスクリプトを必要とする場合、一般的なユースケースの 95% に対応しています。
ただし、より複雑なユースケースでは、以下を含むより表現的で強力な言語を選択することが推奨されます。
Simple 言語は、式に定数リテラルが含まれる複雑な式に ${body
} プレースホルダーを使用します。式自体がトークン自体である場合、$\{ } プレースホルダーは省略できます。
Camel 2.5 以降では、$simple{ }
をプレースホルダーとして使用する別の構文を使用することもできます。これは、たとえば Spring プロパティープレースホルダーを Camel と併用する場合のクラッシュを回避するために使用できます。
282.1. Camel 2.9 以降の Simple 言語の変更
Simple 言語は Camel 2.9 以降では改善され、正確なエラーメッセージをインデックス化できるより優れた構文パーサーが使用されるため、何が適切で問題なのか、問題がある場所を正確に把握することができます。たとえば、演算子のいずれかにタイプミスがあった場合、これまでパーサーはこれを検出できず、評価が true になりました。構文には後方互換性がないため、いくつかの変更があります。Simple 言語を述語として使用する場合は、リテラルテキストを一重引用符または二重引用符で囲む 必要 があります。例: "${body} == 'Camel'"
リテラルの一重引用符がどのように存在するかに注目してください。メッセージのボディーとヘッダーを参照するために "body"
および "header.foo"
を使用する古いスタイルは @deprecated です。組み込み機能には常に $\{ } トークンを使用することが推奨されます。範囲演算子では、範囲を一重引用符で指定する必要があり、'30000..39999' の間の " "${header.zip}
が表示されます。
message: "body"
、または "in.body"
または "${body}"
のボディーを取得するには、次のコマンドを実行します。
複雑な式は、"Hello ${in.header.name} how are you?"
などの $\{ } プレースホルダーを使用する必要があります。
同じ式 「Hello ${in.header.name}」には複数の関数を持つことができます。これは ${in.header.me} talking"
です。
しかし、Camel 2.8.x 以前では、関数をネストでき ません (つまり、既存の $\{ } プレースホルダーを使用することはできません)。
Camel 2.9 以降では、機能をネスト化できます。