简体   繁体   English

如何在Java中动态构建Drools规则?

[英]How to build Drools rules in Java dynamically?

How to build Drools rules in Java dynamically instead of providing static drl file? 如何在Java中动态构建Drools规则而不是提供静态drl文件?

I have a set of matching rules defined in xml that I need to parse and be able to reload it in runtime. 我有一组在xml中定义的匹配规则,我需要解析这些规则并能够在运行时重新加载它。 Is there any way to build Drools rules dynamically? 有什么方法可以动态构建Drools规则? Couldn't find it in the docs. 在文档中找不到它。

I agree with former answers and comments that rules are ment to be the "static" part. 我同意以前的回答和意见,认为规则是“静态”部分。 When rules are created dynamically on demand, the usage of a rules engine is questionable. 当按需动态创建规则时,规则引擎的使用值得怀疑。 However, there are cases where rules are not provided in form / format that drools can handle out of the box. 但是,在某些情况下,没有以流口水可以立即使用的形式/格式提供规则。 In such cases programmatical creation of rules during the initialization phase is needed. 在这种情况下,需要在初始化阶段以编程方式创建规则。

These things said, here is how you can add a rule (given as a String) to drools. 这些事情说,这是您如何向流口水添加规则(以字符串形式给出)。

public void addRule(String myRuleStatement, String myPackage, RuleBase myRuleBase ) {
    PackageBuilder packageBuilder = new PackageBuilder(new Package(myPackage));
    packageBuilder.addPackgeFromDrl( new StringReader( myRuleStatement ) );
    myRuleBase.addPackage ( packageBuilder.getPackage() );
}

我同意Romain的评论-如果您具有某种声明形式的规则-您可以直接从中生成代码-除非这些规则中隐含了更高阶的逻辑(不太可能找到),或者您可能想做一个时间从XML迁移到规则语言。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM