[rules-users] Calling a function from When part
Stephen Masters
stephen.masters at me.com
Mon Aug 6 07:42:31 EDT 2012
Hi Sam,
Probably your best bet would be to create a separate rule, which evaluates the function in the RHS and inserts a fact encapsulating the results into working memory. That can be set to no-loop or to have a negative match on the fact it creates.
rule "eval function"
no-loop
when
$request : RequestFact()
then
FunctionResult result = functionCall();
insertLogical(result);
end
rule "business rule"
when
$request : RequestFact()
$functionResult : FunctionResult()
then
// do something
end
… or something vaguely similar. This way your function call is only evaluated once, and the business rule does not fire until the function has been evaluated.
Steve
On 6 Aug 2012, at 08:34, RulesUsers wrote:
> Hey laune, I think we are mixing up the things.
> My requirement is to call a method in an helper class, that in turn accesses
> the db.
>
>
> Currently i have done with
> */evel(functionCall() )/* //The return type of the method is boolean
>
> *But the problem is, once the control enters WHEN part of the rule it making
> multiple calls to this method ( checked by putting in SYSO statements). But
> i want this call to take place once.*
>
>
> So it will be very helpful, if any once can suggest me any other way to make
> function call from when part.
> Also tried with
>
> /*$A : Boolean() from functionCall( )
> eval( $A )*/
>
>
> But the result is same.
>
> Also please provide your inputs if it is not possible to handle the problem,
> where in it make multiple function call.
>
>
> Regards,
> Sam
>
>
>
> --
> View this message in context: http://drools.46999.n3.nabble.com/Calling-a-function-from-When-part-tp4018987p4019024.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list