第1章
この章では、exteNd DirectorのRuleサブシステムの概要について紹介し、ルールベースのアプリケーションを開発する利点について説明します。この章は、次の節から構成されています。
通常、exteNd Directorアプリケーションは、アプリケーションの決断を下すために論理フローの重要なポイントでルールを起動します。ルールでは、実質的にすべてのプログラミングタスクを実行できます。結果をポートレットコードで処理するか、またはルールを使用してアプリケーションのスコープ外の処理を行うことができます。
Ruleサブシステムでは、exteNd Directorアプリケーション用に柔軟で再使用可能な論理を作成するためのJava APIおよびツールサポートが提供されています。
ルールとは、値を返す「条件」と「アクション」を結合させたものです。基本的なルールの構文は、1つまたは一連の条件がtrueの場合、関連付けられた1つまたは複数のアクションが実行されるというものです。ルールの構造は、多数のプログラミング言語において標準の構成要素である「ケースステートメント」に基づいています。ユーザは、ルール論理を作成するためのユーザインタフェースが提供されているexteNd Directorの「ルールエディタ」を使用してルールを作成します。
基本的なルールの構造 すべてのルールは、少なくとも1つの「Decisionノード」(ケース)から構成され、少なくとも次の2つのセクションがあります。
[時間]セクションには1つまたは複数の条件が含まれます。条件を選択し、AND演算子およびOR演算子を使用して個々の条件の結果をどのように結合するかを指定します。
[実行]セクションには、選択する1つまたは複数のアクションが含まれます。[時間]セクションがtrueに評価されると、実行されます。また、アクション内部にDecisionノードを挿入することもでき、これはネストしたルールとして評価されます。
最後の[その他の場合に実行]セクションはオプションです。ここには、いずれのDecisionノードもtrueでない場合に実行される、ルール用のデフォルトアクションを指定します。
たとえば、ケースが1つでデフォルトのセクションを持つルールの形式は次のようになります。
When {condition group is true}
Do {actions}
Otherwise Do {actions}
ルールエディタでは次のように表示されます。

ネストした論理 子ノードを親ノードに追加することによってルール内で論理をネストすることができ、標準的なケースステートメントと同じように、ブレークおよび続行ステートメントを使用して処理の流れを制御できます。

次に、exteNd Director 開発環境で作成することができるルールベースのコンポーネントを示します。
ルールエディタおよびマクロエディタの詳細については、を参照してください。
ルールエディタでルールを定義したら、Rule APIを使用して、アプリケーションでルールにアクセスできます。APIには、ルールを起動し、セッションデータにアクセスするための「ルールマネージャ」および「コンテキスト」オブジェクトが含まれます。また、カスタム条件とアクションを定義するための実装クラスもあります。
詳細については、APIオンラインヘルプのcom.sssw.re パッケージを参照してください。
アプリケーション開発者であれば、ルールを使用する理由は何なのか、アプリケーション内に直接論理をコーディングするだけでよいのではないかといった疑問を抱く場合があります。アプリケーションの開発および展開の観点からみて、ルールには次のような多くの利点があります。
ルールは柔軟で、多数の実装オプションを備えているため、アプリケーションで使用する方法とタイミングについて注意深く計画する必要があります。最も重要な決定事項は、ビジネス論理をアプリケーションコードに直接実装するのではなく、ルール内に実装するかどうかです。
次の条件について考慮してください。
|
論理の使用条件 |
使用するもの |
|---|---|
|
ルール |
|
|
ダイレクトJavaコード |
次に、ルールベースのアプリケーションを設計するためのガイドラインをいくつか示します。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...