정수 값을 반환하는 외부 Java 함수를 사용하고자하는 간단한 규칙이 있습니다. 비교를 위해 규칙 LHS에서이 반환 값을 사용하려고합니다. Drools에서 바인딩 변수를 사용하는 동안 오류가 발생했습니다. 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, 레벨 = ERROR, 경로 = COM/테스트/규칙/ageRule.drl, 라인 = 13, column = 0 text = [ERR 101] 행 13:42 "testRuleBTW"규칙의 입력 '$ cfd'에서 실행 가능한 대안이 없습니다. [id = 2, level = ERROR, path = com/test/rules/ageRule.drll, line = 0, column = 0 text = 파서가 null을 반환했습니다. 패키지]] at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase (KieContainerImpl.java:433) at org.drools .compiler.kie.builder.impl.KieContainerImpl.newKieSession (KieContainerImpl.java:587) at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession (KieContainerImpl.java:558) at org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1183) at org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1099) at org.apache.catalina.core.StandardWrapper.load (StandardWrapper.java:989) at org.apache.catalina.core. StandardContext.loadOnStartup (StandardContext.java:4913) at org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5223) at org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:752) at org.apach org.apache.catalina.startup.HostConfig.deployWAR에서 (org.apache.catalina.startup.HostConfig.deployWAR에서 표준시 .addChild (StandardHost.java:734) 에서 org.apache.catalina.core.StandardHost.addChild (표준 HBO.java:734) e.catalina.core.ContainerBase.addChild (ContainerBase.java:728) HostConfig.java : 952) at org.apache.catalina.startup.HostConfig $ DeployWar.run (HostConfig.java:1823) at java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:471) at java.util.concurrent.FutureTask.run (FutureTask.java:262) java.util.concurrent.ThreadPoolExecutor $ Worker.run에서 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) 에서 (ThreadPoolExecutor입니다. java : 615) at java.lang.Thread.run (Thread.java:745)