在Drool规则文件中,如何访问与声明的事实关联的元数据?
粗略地说,我想做以下事情:
declare MyFact
@myMetaData("foo")
end
rule "MyRule"
when
exists(OtherFact())
then
MyFact f = new MyFact();
global.post(f.metaData["myMetaData"]);
end
我真的很惊讶我无法找到一个简单的答案,但我可能会遗漏一些简单的东西,因为我对Drools很新。
我通过从一个Java类扩展MyFact来解决这个问题,这个Java类可以从KieBase以编程方式检索FactType,然后通过FactType :: getMetaData()获取属性,但再一次,惊讶于它并不简单方式。
答案 0 :(得分:0)
下面显示的大部分链接调用都可以隐藏在函数中。你必须传入KieContext kcontext。或者使用静态方法,可以将KieBase设置为静态。
package simple;
declare SomeFact
@Meta1("meta 1")
end
rule showMeta
when
then
System.out.println( kcontext
.getKieRuntime()
.getKieBase()
.getFactType( "simple", "SomeFact" )
.getMetaData()
.get( "Meta1" ) );
end