On 05/06/2013, Ramon Buckland <ramon(a)thebuckland.com> wrote:
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();
Looks like it.
Do I need to import kcontext ? or is it implicitly in scope already ?
No, cf. "The Right Hand Side (then)" (Expert manual).
> 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 ?
A LHS is either matching or not. Salience just orders activations for firing.
Will the below example work ? Will "b only" fire last like I want it to ?
Yes (unless one of the "then ..." decides to retract or change Foo).
Note that
rule "proceed to Worker Group"
salience -1000
when
then
kcontext.getKnowledgeRuntime().getAgenda().getAgendaGroup(
"WorkerGroup" ).setFocus();
end
would be sufficient to proceed in any case, not requiring some fact to
meet some constraint, which may or may not be preferable.
-W
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
when
Foo (a == true)
then
…
end
rule "a and b"
agenda-group "Initialisation"
salience 5
when
Foo (a == true, b == true)
then
…
end
rule "b only"
agenda-group "Initialisation"
salience 1
when
Foo (b == true)
then
kcontext.getKnowledgeRuntime().getAgenda().getAgendaGroup( "WorkerGroup"
).setFocus();
end
Many thanks
Ramon
Ramon Buckland
ramon(a)thebuckland.com
On 5 Jun 2013, at 06:47, Wolfgang Laun <wolfgang.laun(a)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
> looking.)
>
> -W
>
>
> On 04/06/2013, Ramon Buckland <ramon(a)thebuckland.com> wrote:
>> Hi,
>>
>> 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(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users