Ok..I was under the impression that the
rule would fire for each Order object that was injected, and in that case
variables apply to each Order, hence accessing them from the consequences(right
side) would be from an indfividual Order. I guess I am misundertanding how it
works.
Thanks for the clarification.
Chris
From:
rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On
Behalf Of Edson Tirelli
Sent: Wednesday, June 17, 2009
1:37 PM
To: Rules Users List
Subject: Re: [rules-users]
averages on different data types
Chris,
Not sure what you mean. If you want to know what is in there for
debug purposes, I guess the best way is to implement your own average()
accumulate function that prints out (or do whatever you want) with the bound
variables/facts.
For regular use, it does not makes sense to allow access to such
variable because it is bound to multiple values. For instance:
$tot : Number() from accumulate(
Order( $value : value ),
sum( $value ) )
This pattern will sum all the values from all the Order
facts in the working memory. Lets imagine that it would be possible to access
the $value variable outside the accumulate, what Order would it be bound to?
So, it makes no sense...
[]s
Edson
2009/6/17 Chris Richmond <crichmond@referentia.com>
So how can I access variables that I have populated from
within that scope delimiter(accumulate)? For instance if I did want to
access the delayTime, what strategy should be used?
Thanks,
Chris
From: rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org]
On Behalf Of Edson Tirelli
Sent: Wednesday, June 17, 2009
11:49 AM
To: Rules Users List
Subject: Re: [rules-users]
averages on different data types
Chris,
Remember that accumulate is a scope delimiter, meaning variables
bound inside accumulate are not visible outside of it. The error message you
see is the MVEL way of saying: non-existing variable (I guess you are using
mvel as the dialect for the consequence).
If you want to know what data objects are being inserted/expired
from the working memory, use a working memory listener.
[]s
Edson
2009/6/17
Chris Richmond <crichmond@referentia.com>
Hi
guys,
Building
from the stockticker sample, I have been running my own average aggregates over
time and window length and I have the following rule…it simply runs a last 10
average and outputs the average(in theory).
rule
"show averages"
when
$n : Number( doubleValue > 0 )
from accumulate (
$mdo : MyDataObject($tm: delayTime) over window:length(10) from entry-point
"DataObject stream",
average( $tm )
)
then
System.err.println($tm);
End
I
have set the limit to 0 for the average because I simply want to have it fire every
time, no matter the average(they are all positive)
However
I get this error:
Unable
to build expression for 'consequence': Failed to compile: 1 compilation
error(s):
-
(1,3) unqualified type in strict mode for: $tm '
System.err.println($tm);
' :
[Rule name='show averages']
If
I have the consequence
System.err.println($n);
Then
it outputs the average no problem, but I am trying to simply output that
indifidual value, delayTime which I have stored in $tm is an integer, so I
cannot figure out why I cannot output this value. Similarly
if I simply try as a consequence:
System.err.println($
mdo.delayTime);
I
get a similar error.
What
am I doing wrong?
Thanks,
Chris
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com