ここでは、式を効率的かつ効果的にコーディングするためのいくつかのベスト・プラクティスとヒントを記載します。
- 理解しやすくするため、ここで示す式の例の大半には、Java™ コードが XML 構成内に直接含まれています。
しかし、ルールを作成する際は、
Java コードを含む外部モジュールを使用し、これらの外部モジュールを式の一部として呼び出すのがベスト・プラクティスと言えます。
ルール・ビルダーで既存のスニペットを使用または編集するか、新規スニペットを作成して、外部モジュールを呼び出すコードとして使用することもできます。スニペットは、
式の中で使用できるソース・コードの抜粋です。ルール・ビルダーにおいて、スニペットは「断片」ビューを介して使用できます。
この方法により、Java コードの設計、開発、編集、テスト、およびデバッグの作業を任意の統合開発環境 (IDE) で実行でき、
開発プロセスの標準工程として制御できます。
- 式のコードが XML として構文解析されないようにするために、コードを
CDATA セクション内に含めます。このセクションでは、以下の例に示すように、
<![CDATA[ をコードの直前に配置し、]]> を
コードの直後に配置します。
<onTimeOut>
<action expressionLanguage="java">
<![CDATA[
IEvent firstEvent = act_eventList.get(0);
System.out.println("Expired Item: " + firstEvent.getAttribute("sourceComponentId.location"));
]]>
</action>
</onTimeOut>
XML パーサーは、CDATA セクション内にあるものはすべて
無視します。
- 式内で act_lib.getExternalContext() メソッドを使用する場合は、このメソッドから戻されるオブジェクトをルール・セットまたはルール・ブロック変数内に保管しないでください。理由としては、アプリケーションがオブジェクト・インスタンスへの参照を変更することがあり、関連するルール・セットまたはルール・ブロック変数が更新されないためです。
- <action> エレメント内の式で return ステートメント (return;) が
使用され、それぞれのルール応答アクションまたはライフ・サイクル・アクションについて
追加の <action> エレメントがコーディングされている場合、コードの実行は、
return ステートメントがコーディングされている箇所で終了し、次の <action> エレメント内の
式で再度開始されます。
- ルール管理およびその他の Active Correlation Technology エンジン・メソッドは、ルール応答アクションまたはライフ・サイクル・アクション内から呼び出せません。