Greg,

Thanks for the example. This should do what I need. Can you point me to some 
documentation on how to create custom operators?

Earnie!




________________________________
From: Greg Barton <[email protected]>
To: Rules Users List <[email protected]>
Sent: Tue, June 22, 2010 4:29:50 PM
Subject: Re: [rules-users] Inter-fact comparison


A regular old accumulate could do this.  Doesn't even have to be custom:

rule "many bogus attempts"
when
$login : Login( $baseName : name)
$total : Number( intValue > 5 )
from accumulate( Login( this != login, eval(levenshtein(name, baseName) ),
init( int total = 0; ),
action( total++; ),
reverse( total--; ),
result( total ) )
then
//ALARM!
end

This basically says "accumulate all Logins where the name is within a 
levenshtein distance of a given Login and freak out if there's more than X."

This rule isn't all fusiony, but you get the idea.  Also, the eval in the 
accumulate could be a custom operator for readability.

--- On Tue, 6/22/10, Earnest Dyke <[email protected]> wrote:


>From: Earnest Dyke <[email protected]>
>Subject: Re: [rules-users] Inter-fact comparison
>To: "Rules Users List" <[email protected]>
>Date: Tuesday, June 22, 2010, 2:57 PM
>
>
>Thanks for the quick reply. 
>
>Yes, the original facts are already coming in via a stream (Fusion) to an 
>existing set of rules so I was hoping to build on that. What I am trying to do 
>is evaluate logins information as users are attempting to login trying to 
>identify hack attempts by a person trying to login with a slightly different 
>user name over a given period of time.
>
>Earnie!
>
>
>
>
________________________________
From: David Sinclair <[email protected]>
>To: Rules Users List
> <[email protected]>
>Sent: Tue, June 22, 2010 3:47:36 PM
>Subject: Re: [rules-users] Inter-fact comparison
>
>>Hi Earnie,
>
>What you are explaining seems pretty straight forward and would more likely 
>than not be overkill to use a rule engine. Are there other aspects of the 
>system you are leaving out that warrant the use of Drools?
>
>dave
>
>
>2010/6/22 Earnest Dyke <[email protected]>
>
>Greetings all,
>>
>>I have a requirement to compare a set of facts against each other, calculate 
>>a value that indicates the amount of difference (Levenshtein distance) 
>>between a single attribute on each fact. So I load all of my facts into 
>>working memory then what? Do I execute a rule first that creates a new set of 
>>facts which is a Cartesian product of the original set of facts, each new 
>>fact containing a reference to two original facts and the diff between them? 
>>Looked at using a custom accumulate function but I don't think that's going 
>>to do what I need since it is intended to go through a set of facts and 
>>return a single value.
>>
>>Any and all related help is appreciated.
>>
>>Earnie! 
>>
>>_______________________________________________
>>>>rules-users mailing list
>>[email protected]
>>https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>-----Inline Attachment Follows-----
>
>
>_______________________________________________
>rules-users mailing list
>[email protected]
>https://lists.jboss.org/mailman/listinfo/rules-users
> 
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to