The agenda, when calling getNextFocus, calls getLast(). Which causes
the consequences to be executed in reverse order. Is there a reason
for that?

For example, the following example....

   public static void main(String[] args) throws Exception {

       StringBuffer rules = new StringBuffer();
       rules.append("package example;\n")
               .append("import java.lang.Integer;\n")
               .append("rule \"Count\"\n")
               .append("when\n")
               .append("i : Integer()\n")
               .append("then\n")
               .append("System.out.println(i);\n")
               .append("end\n");

       System.out.println(rules);


       final PackageBuilder builder = new PackageBuilder();
       builder.addPackageFromDrl(new StringReader(rules.toString()));

       final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
       ruleBase.addPackage(builder.getPackage());

       final WorkingMemory workingMemory = ruleBase.newWorkingMemory();

       for (int i = 0; i < 10; i++) {
           workingMemory.assertObject(new Integer(i));
       }

       workingMemory.fireAllRules();
   }


Will print out...
9
8
7
6
5
4
3
2
1
0

Reply via email to