Re: [rules-users] Is it possible to Iteriate over a list of string values ?

2011-03-08 Thread Michael Anstis
The Expert documentation states "The expression used to define the object
source is any expression that follows regular MVEL syntax." Therefore "from"
should be able to use the MVEL syntax for arrays ["one", "two", "three"]
however I've not tried and never seen it used. Normally people use "from" to
iterate over a dynamic list created elsewhere (another Fact pattern, a
global etc). Since you say you need to handle "variable collections" I'd
have thought the latter use-case more suitable for yor needs. something
like:-

when
$pch : ParsedCellHolder( )
$val : String( ) from $pch.getStrings( )
then
insert( new Fact( $val ) );
end

Of course one begs to ask why you don't simply insert the individual values
into WM as the spreadsheet is parsed?

You'll be doing something like that to either construct the static MVEL in
your example or a list.

With kind regards,

Mike

On 9 March 2011 06:19, groovenarula  wrote:

> Hello all,
>
> In one of my use cases, I need to insert a variable collections of facts
> into working memory in order to be able to test for those values later :
>
> So I was wondering if there's a way to do something like this
>
>when
>$vals : String() from [ "A 12345", "B 45678", "C 8695" ]
>then
> insert ( new Fact ( $vals ) );
>
> With the intention that the rule will fire 3 times and insert the 3 new
> facts with the values " A 12345" and "B 45678" and "C 8695".
>
> Is this possible using rules or do I have to resort to using functions. The
> problem I'm trying to overcome is to see if there's a way to get the  "A
> 12345", "B 45678", "C 8695"  from a single cell of a spreadsheet.
>
> Thanks in advance,
> G
>
> --
> View this message in context:
> http://drools-java-rules-engine.46999.n3.nabble.com/Is-it-possible-to-Iteriate-over-a-list-of-string-values-tp2654135p2654135.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Misunderstanding salience?

2011-03-08 Thread Peter Ashford
Thanks for the ideas, David.

 

What I ultimately want to achieve is to have the individual rules independent 
of each other to the maximal degree to which that is possible.  That's why I 
didn' t want to have isZombie==false in the general rule - I wanted the general 
case to be unaware of the exceptions.  The field in which I'm working is 
clinical decision support where there might be a number of exceptions and 
corner cases.  I'd like to be able to express the core logic without reference 
to the corner cases and then deal with the exceptions separately.  

 

I think your idea of using salience but only adding advice if it hasn't already 
been given fits the bill - that way the general case can be simple and not have 
to explicitly exclude all the exception cases.  

 

Thanks very much for the feedback - it's really valuable to get an idea about 
what options are available and what's considered best practice.

 

Cheers!

 

Peter.

 

 

From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of David Faulkner
Sent: Wednesday, 9 March 2011 4:51 p.m.
To: Rules Users List
Subject: Re: [rules-users] Misunderstanding salience?

 

Peter,

 

The EXACT way to accomplish the functionality that you are looking for is 
"activation-group"; if two rules are in the same activation group, only one of 
them will fire. Note that the rule with HIGHER salience will fire first; to 
accomplish what you are looking for you'd have to give the exception rule a 
higher salience.

 

I would also note that although there are specific instances where 
activation-group has a strong need, many in the community find that the most 
power and flexibility from the rule engine comes from "letting go" of trying to 
exactly order your rule execution, and instead letting the rule engine decide 
what would happen here. One way to accomplish this in your case would be to 
simply add (isZombie == false) to your constraint on the general rule.  Another 
way that involves salience but NOT agenda groups is to set a high salience on 
your exception rule, but only add advice if advice is null. The possibilities 
are endless. 

 

With kind regards,

David Faulkner

david.faulk...@amentra.com

 

From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Peter Ashford
Sent: Wednesday, March 09, 2011 7:24 AM
To: Rules Users List
Subject: Re: [rules-users] Misunderstanding salience?

 

Actually, I think I've figured this one out : in the Zombie case, it's firing 
both rules and it's just that with the negative salience,  the zombie exception 
rule is the last rule fired, therefore, the last thing written into advice.

 

So... what would be the correct way to do what I'm trying to do here?  The idea 
is that the Zombie exception rule should fire in preference to the general rule 
and that none of the general processing should occur at all (imaging that these 
rules had side-effects for the rest of the system they're attached to, we don't 
want all the general rule side effects to apply and then all the exception case 
side effects)

 

Thanks in advance!

 

Peter.

 

From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Peter Ashford
Sent: Wednesday, 9 March 2011 1:31 p.m.
To: rules-users@lists.jboss.org
Subject: [rules-users] Misunderstanding salience?

 

Hi There

 

I'm new to drools.  I've just set up the Drools-Server and it is (finally!) 
working and serving my test rule-set.  The one thing that's not working as I 
expect it is the rule ordering via salience.  This is my simple test rule set:

 

rule "General brain eating advice"

   when

  p : Patient(eatsBrains == true)  

   then

  p.setAdvice("Stop eating brains, or at least, try to cut down");  
   

end

 

rule "Zombie exception to brain eating advice" 

   salience -50

   when

  p : Patient(eatsBrains == true, isZombie == true)

   then

  p.setAdvice("Evidence suggests that the undead cannot contract 
Kuru or that the effects are irellevant given the " +

  "patient's current zombified state.\nSuggest 
euthenasing patient lest he/she eat your (or someone " +

  "else's) brains"); 

end

 

 

The idea is that the first rule fires all the time unless the patient happens 
to be a zombie, in which case the exception rule (the second rule) kicks in.  
Now, as I have it here, with the exception at salience at -50 it actually 
works, which is the opposite of what I was expecting.  I'd thought that I would 
have had to have the exception at a higher salience to fire first.  That was 
what I tried first but that didn't work - everyone got the general advice, 
zombies included.

 

What am I misunderstanding here?

 

Thanks!

 

Peter.

 

---

"It is very difficult to get a man to understand something when

[rules-users] Is it possible to Iteriate over a list of string values ?

2011-03-08 Thread groovenarula
Hello all,

In one of my use cases, I need to insert a variable collections of facts
into working memory in order to be able to test for those values later :

So I was wondering if there's a way to do something like this 

when
$vals : String() from [ "A 12345", "B 45678", "C 8695" ]
then
 insert ( new Fact ( $vals ) );

With the intention that the rule will fire 3 times and insert the 3 new
facts with the values " A 12345" and "B 45678" and "C 8695".

Is this possible using rules or do I have to resort to using functions. The
problem I'm trying to overcome is to see if there's a way to get the  "A
12345", "B 45678", "C 8695"  from a single cell of a spreadsheet.

Thanks in advance,
G

--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Is-it-possible-to-Iteriate-over-a-list-of-string-values-tp2654135p2654135.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] not sure if this is a bug of drools or my bad usage...

2011-03-08 Thread Simon Chen
Hi Wolfgang,

First, your rules work...

But for the second rule, I replaced the first Reachable() in the when
clause to Link(), and the result is still correct. Only if I remove
"no-loop true", the issue I had appeared.

So, I understand how "no-loop true" in this case helps to make the
result correct. But, do you see any scenarios where "no-loop" can
cause incorrect results? For example, not enough number of recursions?

Thanks.
-Simon

