Re: [rules-users] NPE in RightTuple
by Hsiang, Eugene
Does anybody have any experience in resolving this:
Some background: I am trying to retract a fact and before doing that, I checked the object and make sure it is not null. But still, I got null pointer exceptions.
A previous developer working with me had posted the problem in Jan 2009. Apparently, there is no final answer in that thread. Here is the old thread: http://lists.jboss.org/pipermail/rules-users/2009-January/007555.html
This is my exception:
####<Mar 11, 2010 9:16:24 AM EST> <Error> <HTTP> <epsdatbeal25> <cla-01> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1268316984268> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@22fed98 - appName: 'cla', name: 'cla.war', context-path: '/cla-web'] Root cause of ServletException.
java.lang.NullPointerException
at org.drools.util.RightTupleIndexHashTable.remove(RightTupleIndexHashTable.java:224)
at org.drools.reteoo.JoinNode.retractRightTuple(JoinNode.java:204)
at org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:210)
at org.drools.reteoo.EntryPointNode.retractObject(EntryPointNode.java:190)
at org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1078)
at org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1045)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy42.retract(Unknown Source)
Thank you so much!
- Eugene
Eugene Hsiang
Application Architect
Reston Office
The College Board
11955 Democracy Drive
Reston, VA 20190-5662
571-485-3356 (office)
703-796-0817 (Fax)
ehsiang(a)collegeboard.org<mailto:ehsiang@collegeboard.org>
www.collegeboard.com
Connect to college success
16 years
Overriding default evaluators
by Barry Kaplan
As part of my drools-scala project I am implementing evalators for scala
collections. This means that the some default evaluator operators like
"contains" and "memberOf" need to be overridden. My problem is that drools
seems to load the evaluators as defined in meta-infa/(I forget the file
name) in an arbitrary manner. This results in my scala evaluator getting
registered and then the default evaluator getting registered, overriding the
scala evaluator.
Has this variant of extensibility been considered -- not adding evaluators
as that works great -- but overriding a drools implementation? If not, I'll
have to do some internals hacking.
-bk
--
View this message in context: http://n3.nabble.com/Overriding-default-evaluators-tp441342p441342.html
Sent from the Drools - User mailing list archive at Nabble.com.
16 years
Question on contains operator with integer
by cwolfinger
Hello - I have a question on how to a contains operation with primitive
values. What I have is a message that has a field called intTest that is a
List<Integer>. If i do an intTest contains 4 check, then check compiles but
it never matches. However if I do an eval it does work. Does anyone know
how to use a primitive in a contains.
Here is a sample of the rule:
package com.sample
import com.sample.DroolsTest.Message;
rule "Test" salience 9999
#when Message( eval(intTest.contains(Integer.valueOf(4))))
when Message( intTest contains 4)
then
System.out.println("Found 4");
end
--
View this message in context: http://n3.nabble.com/Question-on-contains-operator-with-integer-tp440559p...
Sent from the Drools - User mailing list archive at Nabble.com.
16 years
Batch processing of facts in Drools?
by Ryan Fitzgerald
Hi,
In our application, we want to process a large amount of facts. However, to avoid an overload on memory and drools, we would like to process the facts in batches.
Our rules are setup so that we only insert a small number of initial or "root" facts, and then these facts trigger rules to fire that cause many other facts to be inserted, themselves triggering other rules.
One way of batching this would be for the application to only insert the root facts into memory one by one and not inserting the next root fact until the previous one (and the batch of facts associated with it) have been processed and subsequently revoked.
However, instead of the batching being controlled by the application, I would like to use a rule to do this i.e. insert all the root facts into memory and then call fireAllRules and have them processed one at a time.
Does anyone have an idea how I can write a rule that causes a set of facts to trigger their rules, one fact at a time?
Thanks.
16 years
Re: [rules-users] rules-users Digest, Vol 40, Issue 41
by Nilima R
The documentation available for Guvnor does not contain any examples .Is
there any other documentation available so that we can understand how to
create functions,dsl and other features available in Guvnor.
Nilima
____________________________________________
Experience certainty. IT Services
Business Solutions
Outsourcing
____________________________________________
From:
rules-users-request(a)lists.jboss.org
To:
rules-users(a)lists.jboss.org
Date:
03/11/2010 01:19 AM
Subject:
rules-users Digest, Vol 40, Issue 41
Sent by:
rules-users-bounces(a)lists.jboss.org
Send rules-users mailing list submissions to
rules-users(a)lists.jboss.org
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.jboss.org/mailman/listinfo/rules-users
or, via email, send a message with subject or body 'help' to
rules-users-request(a)lists.jboss.org
You can reach the person managing the list at
rules-users-owner(a)lists.jboss.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of rules-users digest..."
Today's Topics:
1. A general question about this mailing list (Nathan Bell)
2. Re: A general question about this mailing list (Geoffrey De Smet)
3. Re: Problems count and sumarizing data in facts (Yamil Bracho)
----------------------------------------------------------------------
Message: 1
Date: Wed, 10 Mar 2010 11:31:00 -0600
From: "Nathan Bell" <Nathan.Bell(a)pharmacyonesource.com>
Subject: [rules-users] A general question about this mailing list
To: <rules-users(a)lists.jboss.org>
Message-ID: <608FA11CE83EC54C98A8E4715C0EED571966DF(a)rphpost.rph.int>
Content-Type: text/plain; charset="us-ascii"
I'm fairly new to this list, but I have already seen a great deal of
helpful information being shared. The problem is that a collection of
emails makes a poor knowledge base. Has there ever been an attempt to
set up a forum/wiki/knowledgebase for the Drools community? I would be
willing to help with setting that up if it is something the community
wants. I'm guessing that this has been talked about before, so I want to
check-in with the community and ask why it does not exist already. Is
there some barrier that I am not aware of that would make a different
format undesirable?
Thank You,
Nathan Bell
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.jboss.org/pipermail/rules-users/attachments/20100310/90dfc6b...
------------------------------
Message: 2
Date: Wed, 10 Mar 2010 19:25:39 +0100
From: Geoffrey De Smet <ge0ffrey.spam(a)gmail.com>
Subject: Re: [rules-users] A general question about this mailing list
To: rules-users(a)lists.jboss.org
Message-ID: <hn8o73$b59$1(a)dough.gmane.org>
Content-Type: text/plain; charset=windows-1252; format=flowed
I personally don't believe much in a wiki (there is a drools wiki btw),
because it gets stale fast.
I believe much more in the reference manual, which is checked in in
Subversion.
In the Drools Planner manual I 've already added "meta" information,
such as where jira is and how to build from source etc etc.
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/t...
With kind regards,
Geoffrey De Smet
Nathan Bell schreef:
> I?m fairly new to this list, but I have already seen a great deal of
> helpful information being shared. The problem is that a collection of
> emails makes a poor knowledge base. Has there ever been an attempt to
> set up a forum/wiki/knowledgebase for the Drools community? I would be
> willing to help with setting that up if it is something the community
> wants. I?m guessing that this has been talked about before, so I want to
> check-in with the community and ask why it does not exist already. Is
> there some barrier that I am not aware of that would make a different
> format undesirable?
>
>
>
> Thank You,
>
>
>
> Nathan Bell
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
------------------------------
Message: 3
Date: Wed, 10 Mar 2010 19:38:09 +0000
From: Yamil Bracho <yamilbracho(a)hotmail.com>
Subject: Re: [rules-users] Problems count and sumarizing data in facts
To: Drools UserList <rules-users(a)lists.jboss.org>
Message-ID: <SNT130-w419F987761CE0A1C882981AA330(a)phx.gbl>
Content-Type: text/plain; charset="windows-1252"
Thanks Thomas.
I rewrote the rule as:
rule "Sumatoria de lineas detalle vs Header" salience 10 when Number(
$total : doubleValue) from accumulate( Map(this["_TYPE_"] ==
"D", $monto : eval(Double.parseDouble(this.get("MONTO")))),
sum($monto)) $map : Map(this["_TYPE_"] == "H",
this["MT_TOTAL"] != $total) then System.out.println("TOTAL=" +
$total); listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El n?mero del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")")); end
but I am getting errors in the parseDouble:
[828,29]: [ERR 101] Line 828:29 no viable alternative at input 'Double' in
rule "Sumatoria de lineas detalle vs Header" in pattern Map[828,67]: [ERR
102] Line 828:67 mismatched input ')' expecting 'then' in rule "Sumatoria
de lineas detalle vs Header"
Any hint...
From: TSwindells(a)nds.com
To: rules-users(a)lists.jboss.org
Date: Wed, 10 Mar 2010 15:13:49 +0000
Subject: Re: [rules-users] Problems count and sumarizing data in facts
To convert from string to double you have to full back to java:
Something along the lines of
$monto : eval(Double.parseDouble(this.get(?MONTO?)))
However even with doing this your rules are unlikely to work consistently
as you expect. Using equality tests on doubles is fundamentally unsafe as
doubles
aren?t represented exactly and may not exactly match the value you think
you have. Force instance 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 != 1.0
(dependent on floating point chipset etc). If you are dealing with
currency then it is far simpler and safer
to just operate with integers and divide by 100 when you want to display
the value. The other alternative is to use BigDecimal which will store an
exact representation but will probably require more work with getting your
accumulate function correct. Your
last option is to use Math.abs(left-right) < 0.1 to see if they are
approximately equal. More details can be found here
http://firstclassthoughts.co.uk/java/traps/java_double_traps.html
Thomas
From: rules-users-bounces(a)lists.jboss.org [
mailto:rules-users-bounces@lists.jboss.org]
On Behalf Of Yamil Bracho
Sent: 10 March 2010 14:27
To: Drools UserList
Subject: Re: [rules-users] Problems count and sumarizing data in facts
I solved the counting of detail lines this way:
rule "Contador de lineas detalle vs Header"
salience 10
when
Number($count : intValue) from accumulate(
$mp : Map(this["_TYPE_"] == "D"), count($mp))
$map : Map(this["_TYPE_"] == "H",
this["NU_REGISTROS"] != $count)
then
System.out.println("NumRecs=" + $count);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"El n?mero del lineas de detalle
(" + $count +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
However, I still got problem with summarize the amounts. I wrote
rule "Sumatoria de lineas detalle vs Header"
salience 10
when
Number( $total : doubleValue) from accumulate(
Map(this["_TYPE_"] == "D",
$monto : ((Number) this["MONTO"]),
sum($monto)))
$map : Map(this["_TYPE_"] == "H",
this["MT_TOTAL"] != $total)
then
System.out.println("TOTAL=" + $total);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El n?mero
del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
And i am getting mismatched input" so my question is how to convert a
string to double in this line "$monto : ((Number) this["MONTO"])," ?
TIA
Yamil
From: yamilbracho(a)hotmail.com
To: rules-users(a)lists.jboss.org
Date: Tue, 9 Mar 2010 17:41:43 +0000
Subject: [rules-users] Problems count and sumarizing data in facts
Hi, I have two kind of facts in a map.
There is a field called _TYPE_ (H)eader, D)etail)
In the Header line I have two String fields, one for the number of details
lines ("NU_REGISTROS") and another for the sum of the detail line
("MT_TOTAL")
In the detail lines I only have a String field called "MONTO"
I would like to build two rules. One to check the count of detail lines
versus the field in the header line so I wrote :
rule "Contador de lineas detalle vs Header"
salience 10
when
$numRecs : Number()
from accumulate(Map(this["_TYPE_"] == "D", $d :
this["_NUMLINE_"]), count($d))
$map : Map(this["_TYPE_"] == "H",
this["NU_REGISTROS"] != $numRecs)
then
System.out.println("NumRecs=" + $numRecs);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El n?mero
del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
However I always got "NumRecs=1" when i print out the value of $numRecs
but I am absolute sure there is two details lines...
Second when i try to sumarize the total field in the details line i got
(MONTO in the detail line is a string):
rule "Sumatoria de lineas detalle vs Header"
salience 10
when
$total : Number()
from accumulate(Map(this["_TYPE_"] == "D",
$monto : this["MONTO"]),
sum(eval(Double.valueOf((String) $monto
))))
$map : Map(this["_TYPE_"] == "H",
this["MT_TOTAL"] != $total)
then
System.out.println("TOTAL=" + $total);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El n?mero
del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
but I got
Rule Compilation error : [Rule name='Sumatoria de lineas detalle vs
Header']
rule/Rule_Sumatoria_de_lineas_detalle_vs_Header_0.java (9:1313) :
The method eval(Double) is undefined for the type
Rule_Sumatoria_de_lineas_detalle_vs_Header_0
Any help in those tow problems
TIA
Yamil
Actual?zate gratis al nuevo Internet Explorer 8 y
navega m?s seguro
Compartir tus mejores FOTOS es f?cil en Messenger
?DESCUBRE c?mo!
**************************************************************************************
This message is confidential and intended only for the addressee. If you
have received this message in error, please immediately notify the
postmaster(a)nds.com and delete it from your system as well as any copies.
The content of e-mails as well as traffic data
may be monitored by NDS for employment and security purposes. To protect
the environment please do not print this e-mail unless necessary.
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18
4EX, United Kingdom. A company registered in England and Wales. Registered
no. 3080780. VAT no. GB 603 8808 40-00
**************************************************************************************
This message is confidential and intended only for the addressee. If you
have received this message in error, please immediately notify the
postmaster(a)nds.com and delete it from your system as well as any copies.
The
content of e-mails as well as traffic data may be monitored by NDS for
employment and security purposes.
To protect the environment please do not print this e-mail unless
necessary.
An NDS Group Limited company. www.nds.com
_________________________________________________________________
Recibe en tu m?vil un SMS con tu Hotmail recibido. ?Date de alta ya!
http://serviciosmoviles.es.msn.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.jboss.org/pipermail/rules-users/attachments/20100310/0149706...
------------------------------
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
End of rules-users Digest, Vol 40, Issue 41
*******************************************
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you
16 years
Issue with comparing values from multiple lists
by Gaurav
Hi All,
I am facing issues with iterating multiple lists and matching the
statements.
1. dealTechList - This is a list which contains DealTypeTotal class and
which has following params.
protected String summaryType ;
protected double listPrice;
protected double discount;
protected double valueDiscount;
protected double netPrice;
2. routingRuleList - This is another list which has all the routing rules
data which contains RoutingRule Object.
I want to collect all the routing rules satisfying these conditions.
a. summaryType should match with Routing Rules nonStdTerms.
b. listPrice of techList should fall between routing rules' listPriceFrom
and listPriceTo.
b. discount of techList should fall between routing rules' discountFrom and
discountTo.
$selectedASTRulesWithOutHier : ArrayList()
from collect ($routingRule : RoutingRule(currency == $curr
&& flexAttribute4 !="SDM"
&& (
listPriceFrom <= ???? && listPriceTo > ???
&& discountPriceFrom <= ??? && discountPriceTo > ??
&& nonStdTerm == ??? )
)
from $routingRuleList)
There could be multiple DealTypeTotal objects present in dealTechList.
Can some one please suggest any solution to this problem.
Thanks,
Gaurav
--
View this message in context: http://n3.nabble.com/Issue-with-comparing-values-from-multiple-lists-tp44...
Sent from the Drools - User mailing list archive at Nabble.com.
16 years
Re: [rules-users] rules-users Digest, Vol 40, Issue 41
by Nathan Bell
True. I probably should not have included wiki in that list. What I am
thinking of is more along the lines of a forum (think stackoverflow.com)
where conversations are recorded, can be commented on, voted on, rated,
etc. Some mechanism where conversations like the ones that occur in this
mailing list are persisted and become searchable.
-Nathan
Date: Wed, 10 Mar 2010 19:25:39 +0100
From: Geoffrey De Smet <ge0ffrey.spam(a)gmail.com>
Subject: Re: [rules-users] A general question about this mailing list
To: rules-users(a)lists.jboss.org
Message-ID: <hn8o73$b59$1(a)dough.gmane.org>
Content-Type: text/plain; charset=windows-1252; format=flowed
I personally don't believe much in a wiki (there is a drools wiki btw),
because it gets stale fast.
I believe much more in the reference manual, which is checked in in
Subversion.
In the Drools Planner manual I 've already added "meta" information,
such as where jira is and how to build from source etc etc.
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/
trunk/target/docs/drools-planner/html_single/index.html
With kind regards,
Geoffrey De Smet
Nathan Bell schreef:
> I?m fairly new to this list, but I have already seen a great deal of
> helpful information being shared. The problem is that a collection of
> emails makes a poor knowledge base. Has there ever been an attempt to
> set up a forum/wiki/knowledgebase for the Drools community? I would be
> willing to help with setting that up if it is something the community
> wants. I?m guessing that this has been talked about before, so I want
to
> check-in with the community and ask why it does not exist already. Is
> there some barrier that I am not aware of that would make a different
> format undesirable?
>
>
>
> Thank You,
>
>
>
> Nathan Bell
>
>
>
>
>
------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
------------------------------
Message: 3
Date: Wed, 10 Mar 2010 19:38:09 +0000
From: Yamil Bracho <yamilbracho(a)hotmail.com>
Subject: Re: [rules-users] Problems count and sumarizing data in facts
To: Drools UserList <rules-users(a)lists.jboss.org>
Message-ID: <SNT130-w419F987761CE0A1C882981AA330(a)phx.gbl>
Content-Type: text/plain; charset="windows-1252"
Thanks Thomas.
I rewrote the rule as:
rule "Sumatoria de lineas detalle vs Header" salience 10 when
Number( $total : doubleValue) from accumulate(
Map(this["_TYPE_"] == "D", $monto :
eval(Double.parseDouble(this.get("MONTO")))), sum($monto))
$map : Map(this["_TYPE_"] == "H", this["MT_TOTAL"] !=
$total) then System.out.println("TOTAL=" + $total);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El n?mero del lineas de detalle (" + $total +
") no empareja con lo del encabezado (" + $map.get("NU_REGISTROS") +
")")); end
but I am getting errors in the parseDouble:
[828,29]: [ERR 101] Line 828:29 no viable alternative at input 'Double'
in rule "Sumatoria de lineas detalle vs Header" in pattern Map[828,67]:
[ERR 102] Line 828:67 mismatched input ')' expecting 'then' in rule
"Sumatoria de lineas detalle vs Header"
Any hint...
From: TSwindells(a)nds.com
To: rules-users(a)lists.jboss.org
Date: Wed, 10 Mar 2010 15:13:49 +0000
Subject: Re: [rules-users] Problems count and sumarizing data in facts
To convert from string to double you have to full back to java:
Something along the lines of
$monto : eval(Double.parseDouble(this.get(?MONTO?)))
However even with doing this your rules are unlikely to work
consistently as you expect. Using equality tests on doubles is
fundamentally unsafe as doubles
aren?t represented exactly and may not exactly match the value you
think you have. Force instance 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
!= 1.0 (dependent on floating point chipset etc). If you are dealing
with currency then it is far simpler and safer
to just operate with integers and divide by 100 when you want to
display the value. The other alternative is to use BigDecimal which
will store an exact representation but will probably require more work
with getting your accumulate function correct. Your
last option is to use Math.abs(left-right) < 0.1 to see if they are
approximately equal. More details can be found here
http://firstclassthoughts.co.uk/java/traps/java_double_traps.html
Thomas
From: rules-users-bounces(a)lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org]
On Behalf Of Yamil Bracho
Sent: 10 March 2010 14:27
To: Drools UserList
Subject: Re: [rules-users] Problems count and sumarizing data in facts
I solved the counting of detail lines this way:
rule "Contador de lineas detalle vs Header"
salience 10
when
Number($count : intValue) from accumulate(
$mp : Map(this["_TYPE_"] == "D"), count($mp))
$map : Map(this["_TYPE_"] == "H",
this["NU_REGISTROS"] != $count)
then
System.out.println("NumRecs=" + $count);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"El n?mero del lineas de
detalle (" + $count +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
However, I still got problem with summarize the amounts. I wrote
rule "Sumatoria de lineas detalle vs Header"
salience 10
when
Number( $total : doubleValue) from accumulate(
Map(this["_TYPE_"] == "D",
$monto : ((Number) this["MONTO"]),
sum($monto)))
$map : Map(this["_TYPE_"] == "H",
this["MT_TOTAL"] != $total)
then
System.out.println("TOTAL=" + $total);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El
n?mero del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
And i am getting mismatched input" so my question is how to convert a
string to double in this line "$monto : ((Number) this["MONTO"])," ?
TIA
Yamil
From: yamilbracho(a)hotmail.com
To: rules-users(a)lists.jboss.org
Date: Tue, 9 Mar 2010 17:41:43 +0000
Subject: [rules-users] Problems count and sumarizing data in facts
Hi, I have two kind of facts in a map.
There is a field called _TYPE_ (H)eader, D)etail)
In the Header line I have two String fields, one for the number of
details lines ("NU_REGISTROS") and another for the sum of the detail
line ("MT_TOTAL")
In the detail lines I only have a String field called "MONTO"
I would like to build two rules. One to check the count of detail lines
versus the field in the header line so I wrote :
rule "Contador de lineas detalle vs Header"
salience 10
when
$numRecs : Number()
from accumulate(Map(this["_TYPE_"] == "D", $d :
this["_NUMLINE_"]), count($d))
$map : Map(this["_TYPE_"] == "H",
this["NU_REGISTROS"] != $numRecs)
then
System.out.println("NumRecs=" + $numRecs);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El
n?mero del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
However I always got "NumRecs=1" when i print out the value of $numRecs
but I am absolute sure there is two details lines...
Second when i try to sumarize the total field in the details line i got
(MONTO in the detail line is a string):
rule "Sumatoria de lineas detalle vs Header"
salience 10
when
$total : Number()
from accumulate(Map(this["_TYPE_"] == "D",
$monto : this["MONTO"]),
sum(eval(Double.valueOf((String) $monto
))))
$map : Map(this["_TYPE_"] == "H",
this["MT_TOTAL"] != $total)
then
System.out.println("TOTAL=" + $total);
listBitacora.add(new BitacoraDTO($map.get("_NUMLINE_"),
"Error en el Detalle: El
n?mero del lineas de detalle (" + $total +
") no empareja con lo del
encabezado (" + $map.get("NU_REGISTROS") + ")"));
end
but I got
Rule Compilation error : [Rule name='Sumatoria de lineas detalle vs
Header']
rule/Rule_Sumatoria_de_lineas_detalle_vs_Header_0.java (9:1313)
: The method eval(Double) is undefined for the type
Rule_Sumatoria_de_lineas_detalle_vs_Header_0
Any help in those tow problems
TIA
Yamil
Actual?zate gratis al nuevo Internet Explorer 8 y
navega m?s seguro
Compartir tus mejores FOTOS es f?cil en Messenger
?DESCUBRE c?mo!
************************************************************************
**************
This message is confidential and intended only for the addressee. If you
have received this message in error, please immediately notify the
postmaster(a)nds.com and delete it from your system as well as any copies.
The content of e-mails as well as traffic data
may be monitored by NDS for employment and security purposes. To
protect the environment please do not print this e-mail unless
necessary.
NDS Limited. Registered Office: One London Road, Staines, Middlesex,
TW18 4EX, United Kingdom. A company registered in England and Wales.
Registered no. 3080780. VAT no. GB 603 8808 40-00
************************************************************************
**************
This message is confidential and intended only for the addressee. If you
have received this message in error, please immediately notify the
postmaster(a)nds.com and delete it from your system as well as any copies.
The
content of e-mails as well as traffic data may be monitored by NDS for
employment and security purposes.
To protect the environment please do not print this e-mail unless
necessary.
An NDS Group Limited company. www.nds.com
_________________________________________________________________
Recibe en tu m?vil un SMS con tu Hotmail recibido. ?Date de alta ya!
http://serviciosmoviles.es.msn.com/
16 years
Accumulator function
by Glenn Macgregor
Hi All,
I am building an accumulator function to get the maximum value with a limit, so for instance I have need to find the highest negative (closest to 0 without being positive). I am calling the accumulator maxnegative, I have created the function but can't seem to figure out how to get the engine to recognize it. The only documentation I have seen about it states you need to add a config line to the configuration file or use a system property. What configuration file is this referring to and/or what system property can I set to make this work.
Thanks
Glenn
16 years
A general question about this mailing list
by Nathan Bell
I'm fairly new to this list, but I have already seen a great deal of
helpful information being shared. The problem is that a collection of
emails makes a poor knowledge base. Has there ever been an attempt to
set up a forum/wiki/knowledgebase for the Drools community? I would be
willing to help with setting that up if it is something the community
wants. I'm guessing that this has been talked about before, so I want to
check-in with the community and ask why it does not exist already. Is
there some barrier that I am not aware of that would make a different
format undesirable?
Thank You,
Nathan Bell
16 years
Template salience
by Bertrand Grottier
Hello,
Is it possible to specify a template salience such as:
function long getNbJours(String pStrDDeb, String pStrDFin)
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date dDeb = sdf.parse(pStrDDeb) ;
Date dFin = sdf.parse(pStrDFin) ;
long diff = dFin.getTime() - dDeb.getTime() ;
return (diff / (24 * 60 * 60 * 1000)) ;
}
template "tarification_produit"
rule "Periode(a){row.rowNumber}"
salience getNbJours("@{ddeb}", "@{dfin}")
when
$p : Produit(id == 1, eval( dDeb.before( getDate("@{ddeb}") ) ) )
then
$p.setId(2) ;
$p.setPrix(@{prix}) ;
update( $p );
end
end template
I encounter a java.lang.NullPointerException.
Thank you in advance for your help.
Regards,
Benoît
_________________________________________________________________
Hotmail arrive sur votre téléphone ! Compatible Iphone, Windows Phone, Blackberry, …
http://www.messengersurvotremobile.com/?d=Hotmail
16 years