Aug 18, 2005

[JSR] JSR 94 Java Rule Engine API ダイジェスト

Java Rule Engine API をざっと眺めたときのメモ。

JSR 94 Java Rule Engine API

オリジナルの入手はこちら → JSR 94

6. Definitions

Rule Engine
高機能な if/then statement インタプリタの様なもの。ビジネスロジックをシステムの外部に出すことで宣言的プログラミング(declarative programming)を促進する。
Rule
Rule は condition と action とから成る。この JSR では Rule の構造は規定されない。
Rule Execution Set
Rule の集合。この JSR では Rule Execution Set の構造は規定されない。
Rule Session
Rule Engine とクライアント間の実行時コネクション。Rule Session は単一の Rule Execution Set と関連付けられる。
Stateful Rule Session
Stateful な Rule Session。
Stateless Rule Session
Stateless な Rule Session。Stateful Rule Session よりシンプルでパフォーマンスが良い。

10. Architecture

  • javax.rules, javax.rules.admin とい 2 つのパッケージで構成される。
  • javax.rules は、Rule Engine のランタイムクライアントを表す。既に用意された Rule Execution Set 用の Rule Session の生成や Rule Session を用いた各種処理を提供する。
  • javax.rules.admin は、管理用 API を表す。外部リソース (URI, InputStream, XML, Binary tree, Reader) から Rule Execution Set を読み込む機能を提供する。

10.1. Runtime API

RuleServieProviderManager
RuleServiceProvider を提供する。ベンダー毎の RuleServiceProvider を返す。
RuleServiceProvider
RuleRuntime, RuleAdministrator を提供する。
RuleRuntime
RuleSession, 登録済みの RuleExecutionSet の URI リストを提供する。
RuleExecutionSetMetadata
RuleExecutionSet に関するメタデータを提供する。
RuleSession
StatefulRuleSession, StatelessRuleSession の共通インターフェース。
StatelessRuleSession
クライアントは StatelessRuleSession に Objet のリストを渡して RuleExecutionSet の実行を指示する。その後、処理の結果生成された Object を受け取ることができる。処理結果の Object は ObjectFilter を利用することで必要なもののみ受け取るようにフィルタリングすることができる。
StatefulRuleSession
RuleExecutionSet に渡される Object の受け渡しなどを行うインターフェース(addObject, getObject, removeObject, updateObject, containsObject)を提供する。
ObjectFilter Interface
RuleSession 実行結果 Object リストから必要なもの/不必要なものを選別するフィルタ。
Handle Interface
StatefulRuleSession 内で独自の方法で Object を識別する。異なる ClassLoader でロードされた Object 同士でも正確に一致/不一致を判断するために利用される。

10.2. Administrator API

RuleAdministrator
RuleExecutionSetProvider を提供する。
RuleExecutionSetProvider
RuleExecutionSet を生成する。
LocalRuleExecutionSetProvider
RuleExecutionSet を生成する。LocalRuleExecutionSetProvider はシリアライズされていないデータ (InputStream, Reader) から RuleExecutionSet を生成する。
Rule
Rule の名称や説明情報などを提供するインターフェースを持つ。
RuleExecutionSet
RuleExecutionSet の名称や説明情報などを提供するインターフェースを持つ。

クラス図

[JSR 94 クラス図]

Posted in JSR | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |