Re: [rules-users] fireUntilHalt() is halt forever

2012-08-21 Thread Wolfgang Laun
You are not writing rules - you are using rules to disguise the fact
that you are using if statements to process your data.

What is "droolsRequest" and how is it declared? If this were a real rule,
it would be

when
DroolsRequest( address.stateCode == "MA" )
then
   ...

no-loop is nonsense in a rule that doesn't update any WM data.

-W

On 21 August 2012 17:00, Rana  wrote:

> Here is the example
>
> rule "AndroGel Provider State"
> no-loop true
> salience 95
> agenda-group "AndroGel"
> when
> eval( droolsRequest.address.stateCode == "MA" )
> then
> logging();
> drools.halt();
> end
>
> the other rule is very similar but for a different Agenda Group
>
> rule "Pradaxa Provider State"
> no-loop true
> salience 95
> agenda-group "Pradaxa"
> when
> eval( droolsRequest.address.stateCode == "MA" )
> then
> logging();
> drools.halt();
> end
>
> In this case it is firing the Pradaxa rule and giving me the wrong output.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019313.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Esteban Aliverti
You can still have different change-sets pointing to different resources
(you can share these resources too) for different kbases.

Best Regards,



Esteban Aliverti
- Blog @ http://ilesteban.wordpress.com


On Tue, Aug 21, 2012 at 5:21 PM, Rana  wrote:

> I am actually using ChangeSet, because we did not wanted the rule files to
> loaded many times, rather load at once and use scanner to look for any
> changes.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019317.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Rana
I am actually using ChangeSet, because we did not wanted the rule files to
loaded many times, rather load at once and use scanner to look for any
changes.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019317.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Esteban Aliverti
Instead of grouping your rules using agenda-group maybe you could partition
your kbase to only have the rules for a particular Product (?)

Best Regards,



Esteban Aliverti
- Blog @ http://ilesteban.wordpress.com


On Tue, Aug 21, 2012 at 5:00 PM, Rana  wrote:

> Here is the example
>
> rule "AndroGel Provider State"
> no-loop true
> salience 95
> agenda-group "AndroGel"
> when
> eval( droolsRequest.address.stateCode == "MA" )
> then
> logging();
> drools.halt();
> end
>
> the other rule is very similar but for a different Agenda Group
>
> rule "Pradaxa Provider State"
> no-loop true
> salience 95
> agenda-group "Pradaxa"
> when
> eval( droolsRequest.address.stateCode == "MA" )
> then
> logging();
> drools.halt();
> end
>
> In this case it is firing the Pradaxa rule and giving me the wrong output.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019313.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Rana
Here is the example

rule "AndroGel Provider State"
no-loop true
salience 95
agenda-group "AndroGel"
when
eval( droolsRequest.address.stateCode == "MA" )
then
logging();
drools.halt();
end

the other rule is very similar but for a different Agenda Group

rule "Pradaxa Provider State"
no-loop true
salience 95
agenda-group "Pradaxa"
when
eval( droolsRequest.address.stateCode == "MA" )
then
logging();
drools.halt();
end

In this case it is firing the Pradaxa rule and giving me the wrong output.

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019313.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Wolfgang Laun
On 21/08/2012, Rana  wrote:
> One question, my rules have the same facts, and this is why it is
> activating
> all the satisfied rules before firing. is there anyway to stop this.
>

How do you determine that there are many "satisfied rules"? And, if
they are on the agenda after inserting facts, why don't they have to
be fired?

It's impossible to suggest anything without a representative sample.

> I mean think about it. If I have million rules with same facts it will slow
> down the application.

I'll take you a million of hours to write a million of rules, or about
600 years of work. :)

-W

>
> Please let me know.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019308.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Rana
Ok, it is working now. I don't know what was the problem. I guess the rules
were not right before.

One question, my rules have the same facts, and this is why it is activating
all the satisfied rules before firing. is there anyway to stop this.

I mean think about it. If I have million rules with same facts it will slow
down the application.

Please let me know.

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019308.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Wolfgang Laun
Is the consequence of the rule where you call
   drools.halt()
really executed?

-W

On 21/08/2012, Rana  wrote:
> I mean to say is that, control does not come back to
> workingMemory.fireUntillHalt(). It just hangs in the rule file itself. Does
> not do anything at all.
>
> What is the use of that.
>
> If I write like halt in the rule then it should stop the rule firing and
> control should be sent back to workingMemory.fireUntillHalt() and execute
> whatever after that.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019304.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-21 Thread Rana
I mean to say is that, control does not come back to
workingMemory.fireUntillHalt(). It just hangs in the rule file itself. Does
not do anything at all.

What is the use of that.

If I write like halt in the rule then it should stop the rule firing and
control should be sent back to workingMemory.fireUntillHalt() and execute
whatever after that.

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019304.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-20 Thread Wolfgang Laun
On 20/08/2012, Rana  wrote:
> I am using Working Memory instead of kSession. And it is not working at
> all.
> It just hangs after drools.halt();

Well, halt() means "do not continue". What on earth do you expect?
-W


>
> Please let me know about it.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019290.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-20 Thread Rana
I am using Working Memory instead of kSession. And it is not working at all.
It just hangs after drools.halt();

Please let me know about it.

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019290.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-15 Thread Rana
Nope it is not working like that.

I removed it. Using fireAll

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019153.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-15 Thread Wolfgang Laun
I guess you call kSession.fireUntilHalt().  This call should return
after drools.halt() is called from one of the rules. Java code
following this call should do whatever needs to be done. (I don't know
what you mean by "retrieve the resources...".)

-W



On 15/08/2012, Rana  wrote:
> Thanks for your reply.
>
> Once all the rules of that file is good, then it should retrieve the
> resources in the rule file but not the session. and then may be fire other
> rule file.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019148.html
> Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-15 Thread Rana
Thanks for your reply.

Once all the rules of that file is good, then it should retrieve the
resources in the rule file but not the session. and then may be fire other
rule file.

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146p4019148.html
Sent from the Drools: User forum 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] fireUntilHalt() is halt forever

2012-08-15 Thread Mauricio Salatino
Hi,
yes if you use : drools.halt();
that will stop the session.
What exactly do you want to achieve with that?
Cheers

On Wed, Aug 15, 2012 at 5:49 PM, Rana  wrote:

> Hi my rule file is halt for ever. Can anybody tell me why. I debugged and
> saw
> that it is going into this method in DefaultAgenda.class
>
> public void fireUntilHalt(final AgendaFilter agendaFilter) {
>
> synchronized ( this.halt ) {
> if( !this.halt.get() ) this.halt.wait();   //it is
> halt here  and waiting.
> }
>
>
> this is my rule file.
>
> http://drools.46999.n3.nabble.com/file/n4019146/rule_file.txtrule_file.txt
>
>
> Please help me out.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.jugargentina.org
 - Co-Founder @ http://www.jbug.com.ar

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


[rules-users] fireUntilHalt() is halt forever

2012-08-15 Thread Rana
Hi my rule file is halt for ever. Can anybody tell me why. I debugged and saw
that it is going into this method in DefaultAgenda.class

public void fireUntilHalt(final AgendaFilter agendaFilter) {

synchronized ( this.halt ) {
if( !this.halt.get() ) this.halt.wait();   //it is
halt here  and waiting.
}


this is my rule file.

http://drools.46999.n3.nabble.com/file/n4019146/rule_file.txt rule_file.txt 


Please help me out.

Thanks.



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-halt-forever-tp4019146.html
Sent from the Drools: User forum 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] FireUntilHalt

2012-07-12 Thread crajor
Thanks for your comment, Edson.

I have been using 5.3.0.Final.  I could easily move to 5.4.0.Final but I
don't see any of the 5.4.x branches at Maven Central.  Is there another
repository that has more up to date releases?

Craig

--
View this message in context: 
http://drools.46999.n3.nabble.com/FireUntilHalt-tp4018610p4018638.html
Sent from the Drools: User forum 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] FireUntilHalt

2012-07-11 Thread Edson Tirelli
   Which Drools version are you using?

   There are no "secrets", but you have to be aware that in this mode rules
will fire right away if they can. Also, if you are using 5.4.0.Final,
please read another e-mail I sent to the list today, as there was a
concurrency bug that was fixed in the 5.4.x branch that could cause NPE.

   Edson

