For Rule not firing!
by vanshi
Assuming a normal scenario, where a rule evaluates multiple variable and gets
fired, if the rule did not get fired then how will I know which variable did
not qualify or resulted in rejection of that rule and also what value of the
variable caused that? I need to error out the variable and the value that
resulted in not firing a rule.
--
View this message in context: http://www.nabble.com/For-Rule-not-firing%21-tp20433114p20433114.html
Sent from the drools - user mailing list archive at Nabble.com.
16 years
Re: Upgrading from 3.x to 4.0.7
by Knych, Thomas
Edson -
Thanks, this is EXACTLY what I was looking for...
-tk
-----Original Message-----
From: rules-users-bounces(a)lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On Behalf Of
rules-users-request(a)lists.jboss.org
Sent: Thursday, November 13, 2008 10:38 AM
To: rules-users(a)lists.jboss.org
Subject: rules-users Digest, Vol 24, Issue 48
------------------------------
Message: 4
Date: Thu, 13 Nov 2008 09:02:36 -0500
From: "Edson Tirelli" <tirelli(a)post.com>
Subject: Re: [rules-users] Upgrading from 3.x to 4.0.7
To: "Rules Users List" <rules-users(a)lists.jboss.org>
Message-ID:
<e6dd5ba30811130602i23247e76ub235a3557818121(a)mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
Following API call (or equivalent property conf) will make Drools 4
behave like Drools 3.
RuleBaseConfiguration.setRemoveIdentities( true );
[]s
Edson
2008/11/12 Knych, Thomas <thomas.knych(a)citi.com>
> Hi -
>
> I'm upgrading a large base of rules from 3.x to 4.0.7. However there
> seem to be a few semantic differences. I have rules like the below in
> a few places:
>
> rule "All items should have a unique external id"
> when
> new_item : Item( exId : externalId )
> old_item : Item( externalId == exId )
> then
> LOG.warn( "DUPE Detected: new:" + new_item + " old:" +
> old_item );
> retract( new_item );
> end
>
> And this all worked fine because 3.x would never assign the same
> object to both new_item and old_item. I know my new/old seem arbitary
> - but I'm just getting down to the minimal reproducing case. 4.x now
> will assign one instance of an object to both new_item and old_item.
> Is there any way to disable this behaviour?
>
>
> thanks,
> -Tom
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)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
16 years
Upgrading from 3.x to 4.0.7
by Knych, Thomas
Hi -
I'm upgrading a large base of rules from 3.x to 4.0.7. However there
seem to be a few semantic differences. I have rules like the below in a
few places:
rule "All items should have a unique external id"
when
new_item : Item( exId : externalId )
old_item : Item( externalId == exId )
then
LOG.warn( "DUPE Detected: new:" + new_item + " old:" +
old_item );
retract( new_item );
end
And this all worked fine because 3.x would never assign the same object
to both new_item and old_item. I know my new/old seem arbitary - but I'm
just getting down to the minimal reproducing case. 4.x now will assign
one instance of an object to both new_item and old_item. Is there any
way to disable this behaviour?
thanks,
-Tom
16 years
DSL question: how to apply same conversion multiple times?
by Charles Binford
I'm using the DSL feature of 4.07 and am having trouble getting it to
behave like I want.
I have a File object where I'm always going to have a "state"
constraint, plus one or more optional constraints based on user input.
(I'm parsing user data to generate the .dsrl file on the fly).
Samples:
file in "1.x" state where uid == 0 where gid == 0
Should turn into
$f: File ( classState == "1.x", uid == 0, gid == 0 )
The key lines from my DSL file that do this are:
[condition][]file in "{state}" state {constraints}=$f: File ( classState
== "{state}" {constraints} )
[condition][]where {constraint}=, {constraint}
Unfortunately what I get is
$f: File ( classState == "1.x", uid == 0 where gid == 0 )
If only have one "where" then all works fine. If I add another
"[condition][]where {constraint}=, {constraint}"
line in my DSL file it works. The first DSL "where" line catches the
first "where uuid" and the second DSL line catches the "where gid". On
the current path it looks like I'll have to set a hard limit on how many
constraints a user can specify and make sure I've dup'd the "where" line
that many times in the DSL file. Of course I'd much rather leave it
open and have the single "where" line apply itself as many times as it can.
Thanks in advance for any help.
Charles Binford
Sun Microsystems
16 years
Re: [rules-users] DROOLS from clause giving Error
by shikha.x.aggarwal@jpmchase.com
I think I got it working now . I didnt know that globals need to be
inserted before insert hence I made the following change and it worked-
session.setGlobal( "p1", p1 );
session.insert(event);
instead of
session.insert(event);
session.setGlobal( "p1", p1 );
Thanks for all the help.
Thanks
Shikha
Shikha X Aggarwal/JPMCHASE
11/12/2008 09:50 AM
To
Rules Users List <rules-users(a)lists.jboss.org>
cc
"Rules Users List" <rules-users(a)lists.jboss.org>,
rules-users-bounces(a)lists.jboss.org
Subject
Re: [rules-users] DROOLS from clause giving Error
Thanks for the response. However I get the following error now . The only
change I made was
session.setGlobal( "p1", p1 );
Exception in thread "main" [Error: unable to access property (null
parent): p1]
[Near : {... Unknown ....}]
^
at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(
ReflectiveAccessorOptimizer.java:621)
at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(
ReflectiveAccessorOptimizer.java:455)
at
org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(
ReflectiveAccessorOptimizer.java:279)
at org.mvel2.o
Thanks
Shikha
"Edson Tirelli" <tirelli(a)post.com>
Sent by: rules-users-bounces(a)lists.jboss.org
11/07/2008 05:58 PM
Please respond to
Rules Users List <rules-users(a)lists.jboss.org>
To
"Rules Users List" <rules-users(a)lists.jboss.org>
cc
Subject
Re: [rules-users] DROOLS from clause giving Error
You correctly set the "list" global, but you made a mistake on the
processor global:
session.setGlobal( "processor", p1 );
Should be:
session.setGlobal( "p1", p1 );
[]s
Edson
2008/11/7 <shikha.x.aggarwal(a)jpmchase.com>
I am ok in using 4.0.7 , I use want to use the "from" clause which should
be returnign data in form of list, the whole idea being I dont want to
insert objects in memory.
This is how my rule file looks like -
package org.drools.examples;
import org.drools.examples.templates.DBSubscription;
import org.drools.examples.templates.Event;
global java.util.List list
global org.drools.examples.Processor p1;
rule "Rule1"
when
$event : Event(eventId == "eventId.IR.001")
$x : DBSubscription() from p1.getUsers()
then
list.add($x);
end
This is my calling code-
List arrayList = new ArrayList();
session.setGlobal( "list", arrayList );
session.insert(event);
Processor p1 = new Processor();
session.setGlobal( "processor", p1 );
session.fireAllRules();
session.dispose();
"Edson Tirelli" <tirelli(a)post.com>
Sent by: rules-users-bounces(a)lists.jboss.org
11/07/2008 05:10 PM
Please respond to
Rules Users List <rules-users(a)lists.jboss.org>
To
"Rules Users List" <rules-users(a)lists.jboss.org>
cc
Subject
Re: [rules-users] DROOLS from clause giving Error
Drools 4.0.7 is the stable version where things just work! Drools 4 uses
MVEL 1.3. The error bellow means your "p" variable is not set. Are you
setting your global before asserting the facts???
Drools 5.0M2 is a milestone release of the development version. If you
want to use Drools 5 development version we recommend you checkout and
build from trunk, because a lot of things were developed/fixed **after**
M2 was released. Drools 5 requires MVEL 2.0.1.
[]s
Edson
2008/11/7 <shikha.x.aggarwal(a)jpmchase.com>
Hi, I am so confused with which version of DROOLS I should be using . I
trid with 5.0.0 M2 and the error I saw is below. Then I tried with 4.0.7
but it gave error as below it had references of 1.4 of MVEL version.
Exception in thread "main" org.mvel.PropertyAccessException: null pointer
exception in property: p.getUsers()
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(
ReflectiveAccessorOptimizer.java:143)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(
ReflectiveAccessorOptimizer.java:96)
at org.mvel.ASTNode.getReducedValueAccelerated(ASTNode.java:194)
at org.mvel.MVELRuntime.execute(MVELRuntime.java:87)
at org.mvel.CompiledExpression.getValue(CompiledExpression.java:98)
at org.mvel.MVEL.executeExpression(MVEL.java:219)
Can you please suggest which version of DROOLS should I be using? can you
direc me to the MAVEN site.
Thanks
shikha
"Edson Tirelli" <tirelli(a)post.com>
Sent by: rules-users-bounces(a)lists.jboss.org
11/06/2008 03:12 PM
Please respond to
Rules Users List <rules-users(a)lists.jboss.org>
To
"Rules Users List" <rules-users(a)lists.jboss.org>
cc
Subject
Re: [rules-users] DROOLS from clause giving Error
This is an MVEL problem that Mike fixed in one of the latest versions: it
was raising that error message when unable to resolve a variable reference
(processor in this case).
Can you please confirm what versions of drools and mvel are you using?
Also, try to use mvel syntax, just in case:
$x : DBSubscription(report == $event.report) from processor.users
[]s
Edson
2008/11/6 <shikha.x.aggarwal(a)jpmchase.com>
Thanks for the quick respose..I modified the rule now to -
package org.drools.examples;
import org.drools.examples.templates.DBSubscription;
import org.drools.examples.templates.Event;
global java.util.List list
global org.drools.examples.Processor processor;
rule "Rule1"
when
$event : Event(eventId == "eventId.IR.001")
$x : DBSubscription(report == $event.report) from
processor.getUsers()
then
list.add($x);
end
Still facing some issue, Looking into it
Exception in thread "main" [Error: unbalanced braces ( ... )]
[Near : {... processor.getUsers( ....}]
at org.mvel.util.ParseTools.balancedCapture(ParseTools.java:1134)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(
ReflectiveAccessorOptimizer.java:550)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(
ReflectiveAccessorOptimizer.java:438)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(
ReflectiveAccessorOptimizer.java:265)
at
org.mvel.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(
ReflectiveAccessorOptimizer.java:126)
at org.mvel.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:141)
at org.mvel.MVELRuntime.execute(MVELRuntime.java:77)
"David Sinclair" <dsinclair(a)chariotsolutions.com>
Sent by: rules-users-bounces(a)lists.jboss.org
11/06/2008 02:19 PM
Please respond to
Rules Users List <rules-users(a)lists.jboss.org>
To
"Rules Users List" <rules-users(a)lists.jboss.org>
cc
Subject
Re: [rules-users] DROOLS from clause giving Error
What is Processor? Doesn't look like it is a bound variable. Is it from
DBSubscription?
On Thu, Nov 6, 2008 at 2:11 PM, <shikha.x.aggarwal(a)jpmchase.com> wrote:
Hi,
I am using the from clause of drools and have written the following
expression -
rule "Rule1"
when
$event : Event(eventId == "eventId.IR.001"),
$dbS : DBSubscription( report == $event.report ) from
Processor.getUsers()
then
list.add($dbS);
Here processor.getUsers writtens me a list of DBSubscription, When I load
this package using
builder.addPackageFromDrl( source );
I get an error saying -
Exception in thread "main" org.drools.compiler.DroolsParserException:
Unknown error while parsing. This is a bug. Please contact the Development
team.
at org.drools.compiler.DrlParser.compile(DrlParser.java:219)
at org.drools.compiler.DrlParser.parse(DrlParser.java:73)
at org.drools.compiler.DrlParser.parse(DrlParser.java:77)
Would Appreciate any help on the same.
thanks
Shikha
This communication is for informational purposes only. It is not intended
as an offer or solicitation for the purchase or sale of any financial
instrument or as an official confirmation of any transaction. All market
prices, data and other information are not warranted as to completeness or
accuracy and are subject to change without notice. Any comments or
statements made herein do not necessarily reflect those of JPMorgan Chase
& Co., its subsidiaries and affiliates. This transmission may contain
information that is privileged, confidential, legally privileged, and/or
exempt from disclosure under applicable law. If you are not the intended
recipient, you are hereby notified that any disclosure, copying,
distribution, or use of the information contained herein (including any
reliance thereon) is STRICTLY PROHIBITED. Although this transmission and
any attachments are believed to be free of any virus or other defect that
might affect any computer system into which it is received and opened, it
is the responsibility of the recipient to ensure that it is virus free and
no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries
and affiliates, as applicable, for any loss or damage arising in any way
from its use. If you received this transmission in error, please
immediately contact the sender and destroy the material in its entirety,
whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK
legal entities.
_______________________________________________
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
This communication is for informational purposes only. It is not intended
as an offer or solicitation for the purchase or sale of any financial
instrument or as an official confirmation of any transaction. All market
prices, data and other information are not warranted as to completeness or
accuracy and are subject to change without notice. Any comments or
statements made herein do not necessarily reflect those of JPMorgan Chase
& Co., its subsidiaries and affiliates. This transmission may contain
information that is privileged, confidential, legally privileged, and/or
exempt from disclosure under applicable law. If you are not the intended
recipient, you are hereby notified that any disclosure, copying,
distribution, or use of the information contained herein (including any
reliance thereon) is STRICTLY PROHIBITED. Although this transmission and
any attachments are believed to be free of any virus or other defect that
might affect any computer system into which it is received and opened, it
is the responsibility of the recipient to ensure that it is virus free and
no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries
and affiliates, as applicable, for any loss or damage arising in any way
from its use. If you received this transmission in error, please
immediately contact the sender and destroy the material in its entirety,
whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK
legal entities.
_______________________________________________
rules-users mailing list
rules-users(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
This communication is for informational purposes only. It is not intended
as an offer or solicitation for the purchase or sale of any financial
instrument or as an official confirmation of any transaction. All market
prices, data and other information are not warranted as to completeness or
accuracy and are subject to change without notice. Any comments or
statements made herein do not necessarily reflect those of JPMorgan Chase
& Co., its subsidiaries and affiliates. This transmission may contain
information that is privileged, confidential, legally privileged, and/or
exempt from disclosure under applicable law. If you are not the intended
recipient, you are hereby notified that any disclosure, copying,
distribution, or use of the information contained herein (including any
reliance thereon) is STRICTLY PROHIBITED. Although this transmission and
any attachments are believed to be free of any virus or other defect that
might affect any computer system into which it is received and opened, it
is the responsibility of the recipient to ensure that it is virus free and
no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries
and affiliates, as applicable, for any loss or damage arising in any way
from its use. If you received this transmission in error, please
immediately contact the sender and destroy the material in its entirety,
whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK
legal entities.
_______________________________________________
rules-users mailing list
rules-users(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
This communication is for informational purposes only. It is not intended
as an offer or solicitation for the purchase or sale of any financial
instrument or as an official confirmation of any transaction. All market
prices, data and other information are not warranted as to completeness or
accuracy and are subject to change without notice. Any comments or
statements made herein do not necessarily reflect those of JPMorgan Chase
& Co., its subsidiaries and affiliates. This transmission may contain
information that is privileged, confidential, legally privileged, and/or
exempt from disclosure under applicable law. If you are not the intended
recipient, you are hereby notified that any disclosure, copying,
distribution, or use of the information contained herein (including any
reliance thereon) is STRICTLY PROHIBITED. Although this transmission and
any attachments are believed to be free of any virus or other defect that
might affect any computer system into which it is received and opened, it
is the responsibility of the recipient to ensure that it is virus free and
no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries
and affiliates, as applicable, for any loss or damage arising in any way
from its use. If you received this transmission in error, please
immediately contact the sender and destroy the material in its entirety,
whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK
legal entities.
_______________________________________________
rules-users mailing list
rules-users(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
-----------------------------------------
This communication is for informational purposes only. It is not
intended as an offer or solicitation for the purchase or sale of
any financial instrument or as an official confirmation of any
transaction. All market prices, data and other information are not
warranted as to completeness or accuracy and are subject to change
without notice. Any comments or statements made herein do not
necessarily reflect those of JPMorgan Chase & Co., its subsidiaries
and affiliates.
This transmission may contain information that is privileged,
confidential, legally privileged, and/or exempt from disclosure
under applicable law. If you are not the intended recipient, you
are hereby notified that any disclosure, copying, distribution, or
use of the information contained herein (including any reliance
thereon) is STRICTLY PROHIBITED. Although this transmission and any
attachments are believed to be free of any virus or other defect
that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it
is virus free and no responsibility is accepted by JPMorgan Chase &
Co., its subsidiaries and affiliates, as applicable, for any loss
or damage arising in any way from its use. If you received this
transmission in error, please immediately contact the sender and
destroy the material in its entirety, whether in electronic or hard
copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for
disclosures relating to UK legal entities.
16 years
DROOLS from clause giving Error
by shikha.x.aggarwal@jpmchase.com
Hi,
I am using the from clause of drools and have written the following
expression -
rule "Rule1"
when
$event : Event(eventId == "eventId.IR.001"),
$dbS : DBSubscription( report == $event.report ) from
Processor.getUsers()
then
list.add($dbS);
Here processor.getUsers writtens me a list of DBSubscription, When I load
this package using
builder.addPackageFromDrl( source );
I get an error saying -
Exception in thread "main" org.drools.compiler.DroolsParserException:
Unknown error while parsing. This is a bug. Please contact the Development
team.
at org.drools.compiler.DrlParser.compile(DrlParser.java:219)
at org.drools.compiler.DrlParser.parse(DrlParser.java:73)
at org.drools.compiler.DrlParser.parse(DrlParser.java:77)
Would Appreciate any help on the same.
thanks
Shikha
-----------------------------------------
This communication is for informational purposes only. It is not
intended as an offer or solicitation for the purchase or sale of
any financial instrument or as an official confirmation of any
transaction. All market prices, data and other information are not
warranted as to completeness or accuracy and are subject to change
without notice. Any comments or statements made herein do not
necessarily reflect those of JPMorgan Chase & Co., its subsidiaries
and affiliates.
This transmission may contain information that is privileged,
confidential, legally privileged, and/or exempt from disclosure
under applicable law. If you are not the intended recipient, you
are hereby notified that any disclosure, copying, distribution, or
use of the information contained herein (including any reliance
thereon) is STRICTLY PROHIBITED. Although this transmission and any
attachments are believed to be free of any virus or other defect
that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it
is virus free and no responsibility is accepted by JPMorgan Chase &
Co., its subsidiaries and affiliates, as applicable, for any loss
or damage arising in any way from its use. If you received this
transmission in error, please immediately contact the sender and
destroy the material in its entirety, whether in electronic or hard
copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for
disclosures relating to UK legal entities.
16 years
no-loop & lock-on-active clarification
by techy
I tried following rules as given below and result are:(assumes facts which
I tried are qualified for both rules)
1. when lock-on-active used with both rule, only rule "1 precondition" got
executed for all facts.
2. when no-loop used with both rules, infinite loop
3. when lock-on-active for rule "1 precondition" and no-loop for rule "1
main condition" used, both rule got fired correctly.
4. for vice versa of 3 scenario, only rule "1 precondition" got executed for
all facts.
Can someone please clarify about this scenario and also diff between no-loop
& lock-on-active? when we should use one and when should not?
I went thru documentation and still could not understand the difference.
public class Foo
{
private Set<String> preConditionPassedRules ;
private Integer f1;
private Integer f2;
}
rule "1 precondition"
salience 100
when
foo : Foo( f1 != null && f2 != null)
then
foo.addPreconditionPassedRule("1 precondition");
update(foo)
end
rule "1 main condition"
salience 100
when
foo : Foo( preconditionPassedRule contains "1 precondition",f1 > 1000,f2
< 1000)
then
#actions
end
--
View this message in context: http://www.nabble.com/no-loop---lock-on-active-clarification-tp20443036p2...
Sent from the drools - user mailing list archive at Nabble.com.
16 years
top n - accumulate function parameters
by Evans, Jess
I'm trying to average top N items. I can of course collect the items
and do the rest in the consequence, but thought it might be a scenario
applicable to a custom accumulate function. However, the accumulate
function interface methods only take one parameter. If I were to
declare a function top(N, things) within an accumulate call would drools
autobox the parameters into some sort of collection?
Maybe this is a naive solution anyway. I am still learning to think
declaratively.
cheers,
-Jess
16 years