Drools 6.4决策表编译错误

时间:2016-07-06 17:55:50

标签: drools

我是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; 

    }

}

XLS

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();
  }
}