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 触发特定分组中所有匹配的规则default ExecutionTracefireAndTrace(RuleContext context) Fires all matching rules and returns an execution trace 触发所有匹配规则并返回执行轨迹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 清除所有已注册的规则 -
fireAndTrace
Fires all matching rules and returns an execution trace 触发所有匹配规则并返回执行轨迹Note: This method temporarily adds and removes a tracing listener. It is not safe for concurrent invocation on the same engine instance.
注意: 此方法会临时添加和移除追踪监听器。 不支持在同一引擎实例上并发调用。
- Parameters:
context- the rule context | 规则上下文- Returns:
- the execution trace | 执行轨迹
- Since:
- JDK 25, opencode-base-rules V1.0.3
-