[rules-users] Shadow facts
Mark Proctor
mproctor at codehaus.org
Wed Feb 11 21:13:20 EST 2009
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, final
> GlucoseDecisionState 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 <mailto:tirelli at post.com>>
>> Subject: Re: [rules-users] Shadow facts
>> To: Rules Users List <rules-users at lists.jboss.org
>> <mailto:rules-users at lists.jboss.org>>
>> Message-ID:
>> <e6dd5ba30902110726t2b09ee9dtdc7e85ed4217f80a at mail.gmail.com
>> <mailto: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
>> <mailto: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 <mailto:rules-users at lists.jboss.org>
>>> https://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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090212/6fa590ea/attachment.html
More information about the rules-users
mailing list