On Wed, Jul 11, 2012 at 10:16 PM, crajor  wrote:

> I have a fairly complicated drools program and I want to introduce temporal
> reasoning to it.  I spent a bit of time writing some proof-of-concept
> programs to get the feel of fusion and then tried to slowly introduce
> things
> into my original drools program.  When I changed my program from using
> fireAllRules() to using fireUntilHalt() on a separate thread, I suddenly
> get
> failures in my unit tests.  (My first thought was that there was a race
> condition between my unit tests and the thread calling fireUntilHalt() so I
> introduced a delay before my unit tests but no luck)
>
> Here are some of the behaviors I am seeing.
>
> 1) I occasionally get nullpointerexception from the thread running
> fireUntilHalt()
> 2) My lock-on-active rules aren't firing
>
> I have banged my head on this a while with no success.  (I even tried
> putting fireAllRules() in a loop because of suggestions I saw but no luck
> and same behavior).  My questions are, Is there a secret to using
> fireUntilHalt() that I am not aware of?  Can anybody point me to where I
> can
> educate myself on its proper use?
>
> BTW no persistence and no spring in the code at this point.
>
> Thanks, in advance, for any help you can provide.
>
> Craig
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/FireUntilHalt-tp4018610.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
  Edson Tirelli
  JBoss Drools Core Development
  JBoss by Red Hat @ www.jboss.com
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] FireUntilHalt

2012-07-11 Thread crajor
I have a fairly complicated drools program and I want to introduce temporal
reasoning to it.  I spent a bit of time writing some proof-of-concept
programs to get the feel of fusion and then tried to slowly introduce things
into my original drools program.  When I changed my program from using
fireAllRules() to using fireUntilHalt() on a separate thread, I suddenly get
failures in my unit tests.  (My first thought was that there was a race
condition between my unit tests and the thread calling fireUntilHalt() so I
introduced a delay before my unit tests but no luck)  

Here are some of the behaviors I am seeing.

1) I occasionally get nullpointerexception from the thread running
fireUntilHalt()
2) My lock-on-active rules aren't firing

I have banged my head on this a while with no success.  (I even tried
putting fireAllRules() in a loop because of suggestions I saw but no luck
and same behavior).  My questions are, Is there a secret to using
fireUntilHalt() that I am not aware of?  Can anybody point me to where I can
educate myself on its proper use?

BTW no persistence and no spring in the code at this point.

Thanks, in advance, for any help you can provide.

Craig

--
View this message in context: 
http://drools.46999.n3.nabble.com/FireUntilHalt-tp4018610.html
Sent from the Drools: User forum 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] fireUntilHalt is doing busy wait and consuming 100% of one CPU core

2012-03-20 Thread prashant.badhe
Observed this on Drools 5.1.1 final when fireUntilHalt() is used.

The issue is reported as 'Resolved' in post:
"https://issues.jboss.org/browse/JBRULES-2756"; in Drools 5.2.0 M1.

So tried the same on Drools 5.2.0 final & 5.2.0 M1. Also when I try to make
the recommended code changes in drools-core in Jira-2756, the issue seems to
me as not fixed. In all these cases, the system consumes 100% resources of
one CPU core.

Please let me know does this issue is resolved or not in the latter versions
of Drools?

-Prashant Badhe



--
View this message in context: 
http://drools.46999.n3.nabble.com/fireUntilHalt-is-doing-busy-wait-and-consuming-100-of-one-CPU-core-tp3844714p3844714.html
Sent from the Drools: User forum 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] fireUntilHalt and timing of rule activations

2010-10-06 Thread Wolfgang Laun
Another solution would be to have a simple rule matching an Object
that is a container of facts:

rule "synced bunch insert"
when
$fc : FactContainer( $facts : facts )
then
   for( Object $f : $facts ){ insert( $f ); }
   retract( $fc );
end

Threads just insert a FactContainer; so this is synced in all ways.

BTW: Having a session run continuously in a thread of its own may be a
necessity if there are timers active; thus just using fireAllRules may
not be a solution in all situations.

-W


On 6 October 2010 10:15, Swindells, Thomas  wrote:
> I'd suggest that it may be simple to have a (synchronized) helper method 
> which you call to insert your objects.
> This method would create a batch command containing an insert command and a 
> fireAllRules command. You only need to fire the rules after you have changed 
> something and this approach removes all multithread access into the working 
> memory.
>
> Thomas
>
>> -Original Message-
>> From: rules-users-boun...@lists.jboss.org [mailto:rules-users-
>> boun...@lists.jboss.org] On Behalf Of Edson Tirelli
>> Sent: 06 October 2010 01:28
>> To: Rules Users List
>> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>>
>>    Norman,
>>
>>    What you say makes sense, but it is not implemented. It is
>> something I think would be good to have. May I suggest you open a JIRA
>> for it so we track it?
>>
>>    Meanwhile, the workaround I suggest is that instead of using
>> fireUntilHalt(), you call fireAllRules() in a loop, either after each
>> X insertions of every Y seconds, depending on your system's
>> architecture.
>>
>>    Edson
>>
>>
>> 2010/10/5 Norman C :
>> >
>> > Thanks for the suggestions.  They all look like good ways to handle the
>> > situation I described.  However, they require modifying all of the rules to
>> > check for the latch object and its state, which I would prefer not to do 
>> > and
>> > doesn't seem like would be necessary.
>> >
>> > It seems to me that this is something that Drools can handle internally
>> > without the rules having to be written this way.  Since the rules engine
>> > processes rules in a single thread, it's a concurrency issue.  
>> > fireUntilHalt
>> > should be blocked when a fact is inserted/updated/retracted, until all
>> > activations as a result of that change in working memory are completed.
>> >
>> > Thoughts?
>> >
>> >
>> >
>> > Norman
>> >
>> > 
>> > From: Wolfgang Laun 
>> > To: Rules Users List 
>> > Sent: Sun, October 3, 2010 10:51:08 PM
>> > Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>> >
>> > 2010/10/4 Greg Barton 
>> >>
>> >> If you don't have some way of associating the data with a particular Latch
>> >> it's easy to get overlap when processing datasets.  In general you need
>> some
>> >> way to group the data together.  You can avoid a back reference to the
>> Latch
>> >> by having a Set of some sort in the Latch to which you add all data in the
>> >> batch.
>> >
>> > Which burdens all inserts and retracts to be accompanied by correpsonding
>> > updates of the Set/Map.
>> >
>> >>
>> >>  If you use a Set backed by an IdentityHashMap the overhead is pretty
>> >> small, and rules look like this:
>> >>
>> >> rule "CountAs"
>> >>        dialect "java"
>> >>        salience -1
>> >>        when
>> >>                l : Latch()
>> >>                a : A( this memberOf l.dataSet )
>> >>        then
>> >>                retract(a);
>> >>                l.incACount();
>> >>                System.out.println("Found an A in " + l);
>> >> end
>> >>
>> >> See attached project.
>> >>
>> >> THough I like the cleverness of using the "data in matched objects alters
>> >> rule properties" trick, you could have just as easily had a "Latch(value 
>> >> ==
>> >> true)" conditional, and that would be more clear,
>> >
>> > It was meant to emphasize the role of Latch.value as an enabler for the 
>> > rule
>> > in contrast to a regular constraint being part of the application logic.
>> > YMMV ;-)
>> >
>> >
>&

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-06 Thread Swindells, Thomas
I'd suggest that it may be simple to have a (synchronized) helper method which 
you call to insert your objects.
This method would create a batch command containing an insert command and a 
fireAllRules command. You only need to fire the rules after you have changed 
something and this approach removes all multithread access into the working 
memory.

Thomas

