[rules-users] Dynamic rule creation

Edson Tirelli tirelli at post.com
Tue Mar 6 07:01:46 EST 2007


 
    For cases like this, there are several ways of doing. I think the 
simplest one is to assert the values you want to reason over as facts.
    So, pretent the user is supposed to enter a "threshold" value for 
your rule. Assert the threshold the user entered as a Threshold fact:

rule "somerule"
    when
        Threshold( $threshold : value )
        foo : Foo ( level > $threshold )
    then
        // do something
end

    So, in this case you don't need to generate any rule on the fly 
(that is much heavier than simply asserting/modifying/retracting facts). 
Just keep managing the user parameters as facts. This parameters can 
come from user interface, databases, configuration files, etc...
    There are other ways, but they require a lot more care (using 
globals for instance). So, I strongly recomend the above for the case 
you described.

    []s
    Edson
   

seeker wrote:

>How can I create a rule on the fly ?
>
>I have some rules working, and I want the user let chance some values in the
>conditions.
>
>Say I have somthing like
>
>rule "somerule"
>	when 
>		foo : Foo ( a : level -> ( a.floatValue() > 20.0) )
>	then
>               ...
>
>I want change the "20.0" afterwards to some other value. Is this possible ?
>What do I have to do for that?
>The drools javadocs are not that much helpful on that matter.
>
>Do I have to remove the rule, create a new one and insert it into the
>agendagroup ? Or can I modify a rule?
>What other things does somthing like this imply? (Do I have to reassert all
>facts or something?)
>
>The worst what I can think of is writing all rules including the modified
>one into a new file and start reading the rules-file, creating the
>workingmemory and building my facts once again.
>
>IS there another way?
>  
>


-- 
 Edson Tirelli
 Software Engineer - JBoss Rules Core Developer
 Office: +55 11 3124-6000
 Mobile: +55 11 9218-4151
 JBoss, a division of Red Hat @ www.jboss.com





More information about the rules-users mailing list