我是Drools的新手,从基本的例子开始。我有如下非常简单的规则,它工作正常。
rule "One"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "Two"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
kSession.insert(message);
int rulesFired = kSession.fireAllRules();
但是当我添加ruleflow-group时,规则没有被执行。
rule "One"
ruleflow-group "dog"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "Two"
ruleflow-group "dog"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end
添加了规则流组名称,相同的代码规则不会被触发。
答案 0 :(得分:1)
当您使用ruleflowGroup / agendaGroup时,我们必须将焦点设置在自定义规则流组上。在您的代码中添加以下行:
kSession.getAgenda()getAgendaGroup("狗&#34)。。的setFocus();
尝试这种方法.. !!