[rules-users] Shadow facts

Edson Tirelli tirelli at post.com
Thu Feb 12 12:58:20 EST 2009


   Dean,

   I just committed the changes into trunk to allow support for that.
Revision #25246 in trunk.

https://jira.jboss.org/jira/browse/JBRULES-1969

   So instead of using a parameter in the insert method, just annotate the
types for which you want to use property change support.

   []s
   Edson

2009/2/11 Mark Proctor <mproctor at codehaus.org>

>  J Michael Dean wrote:
>
> I think I was not clear in my note.  I used dynamic facts with Drools 4.07
> but am migrating to Drools 5, where there is no longer a second argument to
> the insert method.  My POJOs do have property change listeners.
>
> We have deprecated the insert method in favour of an attribute of a type
> declaration for propertychangesupport, this will be in the CR.
>
> Mark
>
>
>  Here is an example rule that activates but never apparently fires:
>
>  rule "Detect insulin on"
> dialect "java"
>  when
>  decision : GlucoseDecision(currentInsulinDripRate > 0)
>  decisionState : GlucoseDecisionState( insulinOn == false )
>  then
>  decisionState.setInsulinOn(true);
> end
>
>  The relevant method that is called on the RHS:
>
>   public void setInsulinOn(boolean insulinOn) {
>  boolean oldValue = this.isInsulinOn();
>  this.insulinOn = insulinOn;
>  firePropertyChange("insulinOn", oldValue, insulinOn);
>  }
>
>  The eventual call is to fireRules which then calls executeRules in a
> callback.  Previously, I had a Boolean argument to the insert
> statements and all the code worked with the old RuleBase, RuleAgent
> objects.  But since changing to KnowledgeSession, the rules
> do not appear to fire.  Here are the relevant methods:
>
>   public void executeRules(WorkingEnvironmentCallback callback) {
>  StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
>  callback.initEnvironment(ksession);
>  ksession.fireAllRules();
>  ksession.dispose();
>  }
>
>   public void fireRules(final GlucoseDecision glucoseDecision, finalGlucoseDecisionState decisionState) {
>  rulesEngine.executeRules(new WorkingEnvironmentCallback() {
>  public void initEnvironment(StatefulKnowledgeSession workingMemory) {
>  workingMemory.insert(glucoseDecision);
>  workingMemory.insert(decisionState);
>  }
>  });
>  }
>
>
> Message: 2
> Date: Wed, 11 Feb 2009 10:26:06 -0500
> From: Edson Tirelli <tirelli at post.com>
> Subject: Re: [rules-users] Shadow facts
> To: Rules Users List <rules-users at lists.jboss.org>
> Message-ID:
>  <e6dd5ba30902110726t2b09ee9dtdc7e85ed4217f80a at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
>   Dean,
>
>   There are two unrelated things in here... the boolean flag for dynamic
> facts means your fact supports the property change listeners and you don't
> need to call modify() when you change an attribute. ShadowFacts are a
> complete different thing that should be mostly transparent to users.
>   If you can provide an example, it will be easier to help you.
>
>    []s
>    Edson
>
> 2009/2/11 J Michael Dean <mdean77 at comcast.net>
>
> I am migrating from 4.07 to 5 and my previous DRL file does not function
>
> correctly;  I previousliy inserted facts with the dynamic Boolean set true.
>
>  I understand that this is no longer done because shadow facts are "not
>
> needed" in Drools 5, but is it necessary to do anything different in the
> RHS
>
> when modifying facts?  My fact POJOs have a method for adding text to
>
> themselves.  I believe my rules are not working properly because nothing is
>
> being modified - only the initial activation set fires and then nothing
>
> happens.
>
>
>  Restated, the documentation talks about how to "avoid" shadow facts in
>
> Drools 4.07 - are the restrictions in this part of the docs necessary in
>
> Drools 5?
>
>
>  Thanks.
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>    ------------------------------
>
> _______________________________________________
> rules-users mailing listrules-users at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
 Edson Tirelli
 JBoss Drools Core Development
 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/20090212/4e7a5221/attachment.html 


More information about the rules-users mailing list