我想创建一个日志,例如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配置和设置日志记录功能。你能给我一个例子吗?
感谢。
答案 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
)。
当然,此解决方案仅应用于调试或故障排除方案。
希望这有帮助。