Rule Compilation error 问题
请问下我这个问题该怎么解决?。实在看不出来时哪问题了。。问题描述:org.drools.rule.InvalidRulePackage: Rule Compilation error : [Rule name=lady, agendaGroup=MAIN, salience=0, no-loop=false]
dataRules/java/Rule_lady_0.java (7:332) : String literal is not properly closed by a double-quote
dataRules.java.RulesEngine.<init>(RulesEngine.java:42)
dataRules.java.RulesEngineBo.getRulesEngineBo(RulesEngineBo.java:36)
com.gomai.action.DbanalyseresultAction.addDbanalyseresult(DbanalyseresultAction.java:80)
对应的代码:1。#created on: 2009-12-18
package dataRules.java
import dataRules.java.RulesResult;
#判断性别的正确性
rule "lady"
when
s : RulesResult( sex > 1 || sex < 0, sex : sex )
then
System.out.println( "这是一个错误的性别表示,超出表示范围!" );
//System.out.println( "Name: "+s.getName() );
System.out.println( "Sex: "+s.getSex() );
s.setExplain("超出了取值范围");
s.setResult(0);
s.setVerifyTpye(1);
s.setSex( 1 );
end
2.private RulesEngine rulesEngine;
@SuppressWarnings("unchecked")
public RulesResult getRulesEngineBo(Map map) {
final RulesResult rulesResult = new RulesResult();
// Student student = new Student();
String rulesFile = (String) map.get("rulesFile");
System.out.println("rulesFile = " + rulesFile);
// map.get(sex);
// int sex = Integer.parseInt(map.get("sex").toString());
int sex = (Integer) map.get("sex");
System.out.println("sex....=="+sex);
rulesResult.setSex(sex);
System.out.println("explain = " + rulesResult.getExplain());
System.out.println("sex = " + rulesResult.getSex());
// RulesEngine rulesEngine = new RulesEngine();
//上边的System.out.println都能打印出来值,下面的就运行部下去了!!!!!!!!!!!!!!!!!!
rulesEngine = new RulesEngine(rulesFile);
System.out.println("rulesEngine2222==="+rulesEngine);
rulesEngine.executeRules(new WorkingEnvironmentCallback() {
public void initEnvironment(WorkingMemory workingMemory) {
workingMemory.insert(rulesResult);
};
});
3.public RulesEngine(String rulesFile) throws RulesEngineException{
//super();
try {
System.out.println("rulesFile111111111111 = " + rulesFile);
// Read in the rules source file
Reader source = new InputStreamReader(RulesEngine.class.
getResourceAsStream("/dataRules/rules/" + rulesFile));
System.out.println("rulesFile333333333333 = " + rulesFile);
System.out.println("rulesFile333333333333 = " + source);
PackageBuilder builder = new PackageBuilder();
System.out.println("rulesFile44444444444444444 = " + rulesFile);
// This will parse and compile in one step
builder.addPackageFromDrl(source);
// Get the compiled package
Package pkg = builder.getPackage();
System.out.println("pkg==="+pkg);
System.out.println("rulesFile = " + rulesFile);
// Add the package to a rulebase (deploy the rule package).
rules = RuleBaseFactory.newRuleBase();
System.out.println("55555555555555555555555555"+pkg);
rules.addPackage(pkg);//上边的代码也都能打印出来,但在本行就程序运行不下去;不知道为什么?
} catch (Exception e) {
throw new RulesEngineException(
"Could not load/compile rules file: " + rulesFile, e);
}
求教高手,谢谢!