2011/3/8 Wolfgang Laun :
> I think there is some fundamental error in deriving truths from givens and
> other derived facts that are then interpreted as given truths, and,
> moreover, with subtly varying semantics. In terms of graph theory:
> reachability is based on (directed) edges, but it does not establish
> additional edges.
>
> Deriving Reachability should be done by:
>
> rule deriveLink
> when
>     Link( $a: a, $b: b )
> then
>     insertLogical(new Reachable($a,$b));
>     System.out.println( "ins reach " + $a + " " + $b );
> end
>
> rule deriveReachReach
> no-loop true
> when
>     Reachable( $a: a, $b: b )
>     Reachable( a == $b, $c: b != $a )
> then
>     insertLogical(new Reachable($a,$c));
> end
>
> Ideally, I would like to use
>    not Reachable(a == $a, b == $c)
> instead of the (last resort) no-loop in the second rule, but Drools' truth
> maintenance is incomplete: it does not let your define the logical
> dependency on part of the condition (i.e., excluding the CE "not" in this
> case).
>
> -W
>
>
>
>
>
>
> On 8 March 2011 05:49, Simon Chen  wrote:
>>
>> What I had is a very simplified version of how calculating transitive
>> closure could go wrong...
>>
>> Let's say we have two rules:
>> rule 1
>> when
>>  link(a,b)
>> then
>>  insertLogical(new reachable(a,b))
>>
>> rule 2
>> when
>>  link(a,b) reachable(b,c)
>> then
>>  insertLogical(new reachable(a,c))
>>
>> Let's say, I have link(a,b), link(b,c), link(b,a), link(c,b). So,
>> we'll have reachable(a,b), reachable(b,c), reachable(a,c), etc. But,
>> after I retract link(a,b) and link(b,a), guess what, reachable(c,a)
>> still exists! This doesn't sound right to me.
>>
>> But in Drools, this is possible, because we have:
>> reachable(c,a) <- link(c,b), reachable(b,a)
>> reachable(b,a) <- link(b,c), reachable(c,a)
>>
>> The problem here is that we actually inserted reachable(b,a) multiple
>> times: first supported by link(b,a) and rule 1, and secondly by
>> link(b,c) and reachable(c,a) and rule 2. When reachable(b,a) was
>> inserted the second time, link(b,c) and reachable(c,a) become the
>> additional supporting condition - maintained by the truth maintenance
>> system. So, even if link(b,a) is retracted, reachable(b,a) still
>> exists further supporting reachable(c,a).
>>
>> Is it clearer?
>>
>> Thanks.
>> -Simon
>>
>> 2011/3/7 Edson Tirelli :
>> >
>> >    Simon,
>> >    The behavior seems correct to me as B is justified by either A or C
>> > (or
>> > both). Of course, from the initial state, A is required for C to first
>> > exist, but once it starts to exist, your rules say that B and C justify
>> > each
>> > other and so both remain in memory.
>> >    This is design as intended, but do you think that is wrong?
>> >    Edson
>> >
>> > 2011/3/7 Simon Chen 
>> >>
>> >> Hi all,
>> >>
>> >> An interesting finding:
>> >>
>> >> I have three simple rules:
>> >> rule "A2B"
>> >>        when
>> >>                A()
>> >>        then
>> >>                insertLogical(new B());
>> >> end
>> >> rule "B2C"
>> >>        when
>> >>                B()
>> >>        then
>> >>                insertLogical(new C());
>> >> end
>> >> rule "C2B"
>> >>        when
>> >>                C()
>> >>        then
>> >>                insertLogical(new B());
>> >> end
>> >>
>> >> Basically, once we have an A(), we'll logically insert a B(). Once we
>> >> have a B(), we'll logically insert a C(). Once we have a C(), we'll
>> >> logically insert a B().
>> >>
>> >> So, I first insert an A(), print all the objects. Retract A(), and
>> >> print all the objects. Here's what I got:
>> >> com.sample.B@42
>> >> com.sample.C@43
>> >> com.sample.A@548997d1
>> >> after retract!
>> >> com.sample.B@42
>> >> com.sample.C@43
>> >>
>> >> So, B() and C(), which should be logically depend on A(), somehow are
>> >> not retracted. The problem I see is the truth maintenance system allow
>> >> B() and C() to depend on each other, thus not affected by losing A().
>> >>
>> >> Is this a bug or my bad usage?
>> >>
>> >> Thanks.
>> >> -Simon
>> >> ___
>> >> rules-users mailing list
>> >> rules-users@lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/rules-users
>> >
>> >
>> >
>> > --
>> >   Edson Tirelli
>> >   JBoss Drools Core Development
>> >   JBoss by Red Hat @ www.jboss.com
>> >
>> > ___
>> > rules-users mailing list
>> > rules-users@lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/rules-users
>> >
>> >
>>
>> __

Re: [rules-users] Misunderstanding salience?

2011-03-08 Thread David Faulkner
Peter,

The EXACT way to accomplish the functionality that you are looking for is 
"activation-group"; if two rules are in the same activation group, only one of 
them will fire. Note that the rule with HIGHER salience will fire first; to 
accomplish what you are looking for you'd have to give the exception rule a 
higher salience.

I would also note that although there are specific instances where 
activation-group has a strong need, many in the community find that the most 
power and flexibility from the rule engine comes from "letting go" of trying to 
exactly order your rule execution, and instead letting the rule engine decide 
what would happen here. One way to accomplish this in your case would be to 
simply add (isZombie == false) to your constraint on the general rule.  Another 
way that involves salience but NOT agenda groups is to set a high salience on 
your exception rule, but only add advice if advice is null. The possibilities 
are endless.

With kind regards,
David Faulkner
david.faulk...@amentra.com

From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Peter Ashford
Sent: Wednesday, March 09, 2011 7:24 AM
To: Rules Users List
Subject: Re: [rules-users] Misunderstanding salience?

Actually, I think I've figured this one out : in the Zombie case, it's firing 
both rules and it's just that with the negative salience,  the zombie exception 
rule is the last rule fired, therefore, the last thing written into advice.

So... what would be the correct way to do what I'm trying to do here?  The idea 
is that the Zombie exception rule should fire in preference to the general rule 
and that none of the general processing should occur at all (imaging that these 
rules had side-effects for the rest of the system they're attached to, we don't 
want all the general rule side effects to apply and then all the exception case 
side effects)

Thanks in advance!

Peter.

From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Peter Ashford
Sent: Wednesday, 9 March 2011 1:31 p.m.
To: rules-users@lists.jboss.org
Subject: [rules-users] Misunderstanding salience?

Hi There

I'm new to drools.  I've just set up the Drools-Server and it is (finally!) 
working and serving my test rule-set.  The one thing that's not working as I 
expect it is the rule ordering via salience.  This is my simple test rule set:

rule "General brain eating advice"
   when
  p : Patient(eatsBrains == true)
   then
  p.setAdvice("Stop eating brains, or at least, try to cut down");
end

