0

我正在尝试实施流口水决策表。当我实现自己的示例代码时,出现以下错误: java.lang.RuntimeException:创建 KieBase 时出错

我的 Eclipse IDE 控制台中可见的错误是:

java.lang.RuntimeException: 创建 KieBase 时出错 [消息 [id=1, kieBase=patient, level=ERROR, path=PatientDecisionTable.xls, line=10, column=0 text=[ERR 101] Line 10:21 不可行输入''的替代方案],消息 [id=2,kieBase=患者,级别=错误,路径=PatientDecisionTable.xls,行=10,列=0 文本=[ERR 101] 第 10:81 行输入'没有可行的替代方案'],消息 [id=3, kieBase=patient, level=ERROR, path=PatientDecisionTable.xls, line=0, column=0 text=Parser returned an null Package]] 在 org.drools.compiler.kie.builder。 impl.KieContainerImpl.getKieBase(KieContainerImpl.java:557) 在 org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:682) 在 org.drools.compiler.kie.builder.impl.KieContainerImpl。 com.Lab.Genomics.Run 上的 newKieSession(KieContainerImpl.java:650)。PatientRun.main(PatientRun.java:15)

我的 Main 方法包含在下面的类中:

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import com.Lab.Genomics.model.Patient;

    public class PatientRun {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try{
                KieServices ks= KieServices.Factory.get();
                KieContainer kContainer=ks.getKieClasspathContainer();
                KieSession kSession= kContainer.newKieSession("ksession-patient");

                Patient patientObject= new Patient();
                patientObject.setBcConfirmed(1);
                patientObject.setBcEarlyStage(1);
                patientObject.setMetastatisSymptom(1);
                patientObject.setName("Sumit");
                patientObject.setPatientId(01);
                kSession.insert(patientObject);
                kSession.fireAllRules();



            }catch(Exception e){
                e.printStackTrace();
            }
        }

    }

病人是我的pojo。我的决策表如下: 项目决策表

我的项目目录如下: 项目目录

我无法找到决策表中存在什么错误。当我运行主要方法时,如上所述出现错误。

我在这里找到了一个关于 drools 决策表的问题,decision table error,但这不是我检查的情况。

我已经尝试过搜索并且仍在尝试。非常感谢任何参考或帮助。

4

1 回答 1

2

Avoid the quotes Excel provides by default. You have them around the string in the println call: LEFT DOUBLE QUOTATION MARK, U+201C RIGHT DOUBLE QUOTATION MARK, U+201D

if I type these keystrokes into an Excel cell: 'A' ' ' 's' ... ':' ' ' '"' 'o' ... 'e' 'e' '"' I'll see this:

A string: “one two three”

Now I copy-paste it into a text file and run a dump program on it:

0000000 41 20 73 74 72 69 6e 67 3a 20 e2 80 9c 6f 6e 65
0000020 20 74 77 6f 20 74 68 72 65 65 e2 80 9d 0a

See the UTF-8 encodings: 0xE2 0x80 0x9C and 0xE2 0x80 0x9D for the quotes, which aren't the ones permitted in DRL code. Make sure to use the quotation mark, code point U+0022. This is it: ->"<-

于 2017-10-20T10:49:09.493 回答