[jboss-jira] [JBoss JIRA] (DROOLS-1474) Activation.getObjectsDeep() should include "exists" elements too

Mario Fusco (JIRA) issues at jboss.org
Mon Mar 13 04:30:00 EDT 2017


    [ https://issues.jboss.org/browse/DROOLS-1474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13376529#comment-13376529 ] 

Mario Fusco commented on DROOLS-1474:
-------------------------------------

This is a totally different requirement from the one regarding the accumulate. The accumulate node actually processes all the accumulated items and also keeps them in its memory to support the reverse operation. Conversely the exists node only matches the first positive occurrence and never evaluates all possible others at all. Evaluating all objects that could match the exists condition will uselessly and dramatically slow down the engine. 

This requirement could be possibly fulfilled by plugging in a different implementation of the exists node (enabled through a builder option), but in my opinion the effort to implement this solution largely overcome the advantages.

> Activation.getObjectsDeep() should include "exists" elements too
> ----------------------------------------------------------------
>
>                 Key: DROOLS-1474
>                 URL: https://issues.jboss.org/browse/DROOLS-1474
>             Project: Drools
>          Issue Type: Enhancement
>          Components: core engine
>    Affects Versions: 7.0.0.Beta6
>            Reporter: Geoffrey De Smet
>            Assignee: Mario Fusco
>
> _Give them a finger and they'll want a hand. Give them a hand and they'll want an arm._ (dutch proverb)
> The Activation.getObjectDeeps() method introduced for DROOLS-1470 that also includes the accumulates elements, should also include the exists elements. For example:
> {code}
>   when
>     $c : Computer(id = "c1")
>     exists Process(computer == $c)
>   then ...
> {code}
> with this data
> {code}
>   Computer c1;
>   Computer c2;
>   Computer c3;
>   Process pA = new Process(c1);
>   Process pB = new Process(c2);
>   Process pC = new Process(c1);
>   Process pD = new Process(c3);
> {code}
> gives this result
> {code}
>   activation.getObjectsDeep() // includes c1, pA and pC.
> {code}
> The goal is to identify all objects that matched when this rule got fired. In a negative score rule, all those objects are to blame and by focusing to change any of those, it's more likely to improve the overall solution.



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list