rule "Zombie exception to brain eating advice"
   salience -50
   when
  p : Patient(eatsBrains == true, isZombie == true)
   then
  p.setAdvice("Evidence suggests that the undead cannot contract 
Kuru or that the effects are irellevant given the " +
  "patient's current zombified state.\nSuggest 
euthenasing patient lest he/she eat your (or someone " +
  "else's) brains");
end


The idea is that the first rule fires all the time unless the patient happens 
to be a zombie, in which case the exception rule (the second rule) kicks in.  
Now, as I have it here, with the exception at salience at -50 it actually 
works, which is the opposite of what I was expecting.  I'd thought that I would 
have had to have the exception at a higher salience to fire first.  That was 
what I tried first but that didn't work - everyone got the general advice, 
zombies included.

What am I misunderstanding here?

Thanks!

Peter.

---
"It is very difficult to get a man to understand something when his tribal 
identity depends on his not understanding it" - Michael Bérubé on Republican 
climate change denial.

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Misunderstanding salience?

2011-03-08 Thread Peter Ashford
Actually, I think I've figured this one out : in the Zombie case, it's firing 
both rules and it's just that with the negative salience,  the zombie exception 
rule is the last rule fired, therefore, the last thing written into advice.

 

So... what would be the correct way to do what I'm trying to do here?  The idea 
is that the Zombie exception rule should fire in preference to the general rule 
and that none of the general processing should occur at all (imaging that these 
rules had side-effects for the rest of the system they're attached to, we don't 
want all the general rule side effects to apply and then all the exception case 
side effects)

 

Thanks in advance!

 

Peter.

 

From: rules-users-boun...@lists.jboss.org 
[mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Peter Ashford
Sent: Wednesday, 9 March 2011 1:31 p.m.
To: rules-users@lists.jboss.org
Subject: [rules-users] Misunderstanding salience?

 

Hi There

 

I'm new to drools.  I've just set up the Drools-Server and it is (finally!) 
working and serving my test rule-set.  The one thing that's not working as I 
expect it is the rule ordering via salience.  This is my simple test rule set:

 

rule "General brain eating advice"

   when

  p : Patient(eatsBrains == true)  

   then

  p.setAdvice("Stop eating brains, or at least, try to cut down");  
   

end

 

rule "Zombie exception to brain eating advice" 

   salience -50

   when

  p : Patient(eatsBrains == true, isZombie == true)

   then

  p.setAdvice("Evidence suggests that the undead cannot contract 
Kuru or that the effects are irellevant given the " +

  "patient's current zombified state.\nSuggest 
euthenasing patient lest he/she eat your (or someone " +

  "else's) brains"); 

end

 

 

The idea is that the first rule fires all the time unless the patient happens 
to be a zombie, in which case the exception rule (the second rule) kicks in.  
Now, as I have it here, with the exception at salience at -50 it actually 
works, which is the opposite of what I was expecting.  I'd thought that I would 
have had to have the exception at a higher salience to fire first.  That was 
what I tried first but that didn't work - everyone got the general advice, 
zombies included.

 

What am I misunderstanding here?

 

Thanks!

 

Peter.

 

---

"It is very difficult to get a man to understand something when his tribal 
identity depends on his not understanding it" - Michael Bérubé on Republican 
climate change denial.

 

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Process instance status not completing when using JPA.

2011-03-08 Thread Dan Nathanson
Thanks for the reply, Kris.

I figured it might be something like that, but was thrown because one of the
test cases in PersistentStatefulSessionTest (testPersistenceWorkItems3) does
check for process state COMPLETE.

I worked around the issue by adding a ProcessEventListener that implements
the afterProcessComplete() method.  Since my action upon process completion
is to send a JMS message to the person who started the process, using an
event listener is actually a little bit cleaner than checking process status
after every session state change.

Regards,

Dan Nathanson



On Tue, Mar 8, 2011 at 5:19 PM, Kris Verlaenen <
kris.verlae...@cs.kuleuven.be> wrote:

> Dan,
>
> Once you start using persistence, you should know that the process
> instance you are retrieving is no longer the internal process instance
> but a version of the process instance at the moment you requested it.
> This process instance however is disconnected, meaning that it will not
> automatically update when the internal process instance changes.  The
> main reason is that, when using persistence, process instances can be
> removed and reloaded from database at any time, so you basically get a
> copy.
>
> If you register a listener that listens for process instance completion
> right before inserting the list in testPersistenceState(), you will
> notice that this process instance gets completed and that the process
> instance state of the internal process instance is set to completed.
> The copy you still have from before still is in active state though.
> Since process instances that are completed are also removed from
> persistence as no longer necessary, you can't get the process instance
> in state completed.  That's why we test whether a process instance is
> completed by checking it is null when we try to retrieve it.  Another
> option would be to use a history logger of course.
>
> Kris
>
> Dan Nathanson wrote:
> > More info...
> >
> > This behavior is reproducible in the Drools JPA test cases.
> >
> > In
> >
> org.drools.persistence.session.PersistentStatefulSessionTest.testPersistenceState()
> > and testPersistenceRuleSet(), if you add a breakpoint before loading
> > the processInstance the last time (when it is null because the process
> > has "completed"), you can see that processInstance.getState() returns
> > 1 (ACTIVE) instead of 2 (COMPLETE).  I added the ConsoleLogger to the
> > ksession and can see the "AFTER RULEFLOW COMPLETED" log message.
> >
> > In the other test cases, the state is correctly set to 2 after the
> > process completes.
> >
> > On Mon, Mar 7, 2011 at 11:21 AM, Dan Nathanson  > > wrote:
> >
> > Hi,
> >
> > I'm seeing some odd behavior in Drools Flow 5.1.1.  When using JPA
> > and creating a StatefulKnowledgeSession using
> > JPAKnowledgeService.newStatefulKnowledgeSession(), processes look
> > like they run to completion, but calling
> > RuleFlowProcessInstance.getState() on process instances created
> > froim this knowledge session returns 1 (STATE_ACTIVE).  Calling
> > getActiveNodeIds() throws a NullPointerException.
> >
> > If I get a StatefulKnowledgeSession without JPA by calling
> > KnowledgeBase.newStatefulKnowledgeSession(), getState() returns 2
> > (STATE_COMPLETED).
> >
> > I added
> > KnowledgeRuntimeLoggerFactory.newConsoleLogger(knowledgeSession)
> > and can see in both cases that the process is complete.
> >
> > Has this been seen before?  Is it a known bug?  Am I doing
> > something wrong?
> >
> > Regards,
> >
> > Dan Nathanson
> >
> >
> > 
> >
> > ___
> > rules-users mailing list
> > rules-users@lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Process instance status not completing when using JPA.

2011-03-08 Thread Kris Verlaenen
Dan,

Once you start using persistence, you should know that the process 
instance you are retrieving is no longer the internal process instance 
but a version of the process instance at the moment you requested it.  
This process instance however is disconnected, meaning that it will not 
automatically update when the internal process instance changes.  The 
main reason is that, when using persistence, process instances can be 
removed and reloaded from database at any time, so you basically get a copy.

If you register a listener that listens for process instance completion 
right before inserting the list in testPersistenceState(), you will 
notice that this process instance gets completed and that the process 
instance state of the internal process instance is set to completed.  
The copy you still have from before still is in active state though.  
Since process instances that are completed are also removed from 
persistence as no longer necessary, you can't get the process instance 
in state completed.  That's why we test whether a process instance is 
completed by checking it is null when we try to retrieve it.  Another 
option would be to use a history logger of course.

Kris

Dan Nathanson wrote:
> More info...
>
> This behavior is reproducible in the Drools JPA test cases. 
>
> In 
> org.drools.persistence.session.PersistentStatefulSessionTest.testPersistenceState()
>  
> and testPersistenceRuleSet(), if you add a breakpoint before loading 
> the processInstance the last time (when it is null because the process 
> has "completed"), you can see that processInstance.getState() returns 
> 1 (ACTIVE) instead of 2 (COMPLETE).  I added the ConsoleLogger to the 
> ksession and can see the "AFTER RULEFLOW COMPLETED" log message.
>
> In the other test cases, the state is correctly set to 2 after the 
> process completes.
>
> On Mon, Mar 7, 2011 at 11:21 AM, Dan Nathanson  > wrote:
>
> Hi,
>
> I'm seeing some odd behavior in Drools Flow 5.1.1.  When using JPA
> and creating a StatefulKnowledgeSession using
> JPAKnowledgeService.newStatefulKnowledgeSession(), processes look
> like they run to completion, but calling
> RuleFlowProcessInstance.getState() on process instances created
> froim this knowledge session returns 1 (STATE_ACTIVE).  Calling
> getActiveNodeIds() throws a NullPointerException.
>
> If I get a StatefulKnowledgeSession without JPA by calling
> KnowledgeBase.newStatefulKnowledgeSession(), getState() returns 2
> (STATE_COMPLETED).
>
> I added
> KnowledgeRuntimeLoggerFactory.newConsoleLogger(knowledgeSession)
> and can see in both cases that the process is complete.
>
> Has this been seen before?  Is it a known bug?  Am I doing
> something wrong?
>
> Regards,
>
> Dan Nathanson
>
>
> 
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>   

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] Misunderstanding salience?

2011-03-08 Thread Peter Ashford
Hi There

 

I'm new to drools.  I've just set up the Drools-Server and it is (finally!) 
working and serving my test rule-set.  The one thing that's not working as I 
expect it is the rule ordering via salience.  This is my simple test rule set:

 

rule "General brain eating advice"

   when

  p : Patient(eatsBrains == true)  

   then

  p.setAdvice("Stop eating brains, or at least, try to cut down");  
   

end

 

rule "Zombie exception to brain eating advice" 

   salience -50

   when

  p : Patient(eatsBrains == true, isZombie == true)

   then

  p.setAdvice("Evidence suggests that the undead cannot contract 
Kuru or that the effects are irellevant given the " +

  "patient's current zombified state.\nSuggest 
euthenasing patient lest he/she eat your (or someone " +

  "else's) brains"); 

end

 

 

The idea is that the first rule fires all the time unless the patient happens 
to be a zombie, in which case the exception rule (the second rule) kicks in.  
Now, as I have it here, with the exception at salience at -50 it actually 
works, which is the opposite of what I was expecting.  I'd thought that I would 
have had to have the exception at a higher salience to fire first.  That was 
what I tried first but that didn't work - everyone got the general advice, 
zombies included.

 

What am I misunderstanding here?

 

Thanks!

 

Peter.

 

---

"It is very difficult to get a man to understand something when his tribal 
identity depends on his not understanding it" - Michael Bérubé on Republican 
climate change denial.

 

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Guvnor and drools implementation - questions

2011-03-08 Thread Vincent Legendre

> Yes i created rueles with guided editor and it's working with my 
> attribute. is there a way to remove "empty", "entrySet", "keySet", 
> "clone",... herited from Map. So i would have only the attribute i 
> have defined?
Don't make the POJO extends Map, but containing a map.
>
> i have always used drl file instead of package. If i deploy a  
> file.pkg, is there a way to know what's in it? If i deploy something, 
> i just want to be able later to very that all is well what i think if 
> i have a doubt (easy with drl file).
try this (the only trick is to compact the rules that comes from a 
decision table into one main log line) :

 public static void dumpKbContent(KnowledgeBase knowledgeBase) {
 System.out.println(" " + ruleSet + " 
");
 // Dump content
 for (KnowledgePackage p : knowledgeBase.getKnowledgePackages()) {
 System.out.println("-o0o- Package " + p.getName() + " -o0o-");
 System.out.println("Processes : ");
 for (Process flow : p.getProcesses()) {
 System.out.println("   - " + flow.getName());
 }
 System.out.println("Rules : ");
 String lastRuleName = "";
 for (Rule rule : p.getRules()) {
 String ruleName = extractMainTableName(rule.getName());
 if (!ruleName.equals(lastRuleName)) {
 System.out.println("   - " + ruleName);
 lastRuleName = ruleName;
 }
 }
 System.out.println("-o0o- End Package " + p.getName() + " 
-o0o-");
 }
 System.out.println(" END " + ruleSet + " 
");
 }

 private static String extractMainTableName(String ruleName) {
 // tables
 Pattern p = Pattern.compile("(.*)_[0-9]+");
 Matcher m = p.matcher(ruleName);
 if (m.matches()) {
 return m.group(1) + " ... table";
 } else {
 return ruleName;
 }
 }



___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] work definition conf file - parameter mapping

2011-03-08 Thread nfox241
Nevermind. I get it now :)



--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/work-definition-conf-file-parameter-mapping-tp2652643p2652875.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] work definition conf file - parameter mapping

2011-03-08 Thread nfox241
I am creating a custom work item and wanted to set the parameter mapping and
result mapping in the conf file. Is that possible? What about adding an
onEntry-script tag in the definition?

thanks,
Nick

--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/work-definition-conf-file-parameter-mapping-tp2652643p2652643.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Best approach for handling parallel requests for a stateful rules session

2011-03-08 Thread Greg Barton
They submit the commands to an execution queue, and they're executed in the 
order received in a thread safe manner.  And note there's an 
asyncFireAllRules() method, so you can time when rules fire.  As for whether 
objects are fed into working memory while rules are firing, I'm not sure, but 
that would be easy to test. (Just create rules that cause an infinite loop with 
low salience, start them up, and try to insert more data that trigger rules of 
a higher salience.)  Or maybe a dev will reply with a conclusive answer. :)

--- On Tue, 3/8/11, jkrupka  wrote:

> From: jkrupka 
> Subject: Re: [rules-users] Best approach for handling parallel requests for a 
> stateful rules session
> To: rules-users@lists.jboss.org
> Date: Tuesday, March 8, 2011, 12:42 PM
> Took a look... thanks.  I'm not
> sure that they will help me though - do the
> async methods actually look to see if fireAllRules is
> already running
> somewhere else and synchronize the calls? Or do they just
> wrap a Callable
> around it so that if your rules take a long time to run you
> can do something
> else while they run?
> 
> --
> View this message in context: 
> http://drools-java-rules-engine.46999.n3.nabble.com/Best-approach-for-handling-parallel-requests-for-a-stateful-rules-session-tp2651617p2652011.html
> Sent from the Drools - User mailing list archive at
> Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 


  

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Drools Logging

2011-03-08 Thread smileychappy
Thanks! I could get the facts by adding a WorkingMemoryEventListener but I'm
more interested in generating a XML file similar to the one generated by
KnowledgeLoggerFactory.

Any idea if that is possible by passing a Logger object instead of a file
name?

--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Drools-Logging-tp2647772p2652058.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Best approach for handling parallel requests for a stateful rules session

2011-03-08 Thread jkrupka
Took a look... thanks.  I'm not sure that they will help me though - do the
async methods actually look to see if fireAllRules is already running
somewhere else and synchronize the calls? Or do they just wrap a Callable
around it so that if your rules take a long time to run you can do something
else while they run?

--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Best-approach-for-handling-parallel-requests-for-a-stateful-rules-session-tp2651617p2652011.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Best approach for handling parallel requests for a stateful rules session

2011-03-08 Thread Greg Barton
Take a look at the org.drools.StatefulSession.async*() methods.  I've used them 
in a multithreaded context before.  

--- On Tue, 3/8/11, jkrupka  wrote:

> From: jkrupka 
> Subject: [rules-users] Best approach for handling parallel requests for a 
> stateful rules session
> To: rules-users@lists.jboss.org
> Date: Tuesday, March 8, 2011, 11:10 AM
> We've been over multiple ways of
> handling multiple parallel requests for a
> stateful rules session and I want to make sure the approach
> we have settled
> on makes sense.
> 
> We will be getting multiple requests at a time to run some
> score calculation
> rules for various products.  In the past we used
> stateless rules sessions to
> do this and it worked fine.  In the newer version of
> our application we are
> using significantly more data to do our calculation and are
> pretty sure
> stateful is the way to go.  That being said, can we
> use the same session in
> multiple threads?  Based on our understanding, a
> session isn't inherently
> thread safe, so we are thinking we will need to do one of
> two things:
> 
> 1. Synchronize all updates to facts and the calling of
> fireAllRules so that
> only one thread is doing this at a time.  Is this the
> best (or only safe)
> approach in this situation?  Since all fact updates
> and rules running in
> done in one thread, when is throughput a concern (obviously
> depends on
> hardware, # of rules, # of facts, etc)?
> 2. Ensure that only one thread updates the facts related to
> a given product
> at a time.  Multiple threads could still call
> fireAllRules at the same time,
> but after the rules finish, the calling class would grab
> the facts that
> would have been updated for just the product that it's
> interested in.  That
> way, it doesn't matter if the rules were technically
> matched in a different
> thread, as long as I'm grabbing just the data I'm
> interested in.   Is this a
> safe approach?  Does it end up offering more
> throughput capability than
> approach #1?
> 
> Josh
> 
> --
> View this message in context: 
> http://drools-java-rules-engine.46999.n3.nabble.com/Best-approach-for-handling-parallel-requests-for-a-stateful-rules-session-tp2651617p2651617.html
> Sent from the Drools - User mailing list archive at
> Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 


  

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Process instance status not completing when using JPA.

2011-03-08 Thread Dan Nathanson
More info...

This behavior is reproducible in the Drools JPA test cases.

In
org.drools.persistence.session.PersistentStatefulSessionTest.testPersistenceState()
and testPersistenceRuleSet(), if you add a breakpoint before loading the
processInstance the last time (when it is null because the process has
"completed"), you can see that processInstance.getState() returns 1 (ACTIVE)
instead of 2 (COMPLETE).  I added the ConsoleLogger to the ksession and can
see the "AFTER RULEFLOW COMPLETED" log message.

In the other test cases, the state is correctly set to 2 after the process
completes.

On Mon, Mar 7, 2011 at 11:21 AM, Dan Nathanson wrote:

> Hi,
>
> I'm seeing some odd behavior in Drools Flow 5.1.1.  When using JPA and
> creating a StatefulKnowledgeSession using
> JPAKnowledgeService.newStatefulKnowledgeSession(), processes look like they
> run to completion, but calling RuleFlowProcessInstance.getState() on process
> instances created froim this knowledge session returns 1 (STATE_ACTIVE).
> Calling getActiveNodeIds() throws a NullPointerException.
>
> If I get a StatefulKnowledgeSession without JPA by calling
> KnowledgeBase.newStatefulKnowledgeSession(), getState() returns 2
> (STATE_COMPLETED).
>
> I added KnowledgeRuntimeLoggerFactory.newConsoleLogger(knowledgeSession)
> and can see in both cases that the process is complete.
>
> Has this been seen before?  Is it a known bug?  Am I doing something wrong?
>
> Regards,
>
> Dan Nathanson
>
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] Best approach for handling parallel requests for a stateful rules session

2011-03-08 Thread jkrupka
We've been over multiple ways of handling multiple parallel requests for a
stateful rules session and I want to make sure the approach we have settled
on makes sense.

We will be getting multiple requests at a time to run some score calculation
rules for various products.  In the past we used stateless rules sessions to
do this and it worked fine.  In the newer version of our application we are
using significantly more data to do our calculation and are pretty sure
stateful is the way to go.  That being said, can we use the same session in
multiple threads?  Based on our understanding, a session isn't inherently
thread safe, so we are thinking we will need to do one of two things:

1. Synchronize all updates to facts and the calling of fireAllRules so that
only one thread is doing this at a time.  Is this the best (or only safe)
approach in this situation?  Since all fact updates and rules running in
done in one thread, when is throughput a concern (obviously depends on
hardware, # of rules, # of facts, etc)?
2. Ensure that only one thread updates the facts related to a given product
at a time.  Multiple threads could still call fireAllRules at the same time,
but after the rules finish, the calling class would grab the facts that
would have been updated for just the product that it's interested in.  That
way, it doesn't matter if the rules were technically matched in a different
thread, as long as I'm grabbing just the data I'm interested in.   Is this a
safe approach?  Does it end up offering more throughput capability than
approach #1?

Josh

--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Best-approach-for-handling-parallel-requests-for-a-stateful-rules-session-tp2651617p2651617.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Guvnor and drools implementation - questions

2011-03-08 Thread ioda100
it's working for pkg, bad library

On Tue, Mar 8, 2011 at 4:30 PM, Eddy Hautot  wrote:

> Hi Vincent,
>
> Thanks for precisions.
>
> Didn't knew only set/get are used. Get to be careful when i will have 100+
> attributes  :-)
>
> Yes i created rueles with guided editor and it's working with my attribute.
> is there a way to remove "empty", "entrySet", "keySet", "clone",... herited
> from Map. So i would have only the attribute i have defined?
>
> Ok i will do like this for testing eval($m1 != $m2) ... i have put this in
> separate line to meke it clearer at the beginning.
>
> I think i will do your first option, rules will be clearer.
>
> i have always used drl file instead of package. If i deploy a  file.pkg, is
> there a way to know what's in it? If i deploy something, i just want to be
> able later to very that all is well what i think if i have a doubt (easy
> with drl file).
>
> When i try to create my session i have problem with pkg. For know with .drl
> file i do with that :
>
> KnowledgeBase knowledgeBase = createKnowledgeBase();
> StatefulKnowledgeSession session =
> knowledgeBase.newStatefulKnowledgeSession();
>
> private static KnowledgeBase createKnowledgeBase() {
> final KnowledgeBuilder builder =
> KnowledgeBuilderFactory.newKnowledgeBuilder ();
>
>
> builder.add(ResourceFactory.newUrlResource("file:///d://basicRule.drl"),
> ResourceType.DRL);
> if (builder.hasErrors()) {
> throw new RuntimeException(builder.getErrors()
> .toString());
> }
> KnowledgeBase knowledgeBase =
> KnowledgeBaseFactory.newKnowledgeBase();
> knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
>
> return knowledgeBase;
> }
>
> If i replace the line :
> builder.add(ResourceFactory.newUrlResource("file:///d://basicRule.drl"),
> ResourceType.DRL);
> by :
> builder.add(ResourceFactory.newUrlResource("file:///d://PackageTest1.pkg"),
> ResourceType.PKG);
>
> but it's crashing :
> xception in thread "main" org.drools.RuntimeDroolsException: Unable to load
> dialect
> 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule.builder.dialect.java.JavaDialectConfiguration'
> at
> org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:283)
> at
> org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:268)
> at
> org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:181)
> at
> org.drools.compiler.PackageBuilderConfiguration.(PackageBuilderConfiguration.java:154)
> at
> org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactoryServiceImpl.java:26)
> at
> org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactory.java:86)
> at TestMapPojoPackage.createKnowledgeBase(TestMapPojoPackage.java:86)
> at TestMapPojoPackage.main(TestMapPojoPackage.java:58)
> Caused by: java.lang.RuntimeException: The Janino jar is not in the
> classpath
> at
> org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:100)
> at
> org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:55)
> at
> org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:279)
> ... 7 more
>
> Is it something special to do?
>
> Thanks again for your time
>
>
>  On Mon, Mar 7, 2011 at 7:44 PM, Vincent Legendre [via Drools - Java Rules
> Engine]  wrote:
>
>>
>>
>> I've just created 2 class like you show me with some changes to fit and
>> test all (timestamp are long in fact, i have put int, double and string as
>> well)
>>
>> In the second class you don't need the attributes as members, because
>> Drools uses get / set methods to deduce them, and anyway you never use them
>> as they are stored in the map.
>>
>> Then i have imported this in Guvnor.
>>
>> I have made 2 categories. I have put the model (jar) in the 2 categories.
>>
>> That is non-sense. Jars are not linked to a category but to a package.
>>
>>  I have created 2 simple rules playing with the attributes id,
>> timestamp...
>>
>> With Guided editor ?
>>
>>
>>
>> 1) For the condition Map $m1 different then Map $m2. I suppose i have to
>> use the function define in MapPojo? I have to write it by hand using "free
>> from drl" : eval($m1 != $m2) ? or is there a better way?
>>
>> Its a way.
>> You can also test the id directly in conditions (in Guided editor, bind
>> the id of the first instance to a var, then compare it in the second
>> condition.
>>
>>
>> The same for testing that $m1 timestamp (Long) is befor $m2. I have to
>> write it by hand : eval($m1.isBefore($m2))? So they have to know it exist a
>> method isBefore if not said by the gui?
>>
>> Same. Add the test directly in the condition.
>> Another solu

Re: [rules-users] Guvnor and drools implementation - questions

2011-03-08 Thread ioda100
Hi Vincent,

Thanks for precisions.

Didn't knew only set/get are used. Get to be careful when i will have 100+
attributes  :-)

