我是Drools的新手,我正在尝试将这个simple.xls编译为决策表并获得这个非常无用的编译错误: [ERR 102]第8行:1在规则“患者通知_11”中输入“然后”不匹配
我已经附加了xls以及随之而来的简单对象。我已阅读了有关此内容的所有材料,无法弄清楚为什么会出现以下错误。我提前感谢你的帮助。具体来说,我想知道是否有办法检查并查看导致此错误的幕后发生的事情。另外更重要的是,如果在决策表的逻辑中存在错误,如何调试XLS的编译版本就像使用.drl文件一样。
public static class PatientNotification {
public static final int Notify = 1;
public static final int EvalNotify = 0;
private String message;
private long ndc;
private String patientName;
public String getPatientName() {
return patientName;
}
public void setPatientName(String patientName) {
this.patientName = patientName;
}
public long getNdc() {
return ndc;
}
public void setNdc(long ndc) {
this.ndc = ndc;
}
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
public void setStatus(String sstatus) {
if (sstatus.equals("Notify"))
this.status=Notify;
else if(sstatus.equals("EvalNotify"))
this.status = EvalNotify;
else
this.status=-1;
}
}
答案 0 :(得分:3)
我认为包含
的单元格m: PatientNotification
应该与其右边的邻居合并,以便在基于此类型的模式中将两个约束连接起来。如果这不能解决问题,请使用下面的代码并报告回来。
要查看电子表格编译器中发生的情况,请使用以下方法:
private void testSpreadsheet(){
File dtf = new File( dtPath );
InputStream is;
try {
is = new FileInputStream( dtf );
SpreadsheetCompiler ssComp = new SpreadsheetCompiler();
String s = ssComp.compile( is, InputType.XLS );
System.out.println( "=== Begin generated DRL ===" );
System.out.println( s );
System.out.println( "=== End generated DRL ===" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}