gpt4 book ai didi

java - 在字符串缓冲区中写入 drools 规则时出错

转载 作者:行者123 更新时间:2023-12-02 06:19:28 26 4
gpt4 key购买 nike

我正在使用字符串缓冲区设置 drools 规则,其中规则将从数据库数据构建。下面是我在字符串缓冲区中准备规则的代码片段。

    List<DbRules> dbRuleList = getAllRules();   
KieSession kieSession = null;
StringBuffer ruleBuffer = new StringBuffer();
ruleBuffer.append("import com.model.ContractHeader; import static com.service.SupplierService.isRuleAppliesToSupplier; ");
for(DbRules rule : dbRuleList) {
ruleBuffer.append(" rule \""+rule.getRuleName()+"\" when eval( isRuleAppliesToSupplier( cHeader : ContractHeader (supplierName) , "+rule.getRuleId()+" )) && ("+rule.getLhs()+") then "+rule.getRhs()+" end; ");
}

我在控制台中遇到以下异常:

Exception in thread "main" java.lang.RuntimeException: Unable to get 
KieModule, Errors Existed: Error Messages:
Message [id=1, kieBase=defaultKieBase, level=ERROR, path=rules/Sample.drl,
line=1, column=0
text=Rule Compilation error cHeader cannot be resolved to a variable
Syntax error on token ":", invalid AssignmentOperator
supplierName cannot be resolved to a variable]
<小时/>

警告消息:

信息消息:

at org.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModule(KieBuilderImpl.java:467)
at org.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModule(KieBuilderImpl.java:453)
at com.sample.StringDrools.executeRules(StringDrools.java:88)
at com.sample.StringDrools.main(StringDrools.java:41)

最佳答案

通过修改一些代码解决了编译错误。谢谢!

  for(DbRules rule : dbRuleList) {
ruleBuffer.append(" rule \""+rule.getRuleName()+"\" when cHeader:ContractHeader() eval( isRuleAppliesToSupplier( (cHeader.getSupplierName()) , "+rule.getRuleId()+" )) && ("+rule.getLhs()+") then "+rule.getRhs()+" end; ");
}

关于java - 在字符串缓冲区中写入 drools 规则时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55845831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com