Yes i created rueles with guided editor and it's working with my attribute.
is there a way to remove "empty", "entrySet", "keySet", "clone",... herited
from Map. So i would have only the attribute i have defined?

Ok i will do like this for testing eval($m1 != $m2) ... i have put this in
separate line to meke it clearer at the beginning.

I think i will do your first option, rules will be clearer.

i have always used drl file instead of package. If i deploy a  file.pkg, is
there a way to know what's in it? If i deploy something, i just want to be
able later to very that all is well what i think if i have a doubt (easy
with drl file).

When i try to create my session i have problem with pkg. For know with .drl
file i do with that :

KnowledgeBase knowledgeBase = createKnowledgeBase();
StatefulKnowledgeSession session =
knowledgeBase.newStatefulKnowledgeSession();

private static KnowledgeBase createKnowledgeBase() {
final KnowledgeBuilder builder =
KnowledgeBuilderFactory.newKnowledgeBuilder ();


builder.add(ResourceFactory.newUrlResource("file:///d://basicRule.drl"),
ResourceType.DRL);
if (builder.hasErrors()) {
throw new RuntimeException(builder.getErrors()
.toString());
}
KnowledgeBase knowledgeBase =
KnowledgeBaseFactory.newKnowledgeBase();
knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());

return knowledgeBase;
}

