Don't think procedurally, just write the *rule* for a missing post ;-)

rule "missing fence post"
when
    FencePost( $d: distanceFromStart )
    FencePost( distanceFromStart == $d + 2*FencePost.GAP )
    not FencePost( distanceFromStart == $d + FencePost.GAP )
then
    System.out.println( "Missing: " + ($d + FencePost.GAP) );
end

-W

On 9 February 2012 16:41, mikeg <mike@thegoldners.com> wrote:
I need to write a rule to identify a missing element in a group of facts.

For example, let us say I want to ensure that my fence has a fence post
every 8 feet.  My fact declaration is as follows:

declare FencePost
 identifier : String
 distanceFromStart: Long
end

If I add the following facts into my session:

FencePost("a", 0)
FencePost("x", 8)
FencePost("e", 24)

I want a rule that will notify the user that there is a missing fence post
between "x" and "e".

I've been looking into using "collect" into a TreeSet/TreeMap to get a
collection sorted on the "distanceFromStart", but I cannot figure out how to
compare adjacent elements in the collection.

Any ideas?

--
View this message in context: http://drools.46999.n3.nabble.com/How-do-I-write-a-rule-to-detect-a-missing-value-in-a-group-of-facts-tp3729818p3729818.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users