第30章 Simple 言語

概要

Simple 言語は、特にエクルチェンジオブジェクトのさまざまな部分にアクセスして操作することを目的とし、Apache Camel で開発された言語です。この言語は、初期に開発された時ほどシンプルではなく、現在では論理演算子と接続詞の包括的なセットが備えられています。

30.1. Java DSL

Java DSL での Simple 式

Java DSL には、ルートで simple() コマンドを使用するために、2 つのスタイルがあります。以下のように、simple() コマンドを引数としてプロセッサーに渡すこともできます。

from("seda:order")
  .filter(simple("${in.header.foo}"))
  .to("mock:fooOrders");

または、以下のように、プロセッサーのサブ句として simple() コマンドを実行することもできます。

from("seda:order")
  .filter()
  .simple("${in.header.foo}")
  .to("mock:fooOrders");

文字列への埋め込み

プレーンテキスト文字列内に Simple 式を埋め込む場合は、プレースホルダー構文 ${Expression} を使用する必要があります。たとえば、以下のように式 in.header.name を文字列に埋め込みます。

simple("Hello ${in.header.name}, how are you?")

開始トークンおよび終了トークンのカスタマイズ

Java から、SimpleLanguage オブジェクトの changeFunctionStartToken static メソッドと changeFunctionEndToken static メソッドを呼び出すことで、開始トークンおよび終了トークン (デフォルトでは、{}) をカスタマイズできます。

たとえば、Java では以下のように、開始トークンおよび終了トークンを [ および ] に変更することができます。

// Java
import org.apache.camel.language.simple.SimpleLanguage;
...
SimpleLanguage.changeFunctionStartToken("[");
SimpleLanguage.changeFunctionEndToken("]");
注記

開始トークンおよび終了トークンをカスタマイズすると、クラスパス上で同じ camel-core ライブラリーを共有するすべての Apache Camel アプリケーションに影響します。たとえば、OSGi サーバーでは多くのアプリケーションに影響する可能性がありますが、Web アプリケーション (WAR ファイル) では、Web アプリケーション自体にしか影響を与えません。