> -Original Message-
> From: rules-users-boun...@lists.jboss.org [mailto:rules-users-
> boun...@lists.jboss.org] On Behalf Of Edson Tirelli
> Sent: 06 October 2010 01:28
> To: Rules Users List
> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>
>Norman,
>
>What you say makes sense, but it is not implemented. It is
> something I think would be good to have. May I suggest you open a JIRA
> for it so we track it?
>
>Meanwhile, the workaround I suggest is that instead of using
> fireUntilHalt(), you call fireAllRules() in a loop, either after each
> X insertions of every Y seconds, depending on your system's
> architecture.
>
>Edson
>
>
> 2010/10/5 Norman C :
> >
> > Thanks for the suggestions.  They all look like good ways to handle the
> > situation I described.  However, they require modifying all of the rules to
> > check for the latch object and its state, which I would prefer not to do and
> > doesn't seem like would be necessary.
> >
> > It seems to me that this is something that Drools can handle internally
> > without the rules having to be written this way.  Since the rules engine
> > processes rules in a single thread, it's a concurrency issue.  fireUntilHalt
> > should be blocked when a fact is inserted/updated/retracted, until all
> > activations as a result of that change in working memory are completed.
> >
> > Thoughts?
> >
> >
> >
> > Norman
> >
> > 
> > From: Wolfgang Laun 
> > To: Rules Users List 
> > Sent: Sun, October 3, 2010 10:51:08 PM
> > Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
> >
> > 2010/10/4 Greg Barton 
> >>
> >> If you don't have some way of associating the data with a particular Latch
> >> it's easy to get overlap when processing datasets.  In general you need
> some
> >> way to group the data together.  You can avoid a back reference to the
> Latch
> >> by having a Set of some sort in the Latch to which you add all data in the
> >> batch.
> >
> > Which burdens all inserts and retracts to be accompanied by correpsonding
> > updates of the Set/Map.
> >
> >>
> >>  If you use a Set backed by an IdentityHashMap the overhead is pretty
> >> small, and rules look like this:
> >>
> >> rule "CountAs"
> >>dialect "java"
> >>salience -1
> >>when
> >>l : Latch()
> >>a : A( this memberOf l.dataSet )
> >>then
> >>retract(a);
> >>l.incACount();
> >>System.out.println("Found an A in " + l);
> >> end
> >>
> >> See attached project.
> >>
> >> THough I like the cleverness of using the "data in matched objects alters
> >> rule properties" trick, you could have just as easily had a "Latch(value ==
> >> true)" conditional, and that would be more clear,
> >
> > It was meant to emphasize the role of Latch.value as an enabler for the rule
> > in contrast to a regular constraint being part of the application logic.
> > YMMV ;-)
> >
> >
> >>
> >> IMO.  I'm curious to see of the enabled trick would perform better,
> >> though.
> >
> > Whichever way, there is a considerable burden associated with writing the
> > rules and, possibly, inserts and retracts. I wonder what the benefits of
> > having the session run all the time are as opposed to simply let it fire
> > until it stops; then do the inserts and then fireUntilHalt again? If there
> > is, I'd opt for the addition of an atomic insertAll(Object... objects) and
> > then none of this hocus-pocus would be necessary.
> >
> > -W
> >
> >>
> >> GreG
> >>
> >> --- On Sun, 10/3/10, Wolfgang Laun  wrote:
> >>
> >> From: Wolfgang Laun 
> >> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
> >> To: "Rules Users List" 
> >> Date: Sunday, October 3, 2010, 4:23 AM
> >>
> >&

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Norman C


Wolfgang, so I don't improperly interpret your suggestion, it may be better if 
you add your suggestion to the ticket.  This is the ticket I logged: 
https://jira.jboss.org/browse/JBRULES-2723

Thanks,
Norman





From: Wolfgang Laun 
To: Rules Users List 
Sent: Tue, October 5, 2010 11:34:53 PM
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations

Norman,

if you create the Jira, please include my suggestion to make this call accept a 
collection of facts without any intervening Engine activity.

Thanks
-W


2010/10/5 Norman C 


>
>Thanks for the suggestions.  They all look like good ways to handle the 
>situation I described.  However, they require modifying all of the rules to 
>check for the latch object and its state, which I would prefer not to do and 
>doesn't seem like would be necessary.
> 
>It seems to me that this is something that Drools can handle internally 
>without 
>the rules having to be written this way.  Since the rules engine processes 
>rules 
>in a single thread, it's a concurrency issue.  fireUntilHalt should be blocked 
>when a fact is inserted/updated/retracted, until all activations as a result 
>of 
>that change in working memory are completed.  
>
> 
>Thoughts?
> 
>Norman
>
>
>
>
>


>From: Wolfgang Laun 
>
>To: Rules Users List 
>Sent: Sun, October 3, 2010 10:51:08 PM 
>
>Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>
>
>2010/10/4 Greg Barton 
>
>If you don't have some way of associating the data with a particular Latch 
>it's 
>easy to get overlap when processing datasets.  In general you need some way to 
>group the data together.  You can avoid a back reference to the Latch by 
>having 
>a Set of some sort in the Latch to which you add all data in the batch.

Which burdens all inserts and retracts to be accompanied by correpsonding 
updates of the Set/Map.
 
 If you use a Set backed by an IdentityHashMap the overhead is pretty small, 
and 
rules look like this:
>
>
>rule "CountAs"
>       dialect "java"
>       salience -1
>       when
>               l : Latch()
>               a : A( this memberOf l.dataSet )
>
>       then
>               retract(a);
>               l.incACount();
>               System.out.println("Found an A in " + l);
>end
>
>See attached project.
>
>THough I like the cleverness of using the "data in matched objects alters rule 
>properties" trick, you could have just as easily had a "Latch(value == true)" 
>conditional, and that would be more clear,

It was meant to emphasize the role of Latch.value as an enabler for the rule in 
contrast to a regular constraint being part of the application logic. YMMV ;-)

 
IMO.  I'm curious to see of the enabled trick would perform better, though.
>

Whichever way, there is a considerable burden associated with writing the rules 
and, possibly, inserts and retracts. I wonder what the benefits of having the 
session run all the time are as opposed to simply let it fire until it stops; 
then do the inserts and then fireUntilHalt again? If there is, I'd opt for the 
addition of an atomic insertAll(Object... objects) and then none of this 
hocus-pocus would be necessary.

-W
 

>GreG
>
>--- On Sun, 10/3/10, Wolfgang Laun  wrote:
>
>From: Wolfgang Laun 
>Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>To: "Rules Users List" 
>Date: Sunday, October 3, 2010, 4:23 AM
>
>
>There is another way of associating a Latch object with rules, without having 
>to 
>store a reference to a Latch in objects:
>
>rule "CountAs"
>enabled ( $v )
>when
> Latch( $v : value )
> X( ... )
>
>then ... end
>
>At the beginning, insert Latch( false ), which blocks all rules with this 
>construction, or modify the Latch object to false before inserting more facts. 
>Then, insert the facts, and, at the end, modify Latch to true.
>
>
>    Latch latch = new Latch( true );
>    FactHandle fh = kSession.insert( latch );
>    kSession.fireAllRules();
>    latch.setValue( false );
>    kSession.update( fh, latch );
>
>Of course, you can use multiple Latch objects, adding a name field with a 
>specific value, so that a latch applies to a subset of rules only:
>
>
>rule "CountAs"
>
>enabled ( $v )
>
>when
>
> Latch( name == "CountAs", $v : value )
> ...
>
>But be aware that changes to Latch objects will retrigger rules that have 
>fired 
>previously; so with this approach you'll have to make sure to retract facts 
>when 
>they have been processed.

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Norman C


Greg,

I'm calling fireUntilHalt to have rules fired as soon as activations are 
created 
in response to changes in working memory, and so that I dont have to call 
fireAllRules individually.  In general, the behavior of fireUntilHalt is what I 
want, except for this one exception.

The issue, I believe, is that whenever rules are fired, the engine must respect 
the salience of the rules as specified.  To do this, it must wait until all 
rules that are going to be activated in response to the working memory action 
have been activated.

Norman





From: Greg Barton 
To: Rules Users List 
Cc: Rules Users List 
Sent: Tue, October 5, 2010 5:03:33 PM
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations


The entire purpose of fireUntilHalt is to do exactly the opposite of what you 
describe. :) Is there any compelling reason you're using it as opposed to just 
calling fireAllRules?

GreG

On Oct 5, 2010, at 16:34, Norman C  wrote:



>
>Thanks for the suggestions.  They all look like good ways to handle the 
>situation I described.  However, they require modifying all of the rules to 
>check for the latch object and its state, which I would prefer not to do and 
>doesn't seem like would be necessary.
> 
>It seems to me that this is something that Drools can handle internally 
>without 
>the rules having to be written this way.  Since the rules engine processes 
>rules 
>in a single thread, it's a concurrency issue.  fireUntilHalt should be blocked 
>when a fact is inserted/updated/retracted, until all activations as a result 
>of 
>that change in working memory are completed.  
>
> 
>Thoughts?
> 
>Norman
>
>
>
>
>

