Interface RuleEngine
- All Known Implementing Classes:
DefaultRuleEngine
public interface RuleEngine
Rule Engine Interface - Manages and Executes Business Rules
规则引擎接口 - 管理和执行业务规则
The core component for registering, managing, and executing business rules. Supports rule groups, conflict resolution, and execution listeners.
注册、管理和执行业务规则的核心组件。支持规则分组、冲突解决和执行监听器。
Features | 主要功能:
- Rule registration and management - 规则注册和管理
- Multiple firing modes (all, first, until halt) - 多种触发模式
- Rule group support - 规则分组支持
- Conflict resolution - 冲突解决
- Execution listeners - 执行监听器
Usage Examples | 使用示例:
// Create and configure engine
RuleEngine engine = OpenRules.engine()
.register(rule1, rule2)
.setConflictResolver(OpenRules.priorityResolver())
.addListener(OpenRules.loggingListener())
.build();
// Fire all matching rules
RuleResult result = engine.fire(context);
// Fire only first matching rule
RuleResult result = engine.fireFirst(context);
// Fire rules in a specific group
RuleResult result = engine.fire(context, "discount-rules");
Security | 安全性:
- Thread-safe: Implementation dependent - 线程安全: 取决于实现
- Since:
- JDK 25, opencode-base-rules V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionaddListener(RuleListener listener) Adds a rule execution listener 添加规则执行监听器voidclear()Clears all registered rules 清除所有已注册的规则fire(RuleContext context) Fires all matching rules 触发所有匹配的规则fire(RuleContext context, String group) Fires all matching rules in a specific group 触发特定分组中所有匹配的规则fireFirst(RuleContext context) Fires only the first matching rule 只触发第一个匹配的规则fireUntilHalt(RuleContext context) Fires rules until no more rules can fire (for inference) 触发规则直到没有更多规则可以触发(用于推理)Gets a rule by name 按名称获取规则intGets the count of registered rules 获取已注册规则的数量getRules()Gets all registered rules 获取所有已注册的规则Gets rules in a specific group 获取特定分组中的规则booleanChecks if a rule is registered 检查规则是否已注册Registers a rule group 注册规则组Registers one or more rules 注册一个或多个规则removeListener(RuleListener listener) Removes a rule execution listener 移除规则执行监听器setConflictResolver(ConflictResolver resolver) Sets the conflict resolver 设置冲突解决器unregister(String ruleName) Unregisters a rule by name 按名称注销规则
-
Method Details
-
register
Registers one or more rules 注册一个或多个规则- Parameters:
rules- the rules to register | 要注册的规则- Returns:
- this engine for chaining | 此引擎用于链式调用
-
register
Registers a rule group 注册规则组- Parameters:
group- the rule group | 规则组- Returns:
- this engine for chaining | 此引擎用于链式调用
-
unregister
Unregisters a rule by name 按名称注销规则- Parameters:
ruleName- the rule name | 规则名称- Returns:
- this engine for chaining | 此引擎用于链式调用
-
fire
Fires all matching rules 触发所有匹配的规则- Parameters:
context- the rule context | 规则上下文- Returns:
- the execution result | 执行结果
-
fire
Fires all matching rules in a specific group 触发特定分组中所有匹配的规则- Parameters:
context- the rule context | 规则上下文group- the rule group name | 规则组名称- Returns:
- the execution result | 执行结果
-
fireFirst
Fires only the first matching rule 只触发第一个匹配的规则- Parameters:
context- the rule context | 规则上下文- Returns:
- the execution result | 执行结果
-
fireUntilHalt
Fires rules until no more rules can fire (for inference) 触发规则直到没有更多规则可以触发(用于推理)- Parameters:
context- the rule context | 规则上下文- Returns:
- the execution result | 执行结果
-
getRules
-
getRules
-
getRule
-
hasRule
Checks if a rule is registered 检查规则是否已注册- Parameters:
name- the rule name | 规则名称- Returns:
- true if registered | 如果已注册返回true
-
getRuleCount
int getRuleCount()Gets the count of registered rules 获取已注册规则的数量- Returns:
- rule count | 规则数量
-
addListener
Adds a rule execution listener 添加规则执行监听器- Parameters:
listener- the listener | 监听器- Returns:
- this engine for chaining | 此引擎用于链式调用
-
removeListener
Removes a rule execution listener 移除规则执行监听器- Parameters:
listener- the listener | 监听器- Returns:
- this engine for chaining | 此引擎用于链式调用
-
setConflictResolver
Sets the conflict resolver 设置冲突解决器- Parameters:
resolver- the conflict resolver | 冲突解决器- Returns:
- this engine for chaining | 此引擎用于链式调用
-
clear
void clear()Clears all registered rules 清除所有已注册的规则
-