IntroductionDisclaimerThese comments are in response to the public review period for the JSR-94 Java Rule Engine API 1.0 specification. Bob McWhirter is the author of this page and the opinions expressed herein are solely his and do not necessarily represent the opinions held by other members or users of the drools community. QualificationsBob McWhirter adapted Forgy's Rete algorithm into the Rete-OO algorithm for working conveniently with object-oriented constructs. While he has no formal training in the field of rules and inference engines, he is the implementor of the drools Java-based rules engine that uses the Rete-OO algorithm. Since the public review release of the JSR-94 distribution, Bob has been working to make drools compliant. Below are his comments. GeneralI am dismayed that the public review distribution does not include source code for the javax.rules.* classes and interfaces nor for the reference implementation. Having the source available may have prevented many of these comments, questions and requests for clarification. I do commend the JSR expert group for creating and making freely available the TCK. I have thus far not reached a point in development to determine its usefulness. RuleServiceProvider
What is the purpose of the
RuleRuntime and Friends
I would expect the RuleSession-specific constants
It seems that the
RuleSession
The
StatefulRuleSessionaddObject(..) and executeRules(..)
Does the specification intend to explicitly address deeper semantics on
the
In order to avoid losing reportable errors, the drools binding to
JSR-94 would require that
Clarification on
Additionally, the
getObjects(..) and HandlesThese comments could have been avoided if the source for the reference implementation was provided.
Since a
If the semantics are insertion-order, then addition
performance burden is placed upon the implementor as
removing items using
RuleExecutionSet and Friends
What, exactly, does "RuleExecutionSet" mean? It's a mouthful,
and I don't know what "Execution" in the name really adds.
Would "RuleBase" or "RuleSet" be sufficient? It'd provide
a shorter base to build upon for the admin Provider class
and interface names. Building up to
The admin exceptions seem to be poorly named in terms of verb form. I suspect that the shorter verb forms were used in order to keep the names shorter. I would suggest the following:
LocalRuleExecutionSetProviderOnce again, the name is too long. Would you please clarify what you mean by "AST"? I understand that AST stands for Abstract Syntax Tree. Would you consider drool's Rule to be an AST? RuleExecutionSetProviderOnce again, the name is too long.
The
|