From: Wolfgang Laun 
>To: Rules Users List 
>Sent: Sun, October 3, 2010 10:51:08 PM
>Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>
>2010/10/4 Greg Barton 
>
>If you don't have some way of associating the data with a particular Latch 
>it's 
>easy to get overlap when processing datasets.  In general you need some way to 
>group the data together.  You can avoid a back reference to the Latch by 
>having 
>a Set of some sort in the Latch to which you add all data in the batch.

Which burdens all inserts and retracts to be accompanied by correpsonding 
updates of the Set/Map.
 
 If you use a Set backed by an IdentityHashMap the overhead is pretty small, 
and 
rules look like this:
>
>
>rule "CountAs"
>       dialect "java"
>       salience -1
>       when
>               l : Latch()
>               a : A( this memberOf l.dataSet )
>
>       then
>               retract(a);
>               l.incACount();
>               System.out.println("Found an A in " + l);
>end
>
>See attached project.
>
>THough I like the cleverness of using the "data in matched objects alters rule 
>properties" trick, you could have just as easily had a "Latch(value == true)" 
>conditional, and that would be more clear,

It was meant to emphasize the role of Latch.value as an enabler for the rule in 
contrast to a regular constraint being part of the application logic. YMMV ;-)

 
IMO.  I'm curious to see of the enabled trick would perform better, though.
>

Whichever way, there is a considerable burden associated with writing the rules 
and, possibly, inserts and retracts. I wonder what the benefits of having the 
session run all the time are as opposed to simply let it fire until it stops; 
then do the inserts and then fireUntilHalt again? If there is, I'd opt for the 
addition of an atomic insertAll(Object... objects) and then none of this 
hocus-pocus would be necessary.

-W
 

>GreG
>
>--- On Sun, 10/3/10, Wolfgang Laun  wrote:
>
>From: Wolfgang Laun 
>Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>To: "Rules Users List" 
>Date: Sunday, October 3, 2010, 4:23 AM
>
>
>There is another way of associating a Latch object with rules, without having 
>to 
>store a reference to a Latch in objects:
>
>rule "CountAs"
>enabled ( $v )
>when
> Latch( $v : value )
> X( ... )
>
>then ... end
>
>At the beginning, insert Latch( false ), which blocks all rules with this 
>construction, or modify the Latch object to false before inserting more facts. 
>Then, insert the facts, and, at the end, modify Latch to true.
>
>
>    Latch latch = new Latch( true );
>    FactHandle fh = kSession.insert( latch );
>    kSession.fireAllRules();
>    latch.setValue( false );
>    kSession.update( fh, latch );
>
>Of course, you can use multiple Latch objects, adding a name field with a 
>specific value, so that a latch applies to a 

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Wolfgang Laun
Norman,

if you create the Jira, please include my suggestion to make this call
accept a collection of facts without any intervening Engine activity.

Thanks
-W

2010/10/5 Norman C 

>
> Thanks for the suggestions.  They all look like good ways to handle the
> situation I described.  However, they require modifying all of the rules to
> check for the latch object and its state, which I would prefer not to do and
> doesn't seem like would be necessary.
>
> It seems to me that this is something that Drools can handle internally
> without the rules having to be written this way.  Since the rules engine
> processes rules in a single thread, it's a concurrency issue.  fireUntilHalt
> should be blocked when a fact is inserted/updated/retracted, until all
> activations as a result of that change in working memory are completed.
>
> Thoughts?
>
>
>
> Norman
>
>
>  --
> *From:* Wolfgang Laun 
> *To:* Rules Users List 
> *Sent:* Sun, October 3, 2010 10:51:08 PM
>
> *Subject:* Re: [rules-users] fireUntilHalt and timing of rule activations
>
> 2010/10/4 Greg Barton 
>
>> If you don't have some way of associating the data with a particular Latch
>> it's easy to get overlap when processing datasets.  In general you need some
>> way to group the data together.  You can avoid a back reference to the Latch
>> by having a Set of some sort in the Latch to which you add all data in the
>> batch.
>
>
> Which burdens all inserts and retracts to be accompanied by correpsonding
> updates of the Set/Map.
>
>
>>  If you use a Set backed by an IdentityHashMap the overhead is pretty
>> small, and rules look like this:
>>
>> rule "CountAs"
>>dialect "java"
>>salience -1
>>when
>>l : Latch()
>>a : A( this memberOf l.dataSet )
>>then
>>retract(a);
>>l.incACount();
>>System.out.println("Found an A in " + l);
>> end
>>
>> See attached project.
>>
>> THough I like the cleverness of using the "data in matched objects alters
>> rule properties" trick, you could have just as easily had a "Latch(value ==
>> true)" conditional, and that would be more clear,
>
>
> It was meant to emphasize the role of Latch.value as an enabler for the
> rule in contrast to a regular constraint being part of the application
> logic. YMMV ;-)
>
>
>
>> IMO.  I'm curious to see of the enabled trick would perform better,
>> though.
>>
>
> Whichever way, there is a considerable burden associated with writing the
> rules and, possibly, inserts and retracts. I wonder what the benefits of
> having the session run all the time are as opposed to simply let it fire
> until it stops; then do the inserts and then fireUntilHalt again? If there
> is, I'd opt for the addition of an atomic insertAll(Object... objects) and
> then none of this hocus-pocus would be necessary.
>
> -W
>
>
>>
>> GreG
>>
>> --- On Sun, 10/3/10, Wolfgang Laun  wrote:
>>
>> From: Wolfgang Laun 
>> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>> To: "Rules Users List" 
>> Date: Sunday, October 3, 2010, 4:23 AM
>>
>> There is another way of associating a Latch object with rules, without
>> having to store a reference to a Latch in objects:
>>
>> rule "CountAs"
>> enabled ( $v )
>> when
>>  Latch( $v : value )
>>  X( ... )
>>
>> then ... end
>>
>> At the beginning, insert Latch( false ), which blocks all rules with this
>> construction, or modify the Latch object to false before inserting more
>> facts. Then, insert the facts, and, at the end, modify Latch to true.
>>
>>
>> Latch latch = new Latch( true );
>> FactHandle fh = kSession.insert( latch );
>> kSession.fireAllRules();
>> latch.setValue( false );
>> kSession.update( fh, latch );
>>
>> Of course, you can use multiple Latch objects, adding a name field with a
>> specific value, so that a latch applies to a subset of rules only:
>>
>>
>> rule "CountAs"
>>
>> enabled ( $v )
>>
>> when
>>
>>  Latch( name == "CountAs", $v : value )
>>  ...
>>
>> But be aware that changes to Latch objects will retrigger rules that have
>> fired previously; so with this approach you'll have to make sure to retract
>> facts when they have been pro

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Norman C


Edson, thanks for the reply.  I've logged a ticket: 
https://jira.jboss.org/browse/JBRULES-2723

Basically, this is how I'm working around the issue for now.

Thanks,
Norman



- Original Message 
From: Edson Tirelli 
To: Rules Users List 
Sent: Tue, October 5, 2010 5:27:58 PM
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations

  Norman,

  What you say makes sense, but it is not implemented. It is
something I think would be good to have. May I suggest you open a JIRA
for it so we track it?

  Meanwhile, the workaround I suggest is that instead of using
fireUntilHalt(), you call fireAllRules() in a loop, either after each
X insertions of every Y seconds, depending on your system's
architecture.

  Edson


