【发布时间】:2017-04-27 11:38:26
【问题描述】:
我有一个简单的规则,我想使用返回整数值的外部 java 函数。我想在规则 LHS 中使用这个返回值进行比较。
rule "testRuleBTW"
when
$cfd : FactsData()
condition : RuleData( ageCondition != null,
ageCondition.value1 != null,
ageCondition.value2 != null,
"BTW" == ageCondition.conditionCode,
$returnValue : Utils.foo($cfd.dateOfBirth, ageCondition.ageUnitCode) //Want to use this value in next c
ageCondition.value1 <= $returnValue, $returnValue <= ageCondition.value2)
then
//do something
但是遇到错误
java.lang.RuntimeException: 创建 KieBase 时出错 [消息 [id=1, level=ERROR, path=com/test/rules/ageRule.drl, line=13, column=0 text=[ERR 101] 第 13:42 行在规则“testRuleBTW”中的输入 '$cfd' 处没有可行的替代方案],消息 [id=2, level=ERROR, path=com/test/rules/ageRule.drll, line= 0,列=0 text=Parser 返回了一个空包]] 在 org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:433) 在 org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:587) 在 org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:558) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4913) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5223) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) 在 org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)
【问题讨论】:
标签: drools drools-guvnor drools-planner