Thank you for your responses.
Is the "from" CE (condition expression) available in
3.0.5?
-Rahul
--- Edson Tirelli <tirelli(a)post.com> wrote:
Michael,
Yes, it is surelly heavier to make database
calls in the LHS of a
rule when compared to handling objects in memory.
Sometimes, though, it
is not possible or not worth to load your objects
from the database in
advance and you need to go for loading as needed in
LHS. Although, the
best would be to use "from" CE, as it caches some
results and allow
Rahul to do more or less what he wants.
Example: pretend you have Power and Temperature
objects, you could
do something like:
rule "Device not working (condition id = 4)"
when
alertDefinition : AlertDefinition (conditionID==
4, eid : entityID)
Power( value < 1000 ) from dao.getPower( eid )
Temperature( deviceTemp > 50, ambTemp > 40 )
from dao.getTemperature(eid)
then
log("Triggered Device not working alert for "+
eid);
end
Hope it helps,
Edson
Anstis, Michael (M.) wrote:
>It seems inefficient to make calls to a database
from a rule LHS as (I'm
>guessing [Edson?]) that the Rete network can't be
built\optimised around
>an evaluated predicate (trying to use the correct
language, but possibly
>failing badly). Would the AlertCondition not
already have these
>properties populated? Making the rule simpler too:
>
>Rule "Device not working (condition id = 4)"
> when
> $ac : AlertCondition (conditionId ==4, $eid :
entityID,
>$p : power, $at : ambTemperature)
> then
> log("Triggered Device not working alert for " +
$eid +
>", power=" + $p + ", ambient temperature=" + $at);
>end
>
>-----Original Message-----
>From: rules-users-bounces(a)lists.jboss.org
>[mailto:rules-users-bounces@lists.jboss.org] On
Behalf Of Rahul Phadnis
>Sent: 22 February 2007 21:12
>To: rules-users(a)lists.jboss.org
>Subject: [rules-users] Rule definition help
>
>I am very new to JBoss rules and I am trying to use
it
>for evaluating alert conditions.
>
>I am asserting the AlertDefinition object as a fact
>into the working memory.
>
>The rules file would define a variety of alert
>condition rules.
>for example
>
>rule "Device not working (condition id = 4)"
> # the if part
> when
> alertDefinition : AlertDefinition
(conditionID
>== 4,
> eid : entityID)
> # here i would like to get the last power
>reading from device
> # with id == eid
> eval (dao.getPower(eid).doubleValue() <
1000)
> # then get temperature from the device
> eval ((dao.getTemperature(eid) != null &&
>dao.getTemperature(eid) > 50)
> || (dao.getAmbTemperature(eid) != null &&
>dao.getAmbTemperature(eid) > 40)
> )
>
> then
> # what do we do if the rule evaluates to
true
> log("Triggered Device not working alert
for "
>+ eid);
>end
>
>
>Here are my questions:
>
>1. Am using the evals correctly? Can I possibly
split
>this into multiple rules to make it work better?
>
>2. Can assign dao.getTemperature(eid) to a field.
The
>getTemperature call is expensive and doing it twice
is
>not right.
>
>Any pointer would be appreciated.
>
>-Rahul
>
>_______________________________________________
>rules-users mailing list
>rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
>
>_______________________________________________
>rules-users mailing list
>rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3124-6000
Mobile: +55 11 9218-4151
JBoss, a division of Red Hat @
www.jboss.com
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users