2010/10/5 Norman C :
>
> Thanks for the suggestions.  They all look like good ways to handle the
> situation I described.  However, they require modifying all of the rules to
> check for the latch object and its state, which I would prefer not to do and
> doesn't seem like would be necessary.
>
> It seems to me that this is something that Drools can handle internally
> without the rules having to be written this way.  Since the rules engine
> processes rules in a single thread, it's a concurrency issue.  fireUntilHalt
> should be blocked when a fact is inserted/updated/retracted, until all
> activations as a result of that change in working memory are completed.
>
> Thoughts?
>
>
>
> Norman
>
> 
> From: Wolfgang Laun 
> To: Rules Users List 
> Sent: Sun, October 3, 2010 10:51:08 PM
> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>
> 2010/10/4 Greg Barton 
>>
>> If you don't have some way of associating the data with a particular Latch
>> it's easy to get overlap when processing datasets.  In general you need some
>> way to group the data together.  You can avoid a back reference to the Latch
>> by having a Set of some sort in the Latch to which you add all data in the
>> batch.
>
> Which burdens all inserts and retracts to be accompanied by correpsonding
> updates of the Set/Map.
>
>>
>>  If you use a Set backed by an IdentityHashMap the overhead is pretty
>> small, and rules look like this:
>>
>> rule "CountAs"
>>        dialect "java"
>>        salience -1
>>        when
>>                l : Latch()
>>                a : A( this memberOf l.dataSet )
>>        then
>>                retract(a);
>>                l.incACount();
>>                System.out.println("Found an A in " + l);
>> end
>>
>> See attached project.
>>
>> THough I like the cleverness of using the "data in matched objects alters
>> rule properties" trick, you could have just as easily had a "Latch(value ==
>> true)" conditional, and that would be more clear,
>
> It was meant to emphasize the role of Latch.value as an enabler for the rule
> in contrast to a regular constraint being part of the application logic.
> YMMV ;-)
>
>
>>
>> IMO.  I'm curious to see of the enabled trick would perform better,
>> though.
>
> Whichever way, there is a considerable burden associated with writing the
> rules and, possibly, inserts and retracts. I wonder what the benefits of
> having the session run all the time are as opposed to simply let it fire
> until it stops; then do the inserts and then fireUntilHalt again? If there
> is, I'd opt for the addition of an atomic insertAll(Object... objects) and
> then none of this hocus-pocus would be necessary.
>
> -W
>
>>
>> GreG
>>
>> --- On Sun, 10/3/10, Wolfgang Laun  wrote:
>>
>> From: Wolfgang Laun 
>> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>> To: "Rules Users List" 
>> Date: Sunday, October 3, 2010, 4:23 AM
>>
>> There is another way of associating a Latch object with rules, without
>> having to store a reference to a Latch in objects:
>>
>> rule "CountAs"
>> enabled ( $v )
>> when
>>  Latch( $v : value )
>>  X( ... )
>>
>> then ... end
>>
>> At the beginning, insert Latch( false ), which blocks all rules with this
>> construction, or modify the Latch object to false before inserting more
>> facts. Then, insert the facts, and, at the end, modify Latch to true.
>>
>>
>>     Latch latch = new Latch( true );
>>     FactHandle fh = kSession.insert( latch );
>>     kSession.fireAllRules();
>>     latch.setValue( false );
>>     kSession.update( fh, latch );
>>
>&g

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Edson Tirelli
   Norman,

   What you say makes sense, but it is not implemented. It is
something I think would be good to have. May I suggest you open a JIRA
for it so we track it?

   Meanwhile, the workaround I suggest is that instead of using
fireUntilHalt(), you call fireAllRules() in a loop, either after each
X insertions of every Y seconds, depending on your system's
architecture.

   Edson


2010/10/5 Norman C :
>
> Thanks for the suggestions.  They all look like good ways to handle the
> situation I described.  However, they require modifying all of the rules to
> check for the latch object and its state, which I would prefer not to do and
> doesn't seem like would be necessary.
>
> It seems to me that this is something that Drools can handle internally
> without the rules having to be written this way.  Since the rules engine
> processes rules in a single thread, it's a concurrency issue.  fireUntilHalt
> should be blocked when a fact is inserted/updated/retracted, until all
> activations as a result of that change in working memory are completed.
>
> Thoughts?
>
>
>
> Norman
>
> 
> From: Wolfgang Laun 
> To: Rules Users List 
> Sent: Sun, October 3, 2010 10:51:08 PM
> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>
> 2010/10/4 Greg Barton 
>>
>> If you don't have some way of associating the data with a particular Latch
>> it's easy to get overlap when processing datasets.  In general you need some
>> way to group the data together.  You can avoid a back reference to the Latch
>> by having a Set of some sort in the Latch to which you add all data in the
>> batch.
>
> Which burdens all inserts and retracts to be accompanied by correpsonding
> updates of the Set/Map.
>
>>
>>  If you use a Set backed by an IdentityHashMap the overhead is pretty
>> small, and rules look like this:
>>
>> rule "CountAs"
>>        dialect "java"
>>        salience -1
>>        when
>>                l : Latch()
>>                a : A( this memberOf l.dataSet )
>>        then
>>                retract(a);
>>                l.incACount();
>>                System.out.println("Found an A in " + l);
>> end
>>
>> See attached project.
>>
>> THough I like the cleverness of using the "data in matched objects alters
>> rule properties" trick, you could have just as easily had a "Latch(value ==
>> true)" conditional, and that would be more clear,
>
> It was meant to emphasize the role of Latch.value as an enabler for the rule
> in contrast to a regular constraint being part of the application logic.
> YMMV ;-)
>
>
>>
>> IMO.  I'm curious to see of the enabled trick would perform better,
>> though.
>
> Whichever way, there is a considerable burden associated with writing the
> rules and, possibly, inserts and retracts. I wonder what the benefits of
> having the session run all the time are as opposed to simply let it fire
> until it stops; then do the inserts and then fireUntilHalt again? If there
> is, I'd opt for the addition of an atomic insertAll(Object... objects) and
> then none of this hocus-pocus would be necessary.
>
> -W
>
>>
>> GreG
>>
>> --- On Sun, 10/3/10, Wolfgang Laun  wrote:
>>
>> From: Wolfgang Laun 
>> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>> To: "Rules Users List" 
>> Date: Sunday, October 3, 2010, 4:23 AM
>>
>> There is another way of associating a Latch object with rules, without
>> having to store a reference to a Latch in objects:
>>
>> rule "CountAs"
>> enabled ( $v )
>> when
>>  Latch( $v : value )
>>  X( ... )
>>
>> then ... end
>>
>> At the beginning, insert Latch( false ), which blocks all rules with this
>> construction, or modify the Latch object to false before inserting more
>> facts. Then, insert the facts, and, at the end, modify Latch to true.
>>
>>
>>     Latch latch = new Latch( true );
>>     FactHandle fh = kSession.insert( latch );
>>     kSession.fireAllRules();
>>     latch.setValue( false );
>>     kSession.update( fh, latch );
>>
>> Of course, you can use multiple Latch objects, adding a name field with a
>> specific value, so that a latch applies to a subset of rules only:
>>
>>
>> rule "CountAs"
>>
>> enabled ( $v )
>>
>> when
>>
>>  Latch( name == "CountAs", $v : value )
>>  ...
&

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Greg Barton
The entire purpose of fireUntilHalt is to do exactly the opposite of what you 
describe. :) Is there any compelling reason you're using it as opposed to just 
calling fireAllRules?

GreG

On Oct 5, 2010, at 16:34, Norman C  wrote:

 
Thanks for the suggestions.  They all look like good ways to handle the 
situation I described.  However, they require modifying all of the rules to 
check for the latch object and its state, which I would prefer not to do and 
doesn't seem like would be necessary.
 
It seems to me that this is something that Drools can handle internally without 
the rules having to be written this way.  Since the rules engine processes 
rules in a single thread, it's a concurrency issue.  fireUntilHalt should be 
blocked when a fact is inserted/updated/retracted, until all activations as a 
result of that change in working memory are completed. 
 
Thoughts?
 

Norman



From: Wolfgang Laun 
To: Rules Users List 
Sent: Sun, October 3, 2010 10:51:08 PM
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations

2010/10/4 Greg Barton 
If you don't have some way of associating the data with a particular Latch it's 
easy to get overlap when processing datasets.  In general you need some way to 
group the data together.  You can avoid a back reference to the Latch by having 
a Set of some sort in the Latch to which you add all data in the batch.

Which burdens all inserts and retracts to be accompanied by correpsonding 
updates of the Set/Map.
 
 If you use a Set backed by an IdentityHashMap the overhead is pretty small, 
and rules look like this:

rule "CountAs"
   dialect "java"
   salience -1
   when
   l : Latch()
   a : A( this memberOf l.dataSet )
   then
   retract(a);
   l.incACount();
   System.out.println("Found an A in " + l);
end

See attached project.

THough I like the cleverness of using the "data in matched objects alters rule 
properties" trick, you could have just as easily had a "Latch(value == true)" 
conditional, and that would be more clear,

