Hi Wolfgang, 

Thanks for the suggestions. I have a few questions, does changing the focus on the RHS work like :

kcontext.getKnowledgeRuntime().getAgenda().getAgendaGroup( "B to D" ).setFocus();

Do I need to import kcontext ? or is it implicitly in scope already ?

a low salience rule would set
the AG for the Spartan group and so on.

As I understand it, salience helps the engine decide "which" rule to run, when one or more matches, but does that mean identical factors ,, 
or just any that are applicable ? 

Will the below example work ? Will "b only" fire last like I want it to ?

class Foo { boolean a; boolean b; }

(object inserted has a and b == true), Agenda-group Focus is set to "Intialisation"

rule "a only"
agenda-group "Initialisation"
salience 10
     Foo (a == true)

rule "a and b"
agenda-group "Initialisation"
salience 5
     Foo (a == true, b == true)

rule "b only"
agenda-group "Initialisation"
salience 1
     Foo (b == true)
    kcontext.getKnowledgeRuntime().getAgenda().getAgendaGroup( "WorkerGroup" ).setFocus();

Many thanks

Ramon Buckland

On 5 Jun 2013, at 06:47, Wolfgang Laun <wolfgang.laun@gmail.com> wrote:

You can change the focus on the RHS of a rule as well, using the API.
Starting in the default agenda group, a low salience rule would set
the AG for the Spartan group and so on.

Notice that any attribute can be set in front of or in between rules to
become effective in successive rules. This should also work in XLS,
except that you may have to create three files for your three groups.
(The XLS parser isn't very intelligent, at least wasn't last time I was


On 04/06/2013, Ramon Buckland <ramon@thebuckland.com> wrote:

I am using a Stateless Knowledge session backed behind a web rest api.
The rest api is provided by spring Mvc, so I have a stateless ksession
injected in.

As it is stateless, I have found it difficult to use agenda groups to
meet my need. And have a question to how I set this up.

My task.
In short, I have 10 or so set up rules (init rules), then a 300 odd
(work) rules, then I need to fire a few (5) (finalisation) rules.

They need to be processed in that order. If I were using stateful I
see how an agenda group solves that need.. In the calling java that is
nice. setFocus().. But stateless blocks that api.

So I have attempted with auto-focus..

In the DRL (from XLS) however getting the agenda group settings right
has been a small 'mare. Suffice to say I haven't got it working.

My options:
1. get agenda groups working.
2. split the three groups into 3 DRL files. and execute in sequence
each one using a different ksession for each.

--- on 1.

How would I construct the flow.. .. Do I use three separate auto focus
rules , one for each a.group  and set a salience ( I don think
salience helps here ) ? How do I guarantee to stack the focus using
auto-focus to follow my ordering?

-- on 2.
Can I create a separate ksession for each DRL file (injecting them in
from spring).

Thoughts ? Am I solving right ?

Many thanks. Ramon
rules-users mailing list

rules-users mailing list