Class DefaultRuleEngine

java.lang.Object
cloud.opencode.base.rules.engine.DefaultRuleEngine
All Implemented Interfaces:
RuleEngine

public class DefaultRuleEngine extends Object implements RuleEngine
Default Rule Engine Implementation 默认规则引擎实现

Thread-safe implementation of the RuleEngine interface with support for rule registration, conflict resolution, and execution listeners.

RuleEngine接口的线程安全实现,支持规则注册、冲突解决和执行监听器。

Features | 主要功能:

  • Concurrent rule registration - 并发规则注册
  • Pluggable conflict resolution - 可插拔冲突解决
  • Execution listeners - 执行监听器
  • Multiple firing modes - 多种触发模式

Usage Examples | 使用示例:

DefaultRuleEngine engine = new DefaultRuleEngine();
engine.register(rule1, rule2);
engine.setConflictResolver(PriorityConflictResolver.INSTANCE);
RuleResult result = engine.fire(context);

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是
Since:
JDK 25, opencode-base-rules V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Constructor Details

    • DefaultRuleEngine

      public DefaultRuleEngine()
  • Method Details

    • register

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

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

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

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

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

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

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

      public List<Rule> getRules()
      Description copied from interface: RuleEngine
      Gets all registered rules 获取所有已注册的规则
      Specified by:
      getRules in interface RuleEngine
      Returns:
      list of rules | 规则列表
    • getRules

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

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

      public boolean hasRule(String name)
      Description copied from interface: RuleEngine
      Checks if a rule is registered 检查规则是否已注册
      Specified by:
      hasRule in interface RuleEngine
      Parameters:
      name - the rule name | 规则名称
      Returns:
      true if registered | 如果已注册返回true
    • getRuleCount

      public int getRuleCount()
      Description copied from interface: RuleEngine
      Gets the count of registered rules 获取已注册规则的数量
      Specified by:
      getRuleCount in interface RuleEngine
      Returns:
      rule count | 规则数量
    • addListener

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

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

      public RuleEngine setConflictResolver(ConflictResolver resolver)
      Description copied from interface: RuleEngine
      Sets the conflict resolver 设置冲突解决器
      Specified by:
      setConflictResolver in interface RuleEngine
      Parameters:
      resolver - the conflict resolver | 冲突解决器
      Returns:
      this engine for chaining | 此引擎用于链式调用
    • setHaltCondition

      public void setHaltCondition(Predicate<RuleContext> haltCondition)
      Sets the halt condition for the engine 设置引擎的停止条件
      Parameters:
      haltCondition - the halt condition predicate | 停止条件谓词
    • clear

      public void clear()
      Description copied from interface: RuleEngine
      Clears all registered rules 清除所有已注册的规则
      Specified by:
      clear in interface RuleEngine