(ILOG)IBM ODM 8.5在执行时记录规则的名称

时间:2014-02-13 13:10:20

标签: java logging ibm-odm

我想创建一个日志,例如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配置和设置日志记录功能。你能给我一个例子吗?

感谢。

4 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

因此,您可以使用属于执行服务器的Decision Warehouse来跟踪每个执行。这可以包括在执行期间触发了哪些规则,但取决于您应用的过滤器。

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

答案 2 :(得分:0)

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

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

来自IRL: 日志(ilog.rules.brl.IlrNameUtil.getBusinessIdentifier(instance.ruleName));

答案 3 :(得分:-1)

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

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

希望这有帮助。