FW: Question: Why is ClassFieldReader.getIntValue throwing in this scenario?
by Tom.E.Murphy@wellsfargo.com
Sorry - forgot to add the nature of the exception - "java.lang.Long cannot be cast to java.lang.Integer"
Tom Murphy
Business Process Consultant
Wells Fargo HCFG - CORE Deal Decisioning Platform
800 S. Jordan Creek Parkway | West Des Moines, IA 50266
MAC: X2301-01B
Office: 515 324 4853 | Mobile: 941 320 8014
This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.
_____________________________________________
From: Murphy, Tom E.
Sent: Monday, April 20, 2009 8:30 PM
To: 'rules-users(a)lists.jboss.org'
Subject: Question: Why is ClassFieldReader.getIntValue throwing in this scenario?
The following block of code inside org.drools.base.ClassFieldReader is throwing an exception and I don't quite understand why. Can anyone advise? Thanks in advance.
public int getIntValue(InternalWorkingMemory workingMemory,
final Object object) {
return this.reader.getIntValue( workingMemory,
object );
}
Object is of type Long, with value = 0, when the throw happens, and workingMemory is null (having been explicitly passed in as null by the method two layers up in the stack:
public boolean isAllowed(final InternalReadAccessor readAccessor,
final InternalFactHandle handle,
final InternalWorkingMemory workingMemoiry,
final ContextEntry context) {
return this.evaluator.evaluate( null,
this.readAccessor,
handle.getObject(),
this.field );
}
While sitting on the breakpoint in getIntValue, the live call stack is as follows:
ClassFieldReader.getIntValue(InternalWorkingMemory, Object) line: 164
ComparableEvaluatorsDefinition$IntegerGreaterEvaluator.evaluate(InternalWorkingMemory, InternalReadAccessor, Object, FieldValue) line: 1881
LiteralRestriction.isAllowed(InternalReadAccessor, InternalFactHandle, InternalWorkingMemory, ContextEntry) line: 92
LiteralConstraint.isAllowed(InternalFactHandle, InternalWorkingMemory, ContextEntry) line: 109
AccumulateNode.evaluateResultConstraints(LeftTuple, PropagationContext, InternalWorkingMemory, AccumulateNode$AccumulateMemory, AccumulateNode$AccumulateContext) line: 498
AccumulateNode.assertLeftTuple(LeftTuple, PropagationContext, InternalWorkingMemory) line: 197
SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(PropagationContext, InternalWorkingMemory, LeftTuple) line: 117
SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(LeftTuple, RightTuple, PropagationContext, InternalWorkingMemory, boolean) line: 28
JoinNode.assertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 175
CompositeObjectSinkAdapter.doPropagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory, ObjectSink) line: 366
CompositeObjectSinkAdapter.propagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 349
AlphaNode.assertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 147
SingleObjectSinkAdapter.propagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 42
AlphaNode.assertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 147
SingleObjectSinkAdapter.propagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 42
AlphaNode.assertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 147
CompositeObjectSinkAdapter.doPropagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory, ObjectSink) line: 366
CompositeObjectSinkAdapter.propagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 342
ObjectTypeNode.assertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory) line: 184
EntryPointNode.assertObject(InternalFactHandle, PropagationContext, ObjectTypeConf, InternalWorkingMemory) line: 146
ReteooStatefulSession(AbstractWorkingMemory).insert(InternalFactHandle, Object, Rule, Activation, ObjectTypeConf) line: 1066
ReteooStatefulSession(AbstractWorkingMemory).insert(Object, boolean, boolean, Rule, Activation) line: 1022
DefaultKnowledgeHelper.insert(Object, boolean) line: 103
DefaultKnowledgeHelper.insert(Object) line: 97
Rule_RS6601_3_2_0.consequence(KnowledgeHelper, TransactionDetail, FactHandle, Double, FactHandle, DealRiskCategoryEnum$Enum, FactHandle, ExitStrategyTypeEnum$Enum, FactHandle, Short, FactHandle, Short, FactHandle) line: 32
Rule_RS6601_3_2_0ConsequenceInvoker.evaluate(KnowledgeHelper, WorkingMemory) line: 42
DefaultAgenda.fireActivation(Activation) line: 934
DefaultAgenda.fireNextItem(AgendaFilter) line: 885
DefaultAgenda.fireAllRules(AgendaFilter, int) line: 1082
ReteooStatefulSession(AbstractWorkingMemory).fireAllRules(AgendaFilter, int) line: 682
ReteooStatefulSession(AbstractWorkingMemory).fireAllRules() line: 649
StatefulKnowledgeSessionImpl.fireAllRules() line: 177
RuleBase.runTestCase(LoanFile, String, int, Logger) line: 116
Tom Murphy
Business Process Consultant
Wells Fargo HCFG - CORE Deal Decisioning Platform
800 S. Jordan Creek Parkway | West Des Moines, IA 50266
MAC: X2301-01B
Office: 515 324 4853 | Mobile: 941 320 8014
This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.
15 years, 8 months
Bug JBRULES-2026
by Ingold, Jonathan
Hello,
I was wondering if anyone knows of a workaround to this bug
(https://jira.jboss.org/jira/browse/JBRULES-2026) which concerns an
error importing or dragging repository resources from Guvnor to Eclipse
using webDAV on a windows box. I know Mark is working on this bug but
I'm guessing someone out there is using Eclipse and Guvnor with a
workaround.
Any input is appreciated!
Thanks,
| Jonathan Ingold | jonathan.ingold(a)jackson.com | PH: & FAX:
517-367-3827 | Business Rules Developer | Jackson National Life
Insurance | http://www.jackson.com <http://www.jackson.com/> | Please
note that all Jackson e-mail addresses have changed from @jnli.com to
@jackson.com.
15 years, 8 months
Negation semantics in Drools
by Paul Fodor
Dear Sir,
I found a problem with negation in Drools when changing the order of the
facts in the database also changes the final model.
Consider the classic win-nowin problem encoded in Drools as follows:
win.drl:
package tests;
import tests.Test.Win;
import tests.Test.Move;
rule "direct"
when
m : Move(x : first, y : second)
not Win(first == y)
then
insert(new Win(m.getFirst()));
end
With two moves in the database: move(1,2) and move(2,3),
for one order of the facts in the input file we get one result: win(2),
while for the other order (i.e., move(2,3) and move(1,2)) we get 2 results:
win(1) and win(2).
For win_upper1_drools.drools:
> java tests.Test win_upper1_drools.drools win.drl result
reading rulefile: win.drl ...
reading datafile: win_upper1_drools.drools ...
computing cputime: 0.0
computing walltime: 0.0030
Derived facts in memory:move(1, 2).
win(2).
move(2, 3).
3
For win_upper2_drools.drools:
> java tests.Test win_upper2_drools.drools win.drl result
reading rulefile: win.drl ...
reading datafile: win_upper2_drools.drools ...
computing cputime: 0.0
computing walltime: 0.0040
Derived facts in memory:win(1).
win(2).
move(1, 2).
move(2, 3).
4
I attached all the sources used in these tests in the email. This example is
locally stratified. I am using the latest released version of Drools.
Regards,
Paul Fodor
win.drl:
package tests;
import tests.Test.Win;
import tests.Test.Move;
rule "direct"
when
m : Move(x : first, y : second)
not Win(first == y)
then
insert(new Win(m.getFirst()));
end
win_upper1_drools.drools:
move
1
2
move
2
3
win_upper2_drools.drools:
move
2
3
move
1
2
Test.java:
package tests;
import java.io.*;
import java.io.InputStreamReader;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.compiler.PackageBuilder;
import org.drools.FactHandle;
import java.util.Iterator;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
public class Test {
public static void main (String args[]) {
if (args.length < 3) {
usage();
}
long starttime_cpu, endtime_cpu, starttime_sys, endtime_sys;
double cputime, walltime;
ThreadMXBean tb_cpu = ManagementFactory.getThreadMXBean();
// create rulebase
try {
FileWriter output = new FileWriter(args[2]);
BufferedWriter bufWrite = new BufferedWriter(output);
bufWrite.write(args[0] + "\n");
bufWrite.flush();
System.out.println("reading rulefile: " + args[1] + " ...");
Reader source = new
InputStreamReader(Test.class.getResourceAsStream(args[1]));
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl(source);
if (builder.hasErrors()) {
System.out.println(builder.getErrors().toString());
System.exit(0);
}
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage(builder.getPackage());
final StatefulSession session = ruleBase.newStatefulSession();
// loading datafile
System.out.println("reading datafile: " + args[0] + " ...");
FileReader input = new FileReader(args[0]);
starttime_sys = System.nanoTime();
starttime_cpu = tb_cpu.getCurrentThreadCpuTime();
BufferedReader bufRead = new BufferedReader(input);
String first, second, line = bufRead.readLine();
while (line != null) {
if (line.compareTo("move") == 0) {
first = bufRead.readLine();
second = bufRead.readLine();
session.insert(new Move(first, second));
}
else if (line.compareTo("par") == 0) {
first = bufRead.readLine();
second = bufRead.readLine();
session.insert(new ClassPar(first, second));
}
else if (line.compareTo("sib") == 0) {
first = bufRead.readLine();
second = bufRead.readLine();
session.insert(new ClassSib(first, second));
}
line = bufRead.readLine();
}
endtime_cpu = tb_cpu.getCurrentThreadCpuTime();
endtime_sys = System.nanoTime();
cputime = (endtime_cpu - starttime_cpu) * 1e-9;
cputime = Math.round(cputime * 1000) * 1e-3;
walltime = (endtime_sys - starttime_sys) * 1e-9;
walltime = Math.round(walltime * 1000) * 1e-3;
bufWrite.write("loading cputime: " + cputime + "\n");
bufWrite.write("loading walltime: " + walltime + "\n");
bufWrite.flush();
System.out.println("loading cputime: " + cputime);
System.out.println("loading walltime: " + walltime);
/*
System.out.print("Facts in memory:");
long count = 0;
for (Iterator it = session.iterateFactHandles(); it.hasNext(); ) {
FactHandle factHandle = (FactHandle) it.next();
count ++;
//System.out.println(session.getObject(factHandle));
}
System.out.println(count);
*/
// computing
System.out.println("calculating ...");
starttime_sys = System.nanoTime();
starttime_cpu = tb_cpu.getCurrentThreadCpuTime();
session.fireAllRules();
endtime_cpu = tb_cpu.getCurrentThreadCpuTime();
endtime_sys = System.nanoTime();
cputime = (endtime_cpu - starttime_cpu) * 1e-9;
cputime = Math.round(cputime * 1000) * 1e-3;
walltime = (endtime_sys - starttime_sys) * 1e-9;
walltime = Math.round(walltime * 1000) * 1e-3;
bufWrite.write("computing cputime: " + cputime + "\n");
bufWrite.write("computing walltime: " + walltime + "\n");
bufWrite.flush();
System.out.println("computing cputime: " + cputime);
System.out.println("computing walltime: " + walltime);
System.out.print("Derived facts in memory:");
long count1 = 0;
for (Iterator it = session.iterateFactHandles(); it.hasNext(); ) {
FactHandle factHandle = (FactHandle) it.next();
count1 ++;
System.out.println(session.getObject(factHandle));
}
System.out.println(count1);
bufWrite.close();
session.dispose();
} catch (Exception e) {
System.out.println("Exception encountered when computing:");
System.out.println(e);
System.exit(0);
}
}
static void usage() {
System.out.println("usage:");
System.out.println("java Test <data_file> <rule_file> <result_file>");
System.exit(0);
}
public static class General {
private String first;
private String second;
public General() {}
public General(String firstIn, String secondIn) {
this.first = firstIn;
this.second = secondIn;
}
public String getFirst() {
return this.first;
}
public String getSecond() {
return this.second;
}
}
public static class Move extends General {
public Move() {
super();
}
public Move(String firstIn, String secondIn) {
super(firstIn, secondIn);
}
public String toString() {
return "move(" + this.getFirst() + ", " + this.getSecond() + ").";
}
}
public static class Win {
private String first;
public Win() {}
public Win(String firstIn) {
this.first = firstIn;
}
public String getFirst() {
return this.first;
}
public String toString() {
return "win(" + this.getFirst() + ").";
}
}
}
15 years, 8 months
RE: rules-users Digest, Vol 29, Issue 47
by Tom.E.Murphy@wellsfargo.com
Thanks Mark, that helps.
Tom Murphy
Business Process Consultant
Wells Fargo HCFG - CORE Deal Decisioning Platform
800 S. Jordan Creek Parkway | West Des Moines, IA 50266
MAC: X2301-01B
Office: 515 324 4853 | Mobile: 941 320 8014
This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.
-----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: Friday, April 17, 2009 5:45 PM
To: rules-users(a)lists.jboss.org
Subject: rules-users Digest, Vol 29, Issue 47
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. Re: Negation semantics in Drools (Edson Tirelli)
2. Re: RE: rules-users Digest, Vol 29, Issue 45 (Mark Proctor)
----------------------------------------------------------------------
Message: 1
Date: Fri, 17 Apr 2009 17:42:36 -0400
From: Edson Tirelli <tirelli(a)post.com>
Subject: Re: [rules-users] Negation semantics in Drools
To: Rules Users List <rules-users(a)lists.jboss.org>
Message-ID:
<e6dd5ba30904171442j55a6183dm9e484e7b510190ad(a)mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
Paul,
Yes, you are right.
Now, I am curious. What is the background on this exercise? There are
some problems that are better suited for backward and others better suited
for forward chaining. Most problems would be modeled in very different ways
in each technology.
If we were just searching for the solution, it would just be the case of
writing (in forward chaining) one or two rules that would provide the
correct answer. But since this seems to be an academic exercise, I am
curious to understand the goals of it so that we can properly model it.
Cheers,
Edson
2009/4/17 Paul Fodor <paul.i.fodor(a)gmail.com>
> Hi Edson,
>
> The "insertLogical" doesn't work for non-stratified programs.
> For instance, in the win-nowin example, if there is a move(1,2) and
> a move(2,1), the order in which the two facts are inserted determines the
> final model (please see hte tests below).
>
> In logic programming, this example has two stable models: {win(1)} and
> {win(2)}, or a well-founded model {} (win(1) and win(2) are both undefined).
>
> Regards,
> Paul.
> *
>
> package
> * tests;
>
> *
>
> import
> * tests.Test.Win;*
>
> import
> * tests.Test.Move;
>
> *
>
> rule
> * "direct"
>
> *when*
>
> m : Move(x : first, y : second)
>
> *not* Win(first == y)
>
> *then*
>
> *insertLogical*(*new* Win(m.getFirst()));*
>
> end
> *
>
> move
>
> 1
>
> 2
>
> move
>
> 2
>
> 1
>
> Test:
>
> reading rulefile: win.drl ...
>
> reading datafile: win_upper3_drools.drools ...
>
> loading cputime: 0.016
>
> loading walltime: 0.016
>
> calculating ...
>
> computing cputime: 0.0
>
> computing walltime: 0.0040
>
> Derived facts in memory:move(1, 2).
>
> win(2).
>
> move(2, 1).
>
> 3
>
> move
>
> 2
>
> 1
>
> move
>
> 1
>
> 2
>
> Test:
>
> reading rulefile: win.drl ...
>
> reading datafile: win_upper4_drools.drools ...
>
> loading cputime: 0.016
>
> loading walltime: 0.016
>
> calculating ...
>
> computing cputime: 0.0
>
> computing walltime: 0.0040
>
> Derived facts in memory:move(2, 1).
>
> win(1).
>
> move(1, 2).
>
> 3
>
> 2009/4/17 Edson Tirelli <tirelli(a)post.com>
> >
> >
> > I did not had time to analyze what jess is doing, but note that what
> is important is the final answer. In your example, with Move(1,2) and
> Move(2,3), the final answer must be Win(2), right? And that is what Drools
> will answer, does not matter the order in which the data is entered into the
> engine.
> >
> > BUT, *very important*: the following construct in backward chaining:
> >
> > win(X):- move(X,Y), not(win(Y)).
> >
> > Is better represented in forward chaining using *logicalInsert*
> instead of a regular *insert*:
> >
> > rule "direct" % Drools
> >
> > when
> > m : Move(x : first, y : second)
> > not Win(first == y)
> > then
> > logicalInsert(new Win(m.getFirst()));
> > end
> >
> > Since in your backward chaining rule, only one win() predicate
> instantiation will remain true.
> >
> > So, even with differences in the reasoning algorithm, the answer is
> correct.
> >
> > Please explain further if I am missing anything.
> >
> > Edson
> >
> >
> > 2009/4/17 Paul Fodor <paul.i.fodor(a)gmail.com>
> >>
> >> Hi Edson, Greg,
> >> I don't think the rule is written wrong. This is how the win-nowin
> program is written in logic programming: X wins if there is a move from X to
> some Y and Y doesn't win:
> >>
> >> win(X):- move(X,Y), not(win(Y)).
> >>
> >> rule "direct" % Drools
> >>
> >> when
> >> m : Move(x : first, y : second)
> >> not Win(first == y)
> >> then
> >> insert(new Win(m.getFirst()));
> >> end
> >>
> >> I think that it's interesting that, in Jess (another production rule
> system), the stratified model is always computed right, no matter what was
> the order of the facts in the database. If you want to take a look, please
> see the equivalent program in Jess for win-nowin that I attached. Just run
> it with:
> >> jess test.clp
> >>
> >> win_upper1_jess.jess
> >>
> >> (move (cur 1) (next 2))
> >> (move (cur 1) (next 3))
> >> (move (cur 2) (next 4))
> >> (move (cur 2) (next 5))
> >> ...
> >>
> >> win_upper2_jess.jess
> >>
> >> (move (cur 2) (next 4))
> >> (move (cur 2) (next 5))
> >> (move (cur 1) (next 2))
> >> (move (cur 1) (next 3))
> >> ...
> >>
> >> test.clp:
> >>
> >> (deftemplate move (slot cur) (slot next))
> >> (deftemplate win (slot val))
> >>
> >> (defrule find_win
> >> (move (cur ?cur) (next ?next))
> >> (not (win (val ?next)))
> >> =>
> >> (assert (win (val ?cur)))
> >> )
> >>
> >> (defquery query-win
> >> (win (val ?val))
> >> )
> >> (open "win_result.txt" output a)
> >> (printout output ./win_upper1_jess.jess crlf)
> >> (reset)
> >> (load-facts "./win_upper1_jess.jess")
> >> (bind ?tmx (call java.lang.management.ManagementFactory
> getThreadMXBean))
> >> (deffunction cputime () (return (* (?tmx getCurrentThreadCpuTime)
> 1E-9)))
> >> (bind ?starttime_wall (time))
> >> (bind ?starttime_cpu (cputime))
> >> (run)
> >> (bind ?query_result (run-query* query-win))
> >> (bind ?count 0)
> >> (while (?query_result next)
> >> (++ ?count)
> >> )
> >> (printout output "solutions: " ?count crlf)
> >> (bind ?endtime_cpu (cputime))
> >> (bind ?endtime_wall (time))
> >> (bind ?walltime (- ?endtime_wall ?starttime_wall))
> >> (bind ?cputime (- ?endtime_cpu ?starttime_cpu))
> >> (printout output "computing cputime: " ?cputime crlf)
> >> (printout output "computing walltime: " ?walltime crlf)
> >> (close output)
> >>
> >> Regards,
> >> Paul Fodor.
> >>
> >> 2009/4/16 Edson Tirelli <tirelli(a)post.com>
> >>>
> >>> Ha, thanks a lot Greg. I need new glasses... he is actually
> comparing with the parameter "second", but when creating the win fact, using
> the parameter "first".
> >>>
> >>> not Win(first == m.second)
> >>> insert(new Win(m.first));
> >>>
> >>> Yes, in this case the engine is working exactly as it should.
> >>>
> >>> Anyway, I added the (fixed) test case to the codebase, just in case.
> :)
> >>>
> >>> Thanks,
> >>> Edson
> >>>
> >>> 2009/4/16 Greg Barton <greg_barton(a)yahoo.com>
> >>>>
> >>>> You don't have to worry. The engine is acting as it should.
> >>>>
> >>>> The rule Paul had was this, a bit simplified for clarity:
> >>>>
> >>>> rule "direct"
> >>>> when
> >>>> m : Move()
> >>>> not Win(first == m.second)
> >>>> then
> >>>> insert(new Win(m.first));
> >>>> end
> >>>>
> >>>> If the insertion order is [Move(1,2), Move(2,3)] then the rule matches
> first on Move(2,3) and Win(2) is inserted. No other rule fires because now
> Move(1,2) and Win(2) match up, removing the instantiation with Move(1,2)
> from the agenda.
> >>>>
> >>>> If the insertion order is [Move(2,3), Move(1,2)] then the order is
> this:
> >>>>
> >>>> matched Move(1,2) insert Win(1)
> >>>> matched Move(2,3) insert Win(2)
> >>>>
> >>>> The insertion of Win(1) in the first firing does NOT prevent the
> instantiation with Move(2,3) from then firing.
> >>>>
> >>>> So it's all good. :) Sample code and output attached.
> >>>>
> >>>> --- On Thu, 4/16/09, Greg Barton <greg_barton(a)yahoo.com> wrote:
> >>>>
> >>>> > From: Greg Barton <greg_barton(a)yahoo.com>
> >>>> > Subject: Re: [rules-users] Negation semantics in Drools
> >>>> > To: "Rules Users List" <rules-users(a)lists.jboss.org>
> >>>> > Date: Thursday, April 16, 2009, 8:50 PM
> >>>> > It is on the latest snapshot release,
> >>>> > 5.0.0.20090417.005612-483
> >>>> >
> >>>> > --- On Thu, 4/16/09, Edson Tirelli <tirelli(a)post.com>
> >>>> > wrote:
> >>>> >
> >>>> > > We need to investigate if that is still happening
> >>>> > in
> >>>> > > latest trunk.
> >>>> >
> >>>> >
> >>>> >
> >>>> > _______________________________________________
> >>>> > 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
> >>> 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
> >>>
> >>
> >>
> >> _______________________________________________
> >> 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
> >
>
>
>
> _______________________________________________
> 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
15 years, 8 months
RE: rules-users Digest, Vol 29, Issue 45
by Tom.E.Murphy@wellsfargo.com
Paul -
Drools does not appear to have done well on those benchmarks, but the paper does not seem to mention which version of Drools was used. Did I miss that? Do you know which version it was?
Tom Murphy
Business Process Consultant
Wells Fargo HCFG - CORE Deal Decisioning Platform
800 S. Jordan Creek Parkway | West Des Moines, IA 50266
MAC: X2301-01B
Office: 515 324 4853 | Mobile: 941 320 8014
This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose, or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.
-----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: Friday, April 17, 2009 4:14 PM
To: rules-users(a)lists.jboss.org
Subject: rules-users Digest, Vol 29, Issue 45
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. Re: Comparison info with other engines (Paul Fodor)
2. RE: Comparison info with other engines (Ingold, Jonathan)
3. Re: Negation semantics in Drools (Paul Fodor)
----------------------------------------------------------------------
Message: 1
Date: Fri, 17 Apr 2009 16:25:43 -0400
From: Paul Fodor <paul.i.fodor(a)gmail.com>
Subject: Re: [rules-users] Comparison info with other engines
To: Rules Users List <rules-users(a)lists.jboss.org>
Message-ID:
<7641b8a40904171325u26d00b89h8ac857ee4d093416(a)mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
2009/4/17 Lindy hagan <lindyhagan(a)gmail.com>
> I'm wondering if anybody has comparison info with other engines. I just
> started to evaluate the products
> not sure which factors to consider. But I have these requirements:
>
It has to be a production rule system or any rule system (logic programming,
deductive databases, triples rule engines)? Check the benchmarks at:
http://rulebench.projects.semwebcentral.org
The benchmarks may have features which you might not need, and not all the
tested systems are free. Its main goal was to compare technologies, but it
might help you decide what system you want.
Regards,
Paul Fodor
> Must Be
> 1)Free or inexpensive product.
> 2)Rules change frequently, level of effort should be minimum.
> 3)Multiple join condition (A rule is determined ranging from 1 to 10 data
> fields.)
> 4)Should support approximately 75 rules.
>
> Better if we have.
> 1)Change Rules dynamically if possible.
> 2)Ease of use for Business users and developers.
> 3)Rule versioning.
>
> Will be happy if any one can send me rule comparison document or suggest me
> which tools can i use to evaluate.
>
> Thanks,
> Lindy
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
15 years, 8 months
Comparison info with other engines
by Lindy hagan
I'm wondering if anybody has comparison info with other engines. I just
started to evaluate the products
not sure which factors to consider. But I have these requirements:
Must Be
1)Free or inexpensive product.
2)Rules change frequently, level of effort should be minimum.
3)Multiple join condition (A rule is determined ranging from 1 to 10 data
fields.)
4)Should support approximately 75 rules.
Better if we have.
1)Change Rules dynamically if possible.
2)Ease of use for Business users and developers.
3)Rule versioning.
Will be happy if any one can send me rule comparison document or suggest me
which tools can i use to evaluate.
Thanks,
Lindy
15 years, 8 months
Using rules engine to find patterns in time series data
by Towler, Robert [RA]
I'm looking at the rules engine as a mechanism to find patterns in some
time series data.
I'm looking for things like there where N spikes above a certain
threshold value in a certain period of time.
I was wondering if anyone has done this, or have any ideas on how best
to do this with the rules engine.
My own ideas & the prototype I've built seem to be really procedural, so
I'm wondering if there's a better way that I'm missing.
Robert
15 years, 8 months
Drools 5.0 imminent release
by Mark Proctor
We are going to try and do 5.0 tomorrow. We are now just cleaning up the
manual and any bugs we can find. If there is anything urgent with
regards to a serious bug please let us know immediately. Likewise if
anyone would care to proof read the docs and contribute some more, I've
just revamped drools-expert and javadocs probably could do with more
feedback. So this is your last opportunity to help make drools 5.0 great.
Mark
15 years, 8 months