Drools可行的输入错误

时间:2017-05-09 04:57:49

标签: drools

我使用SpreadsheetCompiler为我的决策表提取drl。这是相关位

global Integer netincome;
// rule values at C14, header at C8
rule "Net Income_14"
    salience 65522
    when
        user:CSUserBundle(user.grossHouseholdIncome >= 0, user.grossHouseholdIncome < 1150000, user.grossHouseholdIncome >= 15700*52, user.grossHouseholdIncome < 86600*52)
    then
        netincome = eval(user.grossHouseholdIncome - 0 - (user.grossHouseholdIncome – 816400) * 0.12 - 0)
end

我的错误是:

E 14:35:30:235 : main : org.drools.compiler.kie.builder.impl.AbstractKieModule : Unable to build KieBaseModel:defaultKieBase
[11,78]: [ERR 101] Line 11:78 no viable alternative at input ''

不幸的是,列号78,错误是在第二个user.grossHouseholdIncome中间的&#39;然后&#39;声明。我通过文档搜索,但在文本中找不到任何关于使用变量名两次的内容。我尝试添加&#39; eval&#39;回应De Smet对同样错误的建议。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我所做的是将规则复制粘贴到一个体面的文本编辑器中,然后尝试搜索所有出现的特殊ASCII字符,如引号(&#34;)或连字符( - )或其他任何奇妙的办公程序很容易转换成一些肯定看起来很好但被编译器拒绝的Unicode字形。另外,不要相信空间。由于一些TAB特征,它们经常是由程序创建的视错觉。我用一个下划线替换了空格  代表TAB。现在,78与邪恶的角色完全一致。

_netincome = eval(user.grossHouseholdIncome - 0 - (user.grossHouseholdIncome – 816400) * 0.12 - 0)
....5...10....5...20....5...30....5...40....5...50....5...60....5...70....5...80