[rules-users] Cant seem to fire a dynamically added rule
Edson Tirelli
tirelli at post.com
Tue Mar 4 14:41:12 EST 2008
Can you please provide an executable, self contained test case? I will
take a look.
[]s
Edson
2008/3/4, samirsss <samirsavla at gmail.com>:
>
>
> I tried using the jars from the 4.0.x branch after building them and that
> still doesnt seem to change the outcome. I see that the package builder
> has
> the rule added to it and the count of the rules from it is incremented.
>
>
> public void testDynamicRules()
> {
> //Create a rule dynamically and check if it fired from log
> statements
> RuleBase ruleBase = wm.getRuleBase();
> Package[] pkg = ruleBase.getPackages();
> if(pkg[0] != null)
> {
> logger.warn("Package size before adding the rule :
> "+pkg[0].getRules().length);
> //Building a new package
> final PackageDescr packageDescr = new
> PackageDescr(pkg[0].getName() );
> //Building ruleDescriptor
> RuleDescr ruleDescr = null;
>
> String consequence = "\t\t mediator.addedNewRule();\n";
>
> ruleDescr = new RuleDescr( "Added new Rule");
> AndDescr lhs = new AndDescr();
> ruleDescr.setLhs( lhs );
>
> final PatternDescr pattern = new PatternDescr(
> "ApplicationEvent",
> //.class.getName(),
> "newAppEvent");
> lhs.addDescr( pattern );
>
>
> final FieldConstraintDescr insertedValue = new
> FieldConstraintDescr(
> "inserted" );
> final LiteralRestrictionDescr insertedFieldRes = new
> LiteralRestrictionDescr("==", "false",
> LiteralRestrictionDescr.TYPE_BOOLEAN);
> insertedValue.addRestriction(insertedFieldRes);
> pattern.addConstraint(insertedValue);
>
> final LiteralRestrictionDescr restrictionMessage = new
> LiteralRestrictionDescr("==", "Test2", LiteralRestrictionDescr.TYPE_STRING
> );
> final FieldConstraintDescr returnValue = new
> FieldConstraintDescr(
> "messageId" );
> returnValue.addRestriction(restrictionMessage);
>
> pattern.addConstraint(returnValue);
>
> ruleDescr.setConsequence( consequence );
> List attributes = new ArrayList<AttributeDescr>();
>
> attributes.add(new AttributeDescr("salience", "101"));
>
> ruleDescr.addAttribute( new AttributeDescr("dialect",
> "java") );
> ruleDescr.setAttributes(attributes);
>
> Package defaultPackage = pkg[0];
> PackageBuilderConfiguration conf = new
> PackageBuilderConfiguration();
> PackageBuilder builder = new PackageBuilder( defaultPackage,
> conf );
>
>
> packageDescr.addRule( ruleDescr );
> builder.addPackage(packageDescr);
>
>
> DrlDumper drlDumper = new DrlDumper();
>
> logger.warn("Dumping Package Descriptor for all rules: "+
> drlDumper.dump(packageDescr));
>
> int errors = builder.getErrors().getErrors().length;
> if(errors > 0)
> {
> //TODO remove the recently added rule or reload all the
> rules from
> the DRL file
> logger.warn("Error while adding a rule");
>
> }
> else
> {
> Rule newRule = builder.getPackage().getRule(
> ruleDescr.getName());
>
> logger.warn("Package after adding the rule :
> "+newRule.toString()+":
> contains: "+pkg[0].getRules().length+" rules");
>
> }
> }
> else
> {
> logger.warn("Error getting default package for adding
> rules");
> }
>
> }
>
>
> I am trying to figure out if I am doing something wrong or its an issue
> with
> Drools.
>
> --
> View this message in context:
> http://www.nabble.com/Cant-seem-to-fire-a-dynamically-added-rule-tp15810172p15834611.html
>
> Sent from the drools - user mailing list archive at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
--
Edson Tirelli
JBoss Drools Core Development
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080304/f3a04389/attachment.html
More information about the rules-users
mailing list