Hi Thomas,
A quick solution would be to use agenda groups as follows:
rule "Rule Init"
dialect "java"
when
...
then
...
drools.setFocus("calculate");
end
rule "Rule 1"
dialect "java"
lock-on-active true
agenda-group "calculate"
when
...
then
...
end
rule "Rule 2"
dialect "java"
lock-on-active true
agenda-group "calculate"
when
...
then
...
end
The result is:
Rule Init
Rule 2
Rule 1
You can also use ruleflow (ruleflow-group) to achieve this. I think it is
the preferred way.
Hope it helps.
Best Regards,
Michal
On Wed, Sep 10, 2008 at 2:10 PM, thomas kukofka <thomaskukofka(a)web.de>wrote:
Hello,
thanks for your quick reply.
I understand your explanation, but adding the *lock-on-active rule
attribute to rule 1 and 2 only results that none of these rules is executed.
What I want to be excuted for the values below:
* TestObject io = new TestObject(TestObject.Type.INPUT);
io.setDoublePropertyValue(TestObject.PARAMETER1, 0.2);
TestObject io2 = new TestObject(TestObject.Type.INPUT);
io2.setDoublePropertyValue(TestObject.PARAMETER1, 7.3);
insert(io);
insert(io2);
fireallrules();
is:
*Rule Init
Rule 1
Rule 2
*
Best Regards
Thomas
*Hi,
Looking at the .drl file, rules 1,2 are updating objects that are part of
their conditions. That will loop even with no-loop set to true.
Look at lock-on-active rule attribute, which may solve your issue.
Best Regards,
Michal*