You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel格式的Drools RuleTable中定义@Watch注解

Drools Excel规则表配置@Watch注解方法

直接在Excel规则表的CONDITION定义行追加注解即可生效,无需手动修改生成后的DRL文件,具体操作如下:

  1. 找到对应条件列的CONDITION配置单元格,该单元格原本的配置内容为模式匹配规则,示例如下:
    $payCommResponseDTO:PaymentCommissionResponseDTO(commissionStructure == $param)
  2. 直接在模式匹配的右括号后追加@Watch注解配置即可,修改后内容如下:
    $payCommResponseDTO:PaymentCommissionResponseDTO(commissionStructure == $param) @Watch(commissionStructure)

配置完成后重新编译Excel规则表,生成的DRL就会自动携带@Watch注解,和目标格式完全一致。

扩展说明

  • 如需监听多个字段,直接在@Watch括号内用逗号分隔字段名即可,示例:@Watch(commissionStructure, payAmount, status)
  • 如需每行规则配置不同的监听字段,可以将@Watch内容参数化,CONDITION行配置改为$payCommResponseDTO:PaymentCommissionResponseDTO(commissionStructure == $param) @Watch($1),再新增一列填写对应要监听的字段值即可
  • 可通过以下代码本地验证生成的DRL是否符合预期:
import org.drools.decisiontable.SpreadsheetCompiler;
import org.kie.internal.builder.DecisionTableInputType;
import java.io.FileInputStream;

public class ValidateDrl {
    public static void main(String[] args) throws Exception {
        SpreadsheetCompiler compiler = new SpreadsheetCompiler();
        // 替换为你的Excel规则表文件路径
        String drlContent = compiler.compile(new FileInputStream("rules/commission_rules.xls"), DecisionTableInputType.XLS);
        System.out.println(drlContent);
    }
}

注意事项

  • @Watch注解必须写在模式匹配的外层右括号之后,不要写到括号内部的条件判断区域
  • 注解配置和前面的模式匹配规则之间保留一个空格即可,无需其他特殊分隔符

内容的提问来源于stack exchange,提问作者Andre Kapp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:09:04