If i replace the line :
builder.add(ResourceFactory.newUrlResource("file:///d://basicRule.drl"),
ResourceType.DRL);
by :
builder.add(ResourceFactory.newUrlResource("file:///d://PackageTest1.pkg"),
ResourceType.PKG);

but it's crashing :
xception in thread "main" org.drools.RuntimeDroolsException: Unable to load
dialect
'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule.builder.dialect.java.JavaDialectConfiguration'
at
org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:283)
at
org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:268)
at
org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:181)
at
org.drools.compiler.PackageBuilderConfiguration.(PackageBuilderConfiguration.java:154)
at
org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactoryServiceImpl.java:26)
at
org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(KnowledgeBuilderFactory.java:86)
at TestMapPojoPackage.createKnowledgeBase(TestMapPojoPackage.java:86)
at TestMapPojoPackage.main(TestMapPojoPackage.java:58)
Caused by: java.lang.RuntimeException: The Janino jar is not in the
classpath
at
org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:100)
at
org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:55)
at
org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:279)
... 7 more

Is it something special to do?

Thanks again for your time


On Mon, Mar 7, 2011 at 7:44 PM, Vincent Legendre [via Drools - Java Rules
Engine]  wrote:

>
>
> I've just created 2 class like you show me with some changes to fit and
> test all (timestamp are long in fact, i have put int, double and string as
> well)
>
> In the second class you don't need the attributes as members, because
> Drools uses get / set methods to deduce them, and anyway you never use them
> as they are stored in the map.
>
> Then i have imported this in Guvnor.
>
> I have made 2 categories. I have put the model (jar) in the 2 categories.
>
> That is non-sense. Jars are not linked to a category but to a package.
>
>  I have created 2 simple rules playing with the attributes id, timestamp...
>
> With Guided editor ?
>
>
>
> 1) For the condition Map $m1 different then Map $m2. I suppose i have to
> use the function define in MapPojo? I have to write it by hand using "free
> from drl" : eval($m1 != $m2) ? or is there a better way?
>
> Its a way.
> You can also test the id directly in conditions (in Guided editor, bind the
> id of the first instance to a var, then compare it in the second condition.
>
>
> The same for testing that $m1 timestamp (Long) is befor $m2. I have to
> write it by hand : eval($m1.isBefore($m2))? So they have to know it exist a
> method isBefore if not said by the gui?
>
> Same. Add the test directly in the condition.
> Another solution is to use a custom operator (search this mailing list for
> samples).
>
>   2) In the code It's written MapTest1(..) instead of Map(...) so i
> suppose drools has to do it with the precompiled package  .pkg to know about
> the MapPojo and MapTest1.. If i take only the .drl, drools won'

