第67章 CSimple


CSimple 言語は コンパイルされた Simple 言語です。

67.1. CSimple と Simple の違い

Simple 言語は、ランタイムが Camel 式または述語のセットに解析される動的式言語です。

csimple 言語は通常の Java ソースコードに解析され、他のすべてのソースコードとともにコンパイルされるか、camel-csimple-joor モジュールを介してブートストラップ中に 1 回コンパイルされます。

Simple 言語は通常、非常に軽量で高速ですが、OGNL パスを使用した動的メソッド呼び出しのユースケースによっては、Simple 言語はランタイムイントロスペクションを実行し、リフレクション呼び出しを行います。パフォーマンスのオーバーヘッドがあり、csimple が作成された理由の 1 つでした。

csimple 言語は型セーフで、OGNL パスを介したメソッド呼び出しでは、解析中にタイプを知っている必要があります。これは、スクリプトでクラス名を指定する必要がある csimple 言語式の意味で、これはランタイム時に単純なイントロスペクションを行います。

言い換えると、Simple 言語は duck の入力 (duck のように、クックなど)を使用し、csimple は Java タイプ(型安全なタイプ)を使用しています。タイプエラーがある場合、simple はこれを実行時に報告し、csimple では Java のコンパイルエラーが発生します。

67.1.1. 追加の CSimple 関数

csimple 言語には、コレクションマップ、または配列タイプを使用する一般的なユースケースをサポートする追加の関数が含まれています。以下の関数 bodyAsIndexheaderAsIndex、および exchangePropertyAsIndex は、入力時にこれらのユースケースに使用されます。

Expand
機能タイプ説明

bodyAsIndex (type,index)

タイプ

既存の CollectionMap、または配列(インデックスによるルックアップ)からボディーを収集し、そのクラス名によって決定される指定された型にボディーを変換するために使用されます。変換された本文は null にすることができます。

mandatoryBodyAsIndex (type,index)

タイプ

既存の CollectionMap、または配列(インデックスによるルックアップ)からボディーを収集し、そのクラス名によって決定される指定された型にボディーを変換するために使用されます。ボディーが null でないことを想定します。

headerAsIndex (key,type,index)

タイプ

既存の CollectionMap、または配列(インデックスによるルックアップ)からヘッダーを収集し、ヘッダー値をそのクラス名によって決定される指定された型に変換するために使用されます。変換されたヘッダーは null にすることができます。

mandatoryHeaderAsIndex (key,type,index)

タイプ

既存の CollectionMap、または配列(インデックスによるルックアップ)からヘッダーを収集し、ヘッダー値をそのクラス名によって決定される指定された型に変換するために使用されます。ヘッダーが null ではないことを想定します。

exchangePropertyAsIndex (key,type,index)

タイプ

既存の CollectionMap、または配列(インデックスによるルックアップ)からエクスチェンジプロパティーを収集し、そのクラス名によって決定される指定された型にエクスチェンジプロパティーを変換するために使用されます。変換されたエクスチェンジプロパティーは null にすることができます。

mandatoryExchangePropertyAsIndex (key,type,index)

タイプ

既存の CollectionMap、または配列(インデックスによるルックアップ)からエクスチェンジプロパティーを収集し、そのクラス名によって決定される指定された型にエクスチェンジプロパティーを変換するために使用されます。exchange プロパティーが null でないことが期待されます。

たとえば、以下の簡単な式があるとします。

Hello $\{body[0].name}
Copy to Clipboard Toggle word wrap

このスクリプトにはタイプ情報がありません。また、メッセージボディーをイントロスペクトし、これがベースである場合、最初の要素を検索し、リフレクションを使用して getName という名前のメソッドを呼び出すことで、実行時に Simple 言語が解決します。

Csimple (コンパイル)では、これを事前にコンパイルするため、エンドユーザーは bodyAsIndex 関数でタイプ情報を提供する必要があります。

Hello $\{bodyAsIndex(com.foo.MyUser, 0).name}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat