Drools规则分类
Drools rules categorization
我正在寻找一种方法来对我的 drl 文件中的规则进行分类,并确定触发的规则类别。
我看到 Drools Guvnor 文档有一些关于分类的内容 http://docs.jboss.org/drools/release/5.2.0.Final/drools-guvnor-docs/html/ch03.html#d0e228。但是,我不清楚这是 Guvnor 维护的元数据还是 drl 文件/规则执行的一部分。我无法找到其中提到类别的示例 DRL 文件。并且,一种确定被触发规则的类别/类别的方法。
我知道激活组,但这不太符合我的需要,因为一旦激活组中的规则触发,则不会评估组中的其他规则。
谢谢
对规则进行分类的最佳方式是通过元数据进行分类。元数据条目添加到规则:
rule metademo
@meta2( 123 )
@meta3( foo )
@meta4( "foo" )
when...then...end
您通过从包或某些事件中获得的规则访问元数据:
for( Rule rule: kPackage.getRules() ){
Map<String,Object> key2meta = rule.getMetaData();
for( Map.Entry<String,Object> entry: key2meta.entrySet() ){
System.out.print( " @" + entry.getKey() + "( " );
Object value = entry.getValue();
System.out.print( "[" + value.getClass().getSimpleName() + "] "
+ value.toString() );
System.out.println( " ) " );
}
}
输出:
@meta2( [Integer] 123 )
@meta4( [String] foo )
@meta3( [String] foo )
曾计划允许地图作为值,因此您可以使用
@meta7( foo = "foo", bar = "bar" )
这在 5.5 中不起作用,我再也没有尝试过。
我正在寻找一种方法来对我的 drl 文件中的规则进行分类,并确定触发的规则类别。
我看到 Drools Guvnor 文档有一些关于分类的内容 http://docs.jboss.org/drools/release/5.2.0.Final/drools-guvnor-docs/html/ch03.html#d0e228。但是,我不清楚这是 Guvnor 维护的元数据还是 drl 文件/规则执行的一部分。我无法找到其中提到类别的示例 DRL 文件。并且,一种确定被触发规则的类别/类别的方法。
我知道激活组,但这不太符合我的需要,因为一旦激活组中的规则触发,则不会评估组中的其他规则。
谢谢
对规则进行分类的最佳方式是通过元数据进行分类。元数据条目添加到规则:
rule metademo
@meta2( 123 )
@meta3( foo )
@meta4( "foo" )
when...then...end
您通过从包或某些事件中获得的规则访问元数据:
for( Rule rule: kPackage.getRules() ){
Map<String,Object> key2meta = rule.getMetaData();
for( Map.Entry<String,Object> entry: key2meta.entrySet() ){
System.out.print( " @" + entry.getKey() + "( " );
Object value = entry.getValue();
System.out.print( "[" + value.getClass().getSimpleName() + "] "
+ value.toString() );
System.out.println( " ) " );
}
}
输出:
@meta2( [Integer] 123 )
@meta4( [String] foo )
@meta3( [String] foo )
曾计划允许地图作为值,因此您可以使用
@meta7( foo = "foo", bar = "bar" )
这在 5.5 中不起作用,我再也没有尝试过。