Re: [rules-users] (no subject)

2011-03-08 Thread Eddy Hautot
i said that because i had the exact same problem these last 2 days. had to
do a right clic and save link as.
Now it's reworking with left clic/continue download  :-)

2011/3/8 Wolfgang Laun 

> A left click is OK, too; then "continue download".
> -W
>
> 2011/3/8 Eddy Hautot 
>
> right clic on it and save link as?
>>
>>
>>
>> 2011/3/8 Billy Buzzard 
>>
>>>  I am new to drools and I would like to download the binaries and try
>>> some of the examples.  However, when I click on the download like of the
>>> Drools binaries the screen goes dim and nothing happens.  Would someone
>>> please explain to me what is going on and what I should do to get the
>>> binaries?
>>>
>>>
>>>
>>> I did what Faisal Shafique suggested yesterday, so I have tried multiple
>>> browsers from home and from work.  I have tried IE 8 and Firefox 3.6.15 and
>>> nothing seems to work.
>>>
>>>
>>>
>>> Is there another way to get the binaries like using ftp?  Anyone have any
>>> ideas what I can do next to get a copy of the binaries short of building the
>>> binaries?
>>>
>>>
>>>
>>> ___
>>> rules-users mailing list
>>> rules-users@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>> ___
>> rules-users mailing list
>> rules-users@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] (no subject)