It was meant to emphasize the role of Latch.value as an enabler for the rule in 
contrast to a regular constraint being part of the application logic. YMMV ;-)

 
IMO.  I'm curious to see of the enabled trick would perform better, though.

Whichever way, there is a considerable burden associated with writing the rules 
and, possibly, inserts and retracts. I wonder what the benefits of having the 
session run all the time are as opposed to simply let it fire until it stops; 
then do the inserts and then fireUntilHalt again? If there is, I'd opt for the 
addition of an atomic insertAll(Object... objects) and then none of this 
hocus-pocus would be necessary.

-W
 

GreG

--- On Sun, 10/3/10, Wolfgang Laun  wrote:

From: Wolfgang Laun 
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
To: "Rules Users List" 
Date: Sunday, October 3, 2010, 4:23 AM

There is another way of associating a Latch object with rules, without having 
to store a reference to a Latch in objects:

rule "CountAs"
enabled ( $v )
when
 Latch( $v : value )
 X( ... )

then ... end

At the beginning, insert Latch( false ), which blocks all rules with this 
construction, or modify the Latch object to false before inserting more facts. 
Then, insert the facts, and, at the end, modify Latch to true.


Latch latch = new Latch( true );
FactHandle fh = kSession.insert( latch );
kSession.fireAllRules();
latch.setValue( false );
kSession.update( fh, latch );

Of course, you can use multiple Latch objects, adding a name field with a 
specific value, so that a latch applies to a subset of rules only:


rule "CountAs"

enabled ( $v )

when

 Latch( name == "CountAs", $v : value )
 ...

But be aware that changes to Latch objects will retrigger rules that have fired 
previously; so with this approach you'll have to make sure to retract facts 
when they have been processed.


-W


2010/10/3 Greg Barton 

Nope, you're not missing anything.  What you need is a control object of some 
sort thst's inserted after all of the "real" data is inserted. (See attached 
project for an example.) Rules will look like this, if the control object is 
called BatchLatch and data objects A:




rule "CountAs"

dialect "java"

salience -1

when

l : Latch()

a : A( latch == l )

then

retract(a);

l.incACount();

System.out.println("Found an A in " + bl);

end



Note that the A object being processed is tied back to the latch.  This is so 
multiple latches can be processed simultaneously and their processing won't be 
intermingled.  This is necessary because there&#

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-05 Thread Norman C


Thanks for the suggestions.  They all look like good ways to handle the 
situation I described.  However, they require modifying all of the rules to 
check for the latch object and its state, which I would prefer not to do and 
doesn't seem like would be necessary.
 
It seems to me that this is something that Drools can handle internally without 
the rules having to be written this way.  Since the rules engine processes 
rules 
in a single thread, it's a concurrency issue.  fireUntilHalt should be blocked 
when a fact is inserted/updated/retracted, until all activations as a result of 
that change in working memory are completed.  

 
Thoughts?
 
Norman





From: Wolfgang Laun 
To: Rules Users List 
Sent: Sun, October 3, 2010 10:51:08 PM
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations

2010/10/4 Greg Barton 

If you don't have some way of associating the data with a particular Latch it's 
easy to get overlap when processing datasets.  In general you need some way to 
group the data together.  You can avoid a back reference to the Latch by having 
a Set of some sort in the Latch to which you add all data in the batch.

Which burdens all inserts and retracts to be accompanied by correpsonding 
updates of the Set/Map.
 
 If you use a Set backed by an IdentityHashMap the overhead is pretty small, 
and 
rules look like this:
>
>
>rule "CountAs"
>       dialect "java"
>       salience -1
>       when
>               l : Latch()
>               a : A( this memberOf l.dataSet )
>
>       then
>               retract(a);
>               l.incACount();
>               System.out.println("Found an A in " + l);
>end
>
>See attached project.
>
>THough I like the cleverness of using the "data in matched objects alters rule 
>properties" trick, you could have just as easily had a "Latch(value == true)" 
>conditional, and that would be more clear,

It was meant to emphasize the role of Latch.value as an enabler for the rule in 
contrast to a regular constraint being part of the application logic. YMMV ;-)

 
IMO.  I'm curious to see of the enabled trick would perform better, though.
>

Whichever way, there is a considerable burden associated with writing the rules 
and, possibly, inserts and retracts. I wonder what the benefits of having the 
session run all the time are as opposed to simply let it fire until it stops; 
then do the inserts and then fireUntilHalt again? If there is, I'd opt for the 
addition of an atomic insertAll(Object... objects) and then none of this 
hocus-pocus would be necessary.

-W
 

>GreG
>
>--- On Sun, 10/3/10, Wolfgang Laun  wrote:
>
>From: Wolfgang Laun 
>Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
>To: "Rules Users List" 
>Date: Sunday, October 3, 2010, 4:23 AM
>
>
>There is another way of associating a Latch object with rules, without having 
>to 
>store a reference to a Latch in objects:
>
>rule "CountAs"
>enabled ( $v )
>when
> Latch( $v : value )
> X( ... )
>
>then ... end
>
>At the beginning, insert Latch( false ), which blocks all rules with this 
>construction, or modify the Latch object to false before inserting more facts. 
>Then, insert the facts, and, at the end, modify Latch to true.
>
>
>    Latch latch = new Latch( true );
>    FactHandle fh = kSession.insert( latch );
>    kSession.fireAllRules();
>    latch.setValue( false );
>    kSession.update( fh, latch );
>
>Of course, you can use multiple Latch objects, adding a name field with a 
>specific value, so that a latch applies to a subset of rules only:
>
>
>rule "CountAs"
>
>enabled ( $v )
>
>when
>
> Latch( name == "CountAs", $v : value )
> ...
>
>But be aware that changes to Latch objects will retrigger rules that have 
>fired 
>previously; so with this approach you'll have to make sure to retract facts 
>when 
>they have been processed.
>
>
>-W
>
>
>2010/10/3 Greg Barton 
>
>Nope, you're not missing anything.  What you need is a control object of some 
>sort thst's inserted after all of the "real" data is inserted. (See attached 
>project for an example.) Rules will look like this, if the control object is 
>called BatchLatch and data objects A:
>
>
>
>
>rule "CountAs"
>
>        dialect "java"
>
>        salience -1
>
>        when
>
>                l : Latch()
>
>                a : A( latch == l )
>
>        then
>
>                retract(a);
>
>                l.incACount();
>
>                System.out.println("Found an A in " +

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-04 Thread Wolfgang Laun
2010/10/4 Greg Barton 

> If you don't have some way of associating the data with a particular Latch
> it's easy to get overlap when processing datasets.  In general you need some
> way to group the data together.  You can avoid a back reference to the Latch
> by having a Set of some sort in the Latch to which you add all data in the
> batch.


Which burdens all inserts and retracts to be accompanied by correpsonding
updates of the Set/Map.


>  If you use a Set backed by an IdentityHashMap the overhead is pretty
> small, and rules look like this:
>
> rule "CountAs"
>dialect "java"
>salience -1
>when
>l : Latch()
> a : A( this memberOf l.dataSet )
> then
>retract(a);
>l.incACount();
> System.out.println("Found an A in " + l);
> end
>
> See attached project.
>
> THough I like the cleverness of using the "data in matched objects alters
> rule properties" trick, you could have just as easily had a "Latch(value ==
> true)" conditional, and that would be more clear,


It was meant to emphasize the role of Latch.value as an enabler for the rule
in contrast to a regular constraint being part of the application logic.
YMMV ;-)



> IMO.  I'm curious to see of the enabled trick would perform better, though.
>

Whichever way, there is a considerable burden associated with writing the
rules and, possibly, inserts and retracts. I wonder what the benefits of
having the session run all the time are as opposed to simply let it fire
until it stops; then do the inserts and then fireUntilHalt again? If there
is, I'd opt for the addition of an atomic insertAll(Object... objects) and
then none of this hocus-pocus would be necessary.

-W


