1

我想创建一个日志,例如 System.out.println("RuleName : "+ruleName); 在 IBM ODM 规则引擎中。

这就是我所做的;

1- 创建静态的 BOM 虚拟方法并获取实例的参数,该实例是 ilog.rules.engine.IlrRuleInstance 的对象。

instance ilog.rules.engine.IlrRuleInstance

2-通过以下创建 BOM 到 XOM 的映射

System.out.println("Log icinde");
String ruleName = "";
if (instance != null )
    ruleName = instance.getRuleName();
else
    System.out.println("instance null!");
if (ruleName != null) {
    System.out.println("RuleName: "+ ruleName);
}
return;

3- 在规则流中将其称为初始或最终操作。

utility.logla(ruleInstance);

但是当我执行流程时,我的日志不起作用实例为null并且 ruleName 也为null

我应该如何使用 bom.xml 配置和设置日志记录功能。你能给我一个例子吗?

谢谢。

4

4 回答 4

0

因此,您可以使用作为执行服务器一部分的决策仓库来跟踪每次执行。这可以包括在执行期间触发了哪些规则,但取决于您应用的过滤器。

这是关于 DW 的文档以及如何设置它: http: //pic.dhe.ibm.com/infocenter/dmanager/v8r5/topic/com.ibm.wodm.dserver.rules.res.managing/topics/con_res_dw_overview .html

于 2014-02-19T11:45:30.280 回答
0

这是因为您在规则流中的规则实例上下文之外调用 getRuleName(),从我从您的描述中可以看出。

如果您在规则的操作中调用了一个 BOM 方法,那么您可以调用IlrRuleInstance.getRuleName()并且它会返回规则的名称(我以前自己做过这样的事情)。

您想通过此日志记录实现什么目标?

于 2014-02-18T21:53:29.150 回答
0

有一种更好的从规则记录的方法。在您的 Virtual 方法中,传递规则本身的名称而不是 ruleInstance。您还可以用语言表达您的方法并在每条规则中使用相同的方法。

例如:来自 BAL:记录此规则的名称;

来自 IRL:Log(ilog.rules.brl.IlrNameUtil.getBusinessIdentifier(?instance.ruleName));

于 2015-03-12T08:59:00.470 回答
-1

另一种方法是在the name of this rule您的规则应用程序或模块的规则流(编排)中使用上面提供的 BAL ( )。

当然,此解决方案应仅用于调试或故障排除方案。

希望这可以帮助。

于 2016-04-29T18:30:22.630 回答