第64章 CSimple


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

64.1. CSimple と Simple の相違点

Simple 言語は動的な式言語であり、一連の Camel 式または述語に実行時に解析されます。

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

Simple 言語は通常、非常に軽量で高速ですが、OGNL パスを介した動的メソッドの呼び出しを伴う一部のユースケースでは、Sinmple 言語が実行時のイントロスペクションとリフレクションの呼び出しを行います。これにはパフォーマンスのオーバーヘッドがあり、csimple が作成された理由の 1 つです。

csimple 言語はタイプセーフである必要があり、OGNL パスを介したメソッド呼び出しでは、解析中に型を把握しておく必要があります。つまり、csimple 言語式の場合、スクリプトでクラスタイプを提供する必要ですが、simple の場合は実行時にこれをイントロスペクトします。

言い換えると、Simple 言語は ダックタイピング (アヒルのように見え、アヒルのように鳴く場合、それはアヒルである) を使用しており、csimple は Java 型 (タイプセーフ) を使用しています。型エラーがある場合には、Simple は実行時にこれを報告し、csimple では Java コンパイルエラーが発生します。

64.1.1. 追加の CSimple 関数

csimple 言語には、CollectionMap、または配列型を操作する一般的なユースケースをサポートするための追加関数がいくつか含まれています。次の関数 bodyAsIndexheaderAsIndex、および exchangePropertyAsIndex は、これらのユースケースに入力されたとおりに使用されます。

機能タイプ説明

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 または配列から交換プロパティーを収集し (インデックスによるルックアップ)、その交換プロパティーをそのクラス名によって決定される特定の型に変換するために使用します。変換された exchange プロパティーには null を指定できます。

mandatoryExchangePropertyAsIndex(key, type, index)

タイプ

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

たとえば、次の Simple 式があるとします。

Hello $\{body[0].name}

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

csimple (コンパイル済み) では、これをプリコンパイルする必要があるため、エンドユーザーは bodyAsIndex 関数で型情報を提供する必要があります。

Hello $\{bodyAsIndex(com.foo.MyUser, 0).name}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.