>
> GreG
>
> --- On Sun, 10/3/10, Wolfgang Laun  wrote:
>
> From: Wolfgang Laun 
> Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
> To: "Rules Users List" 
> Date: Sunday, October 3, 2010, 4:23 AM
>
> There is another way of associating a Latch object with rules, without
> having to store a reference to a Latch in objects:
>
> rule "CountAs"
> enabled ( $v )
> when
>  Latch( $v : value )
>  X( ... )
>
> then ... end
>
> At the beginning, insert Latch( false ), which blocks all rules with this
> construction, or modify the Latch object to false before inserting more
> facts. Then, insert the facts, and, at the end, modify Latch to true.
>
>
> Latch latch = new Latch( true );
> FactHandle fh = kSession.insert( latch );
> kSession.fireAllRules();
> latch.setValue( false );
> kSession.update( fh, latch );
>
> Of course, you can use multiple Latch objects, adding a name field with a
> specific value, so that a latch applies to a subset of rules only:
>
>
> rule "CountAs"
>
> enabled ( $v )
>
> when
>
>  Latch( name == "CountAs", $v : value )
>  ...
>
> But be aware that changes to Latch objects will retrigger rules that have
> fired previously; so with this approach you'll have to make sure to retract
> facts when they have been processed.
>
>
> -W
>
>
> 2010/10/3 Greg Barton 
>
> Nope, you're not missing anything.  What you need is a control object of
> some sort thst's inserted after all of the "real" data is inserted. (See
> attached project for an example.) Rules will look like this, if the control
> object is called BatchLatch and data objects A:
>
>
>
>
> rule "CountAs"
>
> dialect "java"
>
> salience -1
>
> when
>
> l : Latch()
>
> a : A( latch == l )
>
> then
>
> retract(a);
>
> l.incACount();
>
> System.out.println("Found an A in " + bl);
>
> end
>
>
>
> Note that the A object being processed is tied back to the latch.  This is
> so multiple latches can be processed simultaneously and their processing
> won't be intermingled.  This is necessary because there's no guarantee that
> two Latch objects aren't in working memory at once. (Though you could create
> a rule that enforces this.)
>
>
>
>
> GreG
>
>
>
> --- On Sat, 10/2/10, Norman C  wrote:
>
>
>
> > From: Norman C 
>
> > Subject: [rules-users] fireUntilHalt and timing of rule activations
>
> > To: rules-users@lists.jboss.org
>
> > Date: Saturday, October 2, 2010, 10:22 AM
>
> > Hi All,
>
> >
>
> > In my app, I have a s

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-03 Thread Greg Barton
If you don't have some way of associating the data with a particular Latch it's 
easy to get overlap when processing datasets.  In general you need some way to 
group the data together.  You can avoid a back reference to the Latch by having 
a Set of some sort in the Latch to which you add all data in the batch.  If you 
use a Set backed by an IdentityHashMap the overhead is pretty small, and rules 
look like this:

rule "CountAs"
dialect "java"
salience -1
when
l : Latch()
a : A( this memberOf l.dataSet )
then
retract(a);
l.incACount();
System.out.println("Found an A in " + l);
end

See attached project.

THough I like the cleverness of using the "data in matched objects alters rule 
properties" trick, you could have just as easily had a "Latch(value == true)" 
conditional, and that would be more clear, IMO.  I'm curious to see of the 
enabled trick would perform better, though.

GreG

--- On Sun, 10/3/10, Wolfgang Laun  wrote:

From: Wolfgang Laun 
Subject: Re: [rules-users] fireUntilHalt and timing of rule activations
To: "Rules Users List" 
Date: Sunday, October 3, 2010, 4:23 AM

There is another way of associating a Latch object with rules, without having 
to store a reference to a Latch in objects:

rule "CountAs"
enabled ( $v )
when
 Latch( $v : value )
 X( ... )

then ... end

At the beginning, insert Latch( false ), which blocks all rules with this 
construction, or modify the Latch object to false before inserting more facts. 
Then, insert the facts, and, at the end, modify Latch to true.


    Latch latch = new Latch( true );
    FactHandle fh = kSession.insert( latch );
    kSession.fireAllRules();
    latch.setValue( false );
    kSession.update( fh, latch );

Of course, you can use multiple Latch objects, adding a name field with a 
specific value, so that a latch applies to a subset of rules only:


rule "CountAs"

enabled ( $v )

when

 Latch( name == "CountAs", $v : value )
 ...

But be aware that changes to Latch objects will retrigger rules that have fired 
previously; so with this approach you'll have to make sure to retract facts 
when they have been processed.


-W


2010/10/3 Greg Barton 

Nope, you're not missing anything.  What you need is a control object of some 
sort thst's inserted after all of the "real" data is inserted. (See attached 
project for an example.) Rules will look like this, if the control object is 
called BatchLatch and data objects A:




rule "CountAs"

        dialect "java"

        salience -1

        when

                l : Latch()

                a : A( latch == l )

        then

                retract(a);

                l.incACount();

                System.out.println("Found an A in " + bl);

end



Note that the A object being processed is tied back to the latch.  This is so 
multiple latches can be processed simultaneously and their processing won't be 
intermingled.  This is necessary because there's no guarantee that two Latch 
objects aren't in working memory at once. (Though you could create a rule that 
enforces this.)




GreG



--- On Sat, 10/2/10, Norman C  wrote:



> From: Norman C 

> Subject: [rules-users] fireUntilHalt and timing of rule activations

> To: rules-users@lists.jboss.org

> Date: Saturday, October 2, 2010, 10:22 AM

> Hi All,

>

> In my app, I have a separate thread calling fireUntilHalt()

> continuously.  I

> have quite a few rules, and I am using salience extensively

> to control the order

>

> in which rules are executed.  What I have seen (by adding

> an event listener) is

> that as a new fact is inserted, various rules are

> activated.  Often, the

> fireUntilHalt will start executing fireNextItem in

> DefaultAgenda before all of

> the activations are complete.  So if the rule with the

> highest salience

> value hasn't been activated at this point, then the first

> rule to be fired isn't

>

> the correct one.

>

> This can be worked around by waiting for insert to return

> and then calling

> fireAllRules().  But it seems like the session should

> block fireUntilHalt from

> trying to execute activated rules until all activations are

> complete.  Or am I

> missing something here?

>

> thanks,

> Norman

>

>

>      

>

>

> ___

> 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://

Re: [rules-users] fireUntilHalt and timing of rule activations

2010-10-03 Thread Wolfgang Laun
There is another way of associating a Latch object with rules, without
having to store a reference to a Latch in objects:

rule "CountAs"
enabled ( $v )
when
 Latch( $v : value )
 X( ... )
then ... end

At the beginning, insert Latch( false ), which blocks all rules with this
construction, or modify the Latch object to false before inserting more
facts. Then, insert the facts, and, at the end, modify Latch to true.

Latch latch = new Latch( true );
FactHandle fh = kSession.insert( latch );
kSession.fireAllRules();
latch.setValue( false );
kSession.update( fh, latch );

Of course, you can use multiple Latch objects, adding a name field with a
specific value, so that a latch applies to a subset of rules only:

rule "CountAs"
enabled ( $v )
when
 Latch( name == "CountAs", $v : value )
 ...

But be aware that changes to Latch objects will retrigger rules that have
fired previously; so with this approach you'll have to make sure to retract
facts when they have been processed.

-W


2010/10/3 Greg Barton 

> Nope, you're not missing anything.  What you need is a control object of
> some sort thst's inserted after all of the "real" data is inserted. (See
> attached project for an example.) Rules will look like this, if the control
> object is called BatchLatch and data objects A:
>
> rule "CountAs"
>dialect "java"
>salience -1
>when
>l : Latch()
>a : A( latch == l )
>then
>retract(a);
>l.incACount();
>System.out.println("Found an A in " + bl);
> end
>
> Note that the A object being processed is tied back to the latch.  This is
> so multiple latches can be processed simultaneously and their processing
> won't be intermingled.  This is necessary because there's no guarantee that
> two Latch objects aren't in working memory at once. (Though you could create
> a rule that enforces this.)
>
> GreG
>
> --- On Sat, 10/2/10, Norman C  wrote:
>
> > From: Norman C 
> > Subject: [rules-users] fireUntilHalt and timing of rule activations
> > To: rules-users@lists.jboss.org
> > Date: Saturday, October 2, 2010, 10:22 AM
> > Hi All,
> >
> > In my app, I have a separate thread calling fireUntilHalt()
> > continuously.  I
> > have quite a few rules, and I am using salience extensively
> > to control the order
> >
> > in which rules are executed.  What I have seen (by adding
> > an event listener) is
> > that as a new fact is inserted, various rules are
> > activated.  Often, the
> > fireUntilHalt will start executing fireNextItem in
> > DefaultAgenda before all of
> > the activations are complete.  So if the rule with the
> > highest salience
> > value hasn't been activated at this point, then the first
> > rule to be fired isn't
> >
> > the correct one.
> >
> > This can be worked around by waiting for insert to return
> > and then calling
> > fireAllRules().  But it seems like the session should
> > block fireUntilHalt from
> > trying to execute activated rules until all activations are
> > complete.  Or am I
> > missing something here?
> >
> > thanks,
> > Norman
> >
> >
> >
> >
> >
> > ___
> > 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] fireUntilHalt and timing of rule activations

