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 Details

    • register

      RuleEngine register(Rule... rules)
      Registers one or more rules 注册一个或多个规则
      Parameters:
      rules - the rules to register | 要注册的规则
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • register

      RuleEngine register(RuleGroup group)
      Registers a rule group 注册规则组
      Parameters:
      group - the rule group | 规则组
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • unregister

      RuleEngine unregister(String ruleName)
      Unregisters a rule by name 按名称注销规则
      Parameters:
      ruleName - the rule name | 规则名称
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • fire

      RuleResult fire(RuleContext context)
      Fires all matching rules 触发所有匹配的规则
      Parameters:
      context - the rule context | 规则上下文
      Returns:
      the execution result | 执行结果
    • fire

      RuleResult fire(RuleContext context, String group)
      Fires all matching rules in a specific group 触发特定分组中所有匹配的规则
      Parameters:
      context - the rule context | 规则上下文
      group - the rule group name | 规则组名称
      Returns:
      the execution result | 执行结果
    • fireFirst

      RuleResult fireFirst(RuleContext context)
      Fires only the first matching rule 只触发第一个匹配的规则
      Parameters:
      context - the rule context | 规则上下文
      Returns:
      the execution result | 执行结果
    • fireUntilHalt

      RuleResult fireUntilHalt(RuleContext context)
      Fires rules until no more rules can fire (for inference) 触发规则直到没有更多规则可以触发(用于推理)
      Parameters:
      context - the rule context | 规则上下文
      Returns:
      the execution result | 执行结果
    • getRules

      List<Rule> getRules()
      Gets all registered rules 获取所有已注册的规则
      Returns:
      list of rules | 规则列表
    • getRules

      List<Rule> getRules(String group)
      Gets rules in a specific group 获取特定分组中的规则
      Parameters:
      group - the group name | 组名
      Returns:
      list of rules in the group | 组中的规则列表
    • getRule

      Rule getRule(String name)
      Gets a rule by name 按名称获取规则
      Parameters:
      name - the rule name | 规则名称
      Returns:
      the rule, or null if not found | 规则,如果未找到则为null
    • hasRule

      boolean hasRule(String name)
      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

      RuleEngine addListener(RuleListener listener)
      Adds a rule execution listener 添加规则执行监听器
      Parameters:
      listener - the listener | 监听器
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • removeListener

      RuleEngine removeListener(RuleListener listener)
      Removes a rule execution listener 移除规则执行监听器
      Parameters:
      listener - the listener | 监听器
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • setConflictResolver

      RuleEngine setConflictResolver(ConflictResolver resolver)
      Sets the conflict resolver 设置冲突解决器
      Parameters:
      resolver - the conflict resolver | 冲突解决器
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • clear

      void clear()
      Clears all registered rules 清除所有已注册的规则
    • fireAndTrace

      default ExecutionTrace fireAndTrace(RuleContext context)
      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