[rules-dev] Get node's rule
Edson Tirelli
tirelli at post.com
Wed Nov 12 08:51:28 EST 2008
BuildContext.
2008/11/12 Waleed Zedan <wzedan at gmail.com>
> Hi,
>
> I tried your guidelines, but I need to get the rule id (or object) and
> store it in the ObjectTypeNode , the problem I don't know from where to get
> this information as this is the stack trace till the ObjectTypeNode
> constructor.
>
> ObjectTypeNode.<init>(int, ObjectType, BuildContext) line: 96
> PatternBuilder.attachAlphaNodes(BuildContext, BuildUtils, Pattern, List)
> line: 187
> PatternBuilder.attachPattern(BuildContext, BuildUtils, Pattern) line: 88
>
> PatternBuilder.build(BuildContext, BuildUtils, RuleConditionElement) line:
> 60
> GroupElementBuilder$AndBuilder.build(BuildContext, BuildUtils,
> RuleConditionElement) line: 111
> GroupElementBuilder.build(BuildContext, BuildUtils, RuleConditionElement)
> line: 69
> ReteooRuleBuilder.addSubRule(BuildContext, GroupElement, Rule) line: 149
>
> ReteooRuleBuilder.addRule(Rule, InternalRuleBase,
> ReteooBuilder$IdGenerator) line: 122
> ReteooBuilder.addRule(Rule) line: 119
> ReteooRuleBase.addRule(Rule) line: 266
>
> Can you give me guidelines on how to get the rule object or rule name in
> the ObjectTypeNode constructor?
>
> Thanks.
>
>
> On Wed, Nov 12, 2008 at 7:56 AM, Waleed Zedan <wzedan at gmail.com> wrote:
>
>> Thanks Mark And Edson for your guidlines.
>>
>> I need to gather statistics about how many rules have been fired, and also
>> partial rule firing, for example if a rule 1 has 3 conditions, 1 of them is
>> never fired, but the other conditions get fired, then we have to remove this
>> condition. (the rule firing data will be persisted somewhere).
>>
>> Thanks.
>>
>>
>>
>> On Mon, Nov 10, 2008 at 10:45 PM, Edson Tirelli <tirelli at post.com> wrote:
>>
>>>
>>> I would follow a different path. During network building you have that
>>> information. So, make the nodes reference their rules objects, or have a
>>> String[] for the rule names at least.
>>> Some considerations:
>>>
>>> * A node may be shared among multiple rules, so you will need a list of
>>> rule references for each node.
>>>
>>> * Be careful with memory consumption. Find a cheap way to store such
>>> information.
>>>
>>> * Make sure your schema does not increase serialization cost too much.
>>>
>>> At runtime, then you have the information ready to go in each node.
>>>
>>> What are you working on? Would you be willing to contribute back to
>>> the project?
>>>
>>> []s
>>> Edson
>>>
>>> 2008/11/10 Mark Proctor <mproctor at codehaus.org>
>>>
>>> Waleed Zedan wrote:
>>>>
>>>> Hi,
>>>>
>>>> in AlphaNode.java (similarly beta nodes descendants)
>>>> public void assertObject(final InternalFactHandle handle,
>>>> final PropagationContext context,
>>>> final InternalWorkingMemory workingMemory)
>>>> throws FactException {
>>>> if ( this.constraint.isAllowed( handle.getObject(),
>>>> workingMemory,
>>>> ...
>>>> }
>>>> // I need to put code here to get the rule and previous statisfied
>>>> conditions
>>>> }
>>>>
>>>> I need to get rule that owns the alpha or beta node as well as all the
>>>> previous conditions that have been satisfied.
>>>>
>>>> For example:
>>>> Rule 1 :
>>>> Condition1 -> Node1
>>>> Condition2 -> Node2
>>>> Condition3 -> Node3
>>>>
>>>> so if fact1 satisfies condition 1 & 2 only, but condition 3 doesn't
>>>> satisfy it, I need to store the information that rule 1 with condition 1 &
>>>> condition 2 have been satisfied.
>>>>
>>>> So , how can I get the rule that owns the condition?
>>>> Can I get this information from
>>>> workingMemoryEventSupport.fireObjectInserted event?
>>>>
>>>> The rete network information is not exposed publicly. Do you know how to
>>>> get access to the nodes themselves already? Via the Rete object on the
>>>> RuleBase, you'll need to cast the workingmemory and rulebase to
>>>> implementations to do this. From there do you know how traverse the network,
>>>> and from there now to lookup the node memories? The node memories are in the
>>>> workingmemory, you can see the method in each node how it retrieves that
>>>> memory.
>>>>
>>>> Mark
>>>>
>>>>
>>>> Thanks,
>>>> --
>>>> Waleed Zedan
>>>> SCJP 1.4 , CCNA
>>>>
>>>> ------------------------------
>>>>
>>>> _______________________________________________
>>>> rules-dev mailing listrules-dev at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-dev
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> rules-dev mailing list
>>>> rules-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Edson Tirelli
>>> JBoss Drools Core Development
>>> JBoss, a division of Red Hat @ www.jboss.com
>>>
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>>>
>>
>>
>> --
>> Waleed Zedan
>> SCJP 1.4 , CCNA
>>
>
>
>
> --
> Waleed Zedan
> SCJP 1.4 , CCNA
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
--
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-dev/attachments/20081112/f634d2d5/attachment.html
More information about the rules-dev
mailing list