是使用JBPM5.4安装程序的BPM的新手。
下面是我从Guvnor获取的drl源代码。 在解决规则时我会收到错误。
rule "TestRule"
dialect "java"
when
exists (Person( name == "estaban" ))
then
Person.setName( "ESTABAN" );
end
堆栈跟踪:
Exception in thread "main" Exception executing consequence for rule "TestRule" in com.tcs: java.lang.NullPointerExceptio
n
at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.j
ava:39)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)
at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)
at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)
at com.sample.ProcessMain.main(ProcessMain.java:41)
Caused by: java.lang.NullPointerException
at com.tcs.Rule_TestRule_063717b0a0b841d3ae5b0d9fa14879f8.defaultConsequence(Rule_TestRule_063717b0a0b841d3ae5b0d9fa148
79f8.java:7)
at com.tcs.Rule_TestRule_063717b0a0b841d3ae5b0d9fa14879f8DefaultConsequenceInvokerGenerated.evaluate(Unknown Source)
at com.tcs.Rule_TestRule_063717b0a0b841d3ae5b0d9fa14879f8DefaultConsequenceInvoker.evaluate(Unknown Source)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
... 6 more
答案 0 :(得分:2)
您需要将左侧找到的事实绑定到变量。像这样重写:
rule "TestRule"
dialect "java"
when
$person: Person( name == "estaban" )
then
$person.setName( "ESTABAN" );
update( $person );
end
要在Guvnor中执行此操作,在添加/修改约束时,您将看到“修改人员约束”对话框。您需要在“变量名称”文本框中键入变量名称,例如“$ person”。
这将导致它从:
更改生成的DRLPerson( name == "estaban" )
为:
$person: Person( name == "estaban" )
在LHS上绑定变量后,您需要修改RHS。选择“修改现有事实的字段”选项。然后,您需要从提供的列表中选择变量名称,并提供要修改的属性的详细信息。