2011-03-08 Thread Wolfgang Laun
A left click is OK, too; then "continue download".
-W

2011/3/8 Eddy Hautot 

> right clic on it and save link as?
>
>
>
> 2011/3/8 Billy Buzzard 
>
>>  I am new to drools and I would like to download the binaries and try
>> some of the examples.  However, when I click on the download like of the
>> Drools binaries the screen goes dim and nothing happens.  Would someone
>> please explain to me what is going on and what I should do to get the
>> binaries?
>>
>>
>>
>> I did what Faisal Shafique suggested yesterday, so I have tried multiple
>> browsers from home and from work.  I have tried IE 8 and Firefox 3.6.15 and
>> nothing seems to work.
>>
>>
>>
>> Is there another way to get the binaries like using ftp?  Anyone have any
>> ideas what I can do next to get a copy of the binaries short of building the
>> binaries?
>>
>>
>>
>> ___
>> rules-users mailing list
>> rules-users@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Can not download Drools binaries

2011-03-08 Thread Geoffrey De Smet
Just got a mail saying that it's resolved and I 've verified it:
   http://www.jboss.org/drools/downloads

Op 07-03-11 16:01, Wolfgang Laun schreef:
> It's being looked into and hopefully resolved soon:
> https://issues.jboss.org/browse/ORG-990
> -W
>
>
> 2011/3/7 Faisal Shafique  >
>
> That happened to me recently too. Using Internet Explorer browser
> instead of Chrome fixed it. Try downloading through a different
> browser.
>
> Regards,
>
> Faisal Shafique
>
> On Mar 7, 2011, at 6:55 AM, "Billy Buzzard"
>  > wrote:
>
>> I’m new to drools and I would like to download the binaries and
>> try some of the examples.  However, when I click on the download
>> like of the Drools binaries the screen goes dim and nothing
>> happens.  Would someone please explain to me what is going on and
>> what I should do to get the binaries.
>>
>> ___
>> rules-users mailing list
>> rules-users@lists.jboss.org 
>> https://lists.jboss.org/mailman/listinfo/rules-users
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org 
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-- 
With kind regards,
Geoffrey De Smet


___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] (no subject)

2011-03-08 Thread Eddy Hautot
right clic on it and save link as?


2011/3/8 Billy Buzzard 

>  I am new to drools and I would like to download the binaries and try some
> of the examples.  However, when I click on the download like of the Drools
> binaries the screen goes dim and nothing happens.  Would someone please
> explain to me what is going on and what I should do to get the binaries?
>
>
>
> I did what Faisal Shafique suggested yesterday, so I have tried multiple
> browsers from home and from work.  I have tried IE 8 and Firefox 3.6.15 and
> nothing seems to work.
>
>
>
> Is there another way to get the binaries like using ftp?  Anyone have any
> ideas what I can do next to get a copy of the binaries short of building the
> binaries?
>
>
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] (no subject)

2011-03-08 Thread Wolfgang Laun
Please retry - I think the update happened 10mins ago. Working for me now.
-W

2011/3/8 Billy Buzzard 

>  I am new to drools and I would like to download the binaries and try some
> of the examples.  However, when I click on the download like of the Drools
> binaries the screen goes dim and nothing happens.  Would someone please
> explain to me what is going on and what I should do to get the binaries?
>
>
>
> I did what Faisal Shafique suggested yesterday, so I have tried multiple
> browsers from home and from work.  I have tried IE 8 and Firefox 3.6.15 and
> nothing seems to work.
>
>
>
> Is there another way to get the binaries like using ftp?  Anyone have any
> ideas what I can do next to get a copy of the binaries short of building the
> binaries?
>
>
>
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] (no subject)

2011-03-08 Thread Billy Buzzard
I am new to drools and I would like to download the binaries and try
some of the examples.  However, when I click on the download like of the
Drools binaries the screen goes dim and nothing happens.  Would someone
please explain to me what is going on and what I should do to get the
binaries?

 

I did what Faisal Shafique suggested yesterday, so I have tried multiple
browsers from home and from work.  I have tried IE 8 and Firefox 3.6.15
and nothing seems to work.  

 

Is there another way to get the binaries like using ftp?  Anyone have
any ideas what I can do next to get a copy of the binaries short of
building the binaries?

 

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Object insertion on runtime

2011-03-08 Thread Michael Anstis
Hi Frank,

It's good to have feedback :)

Closing the loop will help others who Google for similar issues at some
future date.

At least you no longer have to stare at your code getting bored!

With kind regards,

Mike

On 8 March 2011 11:31, FrankVhh  wrote:

> I know etiquette stipulates to avoid small talk, but since there is no
> "resolved" button, I think this can be useful.
>
> You suspected rightly, manstis, removing lock-on-active and replacing it
> with extra constraints in the LHS indeed solved the problem.
>
> Thanks for the quick (and correct) response :-).
>
>
> manstis wrote:
> >
> > I suspect your use of lock-on-active.
> >
> > Expert's documentation states: "Whenever ... an agenda-group receives the
> > focus, any rule within that group that has lock-on-active set to true
> will
> > not be activated any more; irrespective of the origin of the update, the
> > activation of a matching rule is discarded". Both rules are in the
> default
> > MAIN agenda group so when the first inserts a new Price the update to WM
> > (insert in your case) is not visible to the other rule. Inserting a new
> > Price before calling fireAllRules or commenting out the price constraint
> > in
> > the LHS alters the Facts\Patterns needing to be matched for activation to
> > occur.
> >
> > So, try removing lock-on-active (or making the two rules in different
> > agenda
> > groups).
> >
> > With kind regards,
> >
> > Mike
> >
> > On 8 March 2011 09:53, FrankVhh  wrote:
> >
> >> Hi all,
> >>
> >> Since yesterday, I am having a problem with reading inserted objects
> from
> >> memory. I don't know why it does not go as planned, because it should be
> >> quite straightforward. It is getting boring to stare at the code, so
> >> maybe
> >> one of you can detect an error.
> >>
> >> There are 2 kinds of rules. One kind inserts price objects into working
> >> memory (as in example 1). THe other kind detects whether the price
> exists
> >> and adapts it to a product (as in example 2).
> >>
> >> Example 1 seems to work, but the engine does not seem to recognize them
> >> as
> >> a
> >> Price object. All original price attributes of the products remain
> >> unchanged
> >> unless:
> >>   - I manually insert a Prce object before calling fireAllRules()
> >>   or
> >>   - Checking for an existing price is commented out in the LHS
> >>
> >> Removing constraints from $price (just checking for existance of a
> price)
> >> does not help.
> >>
> >> Any idea what has been going wrong?
> >>
> >> Thanks in advance.
> >>
> >> ==Example 1=
> >> rule "Prices_17"
> >>
> >>lock-on-active true
> >>when
> >>then
> >>Price $price = new Price();
> >>$price.setName("Blue autumn");
> >>$price.setPrice(6);
> >>insert($price);
> >>System.out.println("Price " + $price.getName() + "
> >> inserted");
> >> end
> >> =Example of usage=
> >>
> >> rule "Products_36"
> >>
> >>lock-on-active true
> >>when
> >>$product: Product(colour == "Blue")
> >>Season(season == Season.AUTUMN)
> >>$price: Price(name == "Blue autumn")
> >>then
> >>$product.setPrice($price.getPrice());
> >>update($product);
> >>System.out.println("Rule executed");
> >> end
> >> ===
> >>
> >> --
> >> View this message in context:
> >>
> http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650219.html
> >> Sent from the Drools - User mailing list archive at Nabble.com.
> >> ___
> >> rules-users mailing list
> >> rules-users@lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >
> > ___
> > rules-users mailing list
> > rules-users@lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
>
>
> --
> View this message in context:
> http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650454.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Object insertion on runtime

2011-03-08 Thread FrankVhh
I know etiquette stipulates to avoid small talk, but since there is no
"resolved" button, I think this can be useful.

You suspected rightly, manstis, removing lock-on-active and replacing it
with extra constraints in the LHS indeed solved the problem.

Thanks for the quick (and correct) response :-).


