我们有一个使用 Drools 规则的遗留 Java/Spring 项目。有没有办法在 IntelliJ 上调试规则文件,例如添加断点和单步执行规则逻辑?
我所做的就是定义一个静态方法,它采用一个 Object 类型的参数。该方法稍后可以用作调试回调。这样您就可以调试规则的 LHS 和 RHS 端:
class DroolsUtils {
public static boolean debugLhsValue(Object value) {
log.debug(value.toString()); // you can set breakpoint here
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
在 DRL 文件中,您可以使用以下技巧来使用它:
import function com.bnymellon.ais.rei.dataexchange.brms.runtime.BrmsPluginHelper.debugLhsValue;
rule "my rule"
enabled true
when
$model : MyModel()
MyModel(debugLhsValue($model) == true) from $model
$mapInMyModel: Map() from $model.someMap;
MyModel(debugLhsValue($mapInMyModel) == true) from $model
Entry(getKey() == "something", $myValue: getValue()) from $mapInMyModel.entrySet();
MyModel(debugLhsValue($myValue) == true) from $model
then
debugLhsValue("in RHS");
// do something
end
Run Code Online (Sandbox Code Playgroud)
如上所示,您可以在每条指令后调用此调试函数。您还可以在条件子句中使用它。剩下的唯一一件事就是在 debugLhsValue 中设置断点,然后您就知道这些值是什么。
| 归档时间: |
|
| 查看次数: |
9900 次 |
| 最近记录: |