2010-10-02 Thread Greg Barton
Nope, you're not missing anything.  What you need is a control object of some 
sort thst's inserted after all of the "real" data is inserted. (See attached 
project for an example.) Rules will look like this, if the control object is 
called BatchLatch and data objects A:

rule "CountAs"
dialect "java"
salience -1
when
l : Latch()
a : A( latch == l )
then
retract(a);
l.incACount();
System.out.println("Found an A in " + bl);
end  

Note that the A object being processed is tied back to the latch.  This is so 
multiple latches can be processed simultaneously and their processing won't be 
intermingled.  This is necessary because there's no guarantee that two Latch 
objects aren't in working memory at once. (Though you could create a rule that 
enforces this.)  

GreG

--- On Sat, 10/2/10, Norman C  wrote:

> From: Norman C 
> Subject: [rules-users] fireUntilHalt and timing of rule activations
> To: rules-users@lists.jboss.org
> Date: Saturday, October 2, 2010, 10:22 AM
> Hi All,
> 
> In my app, I have a separate thread calling fireUntilHalt()
> continuously.  I 
> have quite a few rules, and I am using salience extensively
> to control the order 
> 
> in which rules are executed.  What I have seen (by adding
> an event listener) is 
> that as a new fact is inserted, various rules are
> activated.  Often, the 
> fireUntilHalt will start executing fireNextItem in
> DefaultAgenda before all of 
> the activations are complete.  So if the rule with the
> highest salience 
> value hasn't been activated at this point, then the first
> rule to be fired isn't 
> 
> the correct one.
> 
> This can be worked around by waiting for insert to return
> and then calling 
> fireAllRules().  But it seems like the session should
> block fireUntilHalt from 
> trying to execute activated rules until all activations are
> complete.  Or am I 
> missing something here?
> 
> thanks,
> Norman
> 
> 
>       
> 
> 
> ___
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>


  

DroolsContinuousBatch.tar.gz
Description: GNU Zip compressed data
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] fireUntilHalt and timing of rule activations

2010-10-02 Thread Norman C
Hi All,

In my app, I have a separate thread calling fireUntilHalt() continuously.  I 
have quite a few rules, and I am using salience extensively to control the 
order 

in which rules are executed.  What I have seen (by adding an event listener) is 
that as a new fact is inserted, various rules are activated.  Often, the 
fireUntilHalt will start executing fireNextItem in DefaultAgenda before all of 
the activations are complete.  So if the rule with the highest salience 
value hasn't been activated at this point, then the first rule to be fired 
isn't 

the correct one.

This can be worked around by waiting for insert to return and then calling 
fireAllRules().  But it seems like the session should block fireUntilHalt from 
trying to execute activated rules until all activations are complete.  Or am I 
missing something here?

thanks,
Norman


  


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


Re: [rules-users] fireUntilHalt() and OSGi - CPU load

2010-08-13 Thread Georg Maier
Thanks for your confirmation. Can anyone else report a case like that? I
didn't progress much in finding an explanation so far. If anyone else could
confirm, maybe this is some kind of common problem, maybe even a bug?

Is there something like a public issue tracker? Still, more cases would help,
don't want to bug developers offering such a great project and in the end it
turns out that I made a mistake...

Have a nice weekend everyone!



-Ursprüngliche Nachricht-
Von: rules-users-boun...@lists.jboss.org
[mailto:rules-users-boun...@lists.jboss.org] Im Auftrag von mardo
Gesendet: Freitag, 13. August 2010 14:46
An: rules-users@lists.jboss.org
Betreff: Re: [rules-users] fireUntilHalt() and OSGi - CPU load


"When invoking fireUntilHalt() for my StatefulKnowledgeSession, CPU load
rises to 25% (meaning one complete core on the quad-core machine)."

I can confirm this issue. Below is a minimal example. I have noticed that in
DefaultAgenda, missedNotifyAll is always true in this case, is this an
intended behaviour?


 
http://www.jboss.org/drools";
 typeLanguage="http://www.java.com/javaTypes";
 expressionLanguage="http://www.mvel.org/2.0";
 xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL";
 xmlns:xs="http://www.w3.org/2001/XMLSchema-instance";
 xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL
BPMN20.xsd"
 xmlns:g="http://www.jboss.org/drools/flow/gpd";
 xmlns:tns="http://www.jboss.org/drools";>

  








  

  john

  






  





public void test() throws InterruptedException{
try {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
final StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();


WSHumanTaskHandler wsh = new WSHumanTaskHandler();
wsh.setConnection("127.0.0.1", 9123);

ksession.getWorkItemManager().registerWorkItemHandler("Human Task", wsh);



new Thread(new Runnable() {
  public void run() {
ksession.fireUntilHalt();
  }
}).start();
ksession.startProcess("servicerequest2");
} catch (Throwable t) {
t.printStackTrace();
}


Thread.sleep(120);



}

private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();


kbuilder.add(ResourceFactory.newClassPathResource("testcases/integrationuc/se
rvicerequest.bpmn"),
ResourceType.BPMN2);
return kbuilder.newKnowledgeBase();
}

-- 
View this message in context:
http://drools-java-rules-engine.46999.n3.nabble.com/fireUntilHalt-and-OSGi-CP
U-load-tp1022352p1131701.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] fireUntilHalt() and OSGi - CPU load

2010-08-13 Thread mardo

"When invoking fireUntilHalt() for my StatefulKnowledgeSession, CPU load
rises to 25% (meaning one complete core on the quad-core machine)."

I can confirm this issue. Below is a minimal example. I have noticed that in
DefaultAgenda, missedNotifyAll is always true in this case, is this an
intended behaviour?


 
http://www.jboss.org/drools";
 typeLanguage="http://www.java.com/javaTypes";
 expressionLanguage="http://www.mvel.org/2.0";
 xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL";
 xmlns:xs="http://www.w3.org/2001/XMLSchema-instance";
 xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL
BPMN20.xsd"
 xmlns:g="http://www.jboss.org/drools/flow/gpd";
 xmlns:tns="http://www.jboss.org/drools";>

  








  

  john

  






  





public void test() throws InterruptedException{
try {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
final StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();


WSHumanTaskHandler wsh = new WSHumanTaskHandler();
wsh.setConnection("127.0.0.1", 9123);

ksession.getWorkItemManager().registerWorkItemHandler("Human Task", wsh);



new Thread(new Runnable() {
  public void run() {
ksession.fireUntilHalt();
  }
}).start();
ksession.startProcess("servicerequest2");
} catch (Throwable t) {
t.printStackTrace();
}


Thread.sleep(120);



}

private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = 
KnowledgeBuilderFactory.newKnowledgeBuilder();


kbuilder.add(ResourceFactory.newClassPathResource("testcases/integrationuc/servicerequest.bpmn"),
ResourceType.BPMN2);
return kbuilder.newKnowledgeBase();
}

-- 
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/fireUntilHalt-and-OSGi-CPU-load-tp1022352p1131701.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] fireUntilHalt() and OSGi - CPU load

2010-08-04 Thread Georg Maier
Hi,

 

I am using Drools 5.1 (final) in an OSGi environment. When invoking
fireUntilHalt() for my StatefulKnowledgeSession, CPU load rises to 25%
(meaning one complete core on the quad-core machine). Needless to say, when
two sessions are used in different components at the same time I'm reaching
about 50%. 

When creating an "ordinary" Drools project and using a
StatefulKnowledgeSession with fireUntilHalt() I do not experience this
problem.

 

Anyone experienced something similar or has some advice for me?

Any help would be highly appreciated :-) 

 

Thanks in advance!

 

Cheers,

Georg

 

 

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