manstis wrote:
> 
> I suspect your use of lock-on-active.
> 
> Expert's documentation states: "Whenever ... an agenda-group receives the
> focus, any rule within that group that has lock-on-active set to true will
> not be activated any more; irrespective of the origin of the update, the
> activation of a matching rule is discarded". Both rules are in the default
> MAIN agenda group so when the first inserts a new Price the update to WM
> (insert in your case) is not visible to the other rule. Inserting a new
> Price before calling fireAllRules or commenting out the price constraint
> in
> the LHS alters the Facts\Patterns needing to be matched for activation to
> occur.
> 
> So, try removing lock-on-active (or making the two rules in different
> agenda
> groups).
> 
> With kind regards,
> 
> Mike
> 
> On 8 March 2011 09:53, FrankVhh  wrote:
> 
>> Hi all,
>>
>> Since yesterday, I am having a problem with reading inserted objects from
>> memory. I don't know why it does not go as planned, because it should be
>> quite straightforward. It is getting boring to stare at the code, so
>> maybe
>> one of you can detect an error.
>>
>> There are 2 kinds of rules. One kind inserts price objects into working
>> memory (as in example 1). THe other kind detects whether the price exists
>> and adapts it to a product (as in example 2).
>>
>> Example 1 seems to work, but the engine does not seem to recognize them
>> as
>> a
>> Price object. All original price attributes of the products remain
>> unchanged
>> unless:
>>   - I manually insert a Prce object before calling fireAllRules()
>>   or
>>   - Checking for an existing price is commented out in the LHS
>>
>> Removing constraints from $price (just checking for existance of a price)
>> does not help.
>>
>> Any idea what has been going wrong?
>>
>> Thanks in advance.
>>
>> ==Example 1=
>> rule "Prices_17"
>>
>>lock-on-active true
>>when
>>then
>>Price $price = new Price();
>>$price.setName("Blue autumn");
>>$price.setPrice(6);
>>insert($price);
>>System.out.println("Price " + $price.getName() + "
>> inserted");
>> end
>> =Example of usage=
>>
>> rule "Products_36"
>>
>>lock-on-active true
>>when
>>$product: Product(colour == "Blue")
>>Season(season == Season.AUTUMN)
>>$price: Price(name == "Blue autumn")
>>then
>>$product.setPrice($price.getPrice());
>>update($product);
>>System.out.println("Rule executed");
>> end
>> ===
>>
>> --
>> View this message in context:
>> http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650219.html
>> Sent from the Drools - User mailing list archive at Nabble.com.
>> ___
>> rules-users mailing list
>> rules-users@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> 
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 


--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650454.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] Object insertion on runtime

2011-03-08 Thread Michael Anstis
I suspect your use of lock-on-active.

Expert's documentation states: "Whenever ... an agenda-group receives the
focus, any rule within that group that has lock-on-active set to true will
not be activated any more; irrespective of the origin of the update, the
activation of a matching rule is discarded". Both rules are in the default
MAIN agenda group so when the first inserts a new Price the update to WM
(insert in your case) is not visible to the other rule. Inserting a new
Price before calling fireAllRules or commenting out the price constraint in
the LHS alters the Facts\Patterns needing to be matched for activation to
occur.

So, try removing lock-on-active (or making the two rules in different agenda
groups).

With kind regards,

Mike

On 8 March 2011 09:53, FrankVhh  wrote:

> Hi all,
>
> Since yesterday, I am having a problem with reading inserted objects from
> memory. I don't know why it does not go as planned, because it should be
> quite straightforward. It is getting boring to stare at the code, so maybe
> one of you can detect an error.
>
> There are 2 kinds of rules. One kind inserts price objects into working
> memory (as in example 1). THe other kind detects whether the price exists
> and adapts it to a product (as in example 2).
>
> Example 1 seems to work, but the engine does not seem to recognize them as
> a
> Price object. All original price attributes of the products remain
> unchanged
> unless:
>   - I manually insert a Prce object before calling fireAllRules()
>   or
>   - Checking for an existing price is commented out in the LHS
>
> Removing constraints from $price (just checking for existance of a price)
> does not help.
>
> Any idea what has been going wrong?
>
> Thanks in advance.
>
> ==Example 1=
> rule "Prices_17"
>
>lock-on-active true
>when
>then
>Price $price = new Price();
>$price.setName("Blue autumn");
>$price.setPrice(6);
>insert($price);
>System.out.println("Price " + $price.getName() + "
> inserted");
> end
> =Example of usage=
>
> rule "Products_36"
>
>lock-on-active true
>when
>$product: Product(colour == "Blue")
>Season(season == Season.AUTUMN)
>$price: Price(name == "Blue autumn")
>then
>$product.setPrice($price.getPrice());
>update($product);
>System.out.println("Rule executed");
> end
> ===
>
> --
> View this message in context:
> http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650219.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] Object insertion on runtime

2011-03-08 Thread FrankVhh
Hi all,

Since yesterday, I am having a problem with reading inserted objects from
memory. I don't know why it does not go as planned, because it should be
quite straightforward. It is getting boring to stare at the code, so maybe
one of you can detect an error.

There are 2 kinds of rules. One kind inserts price objects into working
memory (as in example 1). THe other kind detects whether the price exists
and adapts it to a product (as in example 2).

Example 1 seems to work, but the engine does not seem to recognize them as a
Price object. All original price attributes of the products remain unchanged
unless:
   - I manually insert a Prce object before calling fireAllRules()
   or
   - Checking for an existing price is commented out in the LHS

Removing constraints from $price (just checking for existance of a price)
does not help.

Any idea what has been going wrong?

Thanks in advance.

==Example 1=
rule "Prices_17"

lock-on-active true
when
then
Price $price = new Price();
$price.setName("Blue autumn");
$price.setPrice(6);
insert($price);
System.out.println("Price " + $price.getName() + " inserted");
end
=Example of usage=

rule "Products_36"

lock-on-active true
when
$product: Product(colour == "Blue")
Season(season == Season.AUTUMN)
$price: Price(name == "Blue autumn")
then
$product.setPrice($price.getPrice());
update($product);
System.out.println("Rule executed");
end
===

--
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Object-insertion-on-runtime-tp2650219p2650219.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users