Drools Flow question
by coffee_rancher
Let's say I have a flow: start - step1 - step2 - step3 - end. We execute the
flow and it fails at step 3. To be more concrete let's assume that we are
talking of provisioning of some items. Since we do not want to provision the
same items twice we obviously do not want to repeat steps 1 and 2 when we
re-execute the process . The question is: is it responsibility of the user
to skip those steps or the engine has some mechanism of tracing that?
--
View this message in context: http://www.nabble.com/Drools-Flow-question-tp23726193p23726193.html
Sent from the drools - user mailing list archive at Nabble.com.
15 years, 6 months
[users-rules] Loading time ruleflow
by Femke De Backere
Hi!
I'm testing the loading time of the line:
kbuilder.add(ResourceFactory.newClassPathResource("nodesflow.rf",
DroolsTest.class), ResourceType.DRF ); for a rule flow file with 1
split node, 3 split nodes, 7 split nodes, ...
But the results I already have are confusing:
1 split node
26071960,8
1
3 split nodes
1018762000
40, 85676594 times the time of 1 split node flow
7 split nodes
4974479,4
1,907968479 times the time of 1 split node flow
Can anybody explain why the 3 split node rule flow file takes a lot
longer than the 7 split rule flow file?
Thx,
Femke
15 years, 6 months
Re: [rules-users] can drools support complex rules (resetting of Accumulate?)
by hrishikesh.varma@wipro.com
Hi,
That's the first thought I had too!
But that way, I'll be getting an "alarm" for every event after $times
reached 10.
Ideally, I'd want the accumulate method to restart "accumulation" once
the RHS is triggered - so effectively the RHS would then be triggered
for every "distinct" 10 events accumulated.
Any out of the box solution for this?
Also, am wondering - if some of us can pitch in effort and come up with
a more detailed document on the Rule Language specifically? Going
through most of the mails, I feel that's the only learning curve - we
can make that even less challenging - like an "Advanced DRLs for
Dummies" :) ?
But before that... the resetting of my accumulator count, any ideas?
Cheers,
Rishi
----------------------------------------------------------------------
Message: 1
Date: Thu, 21 May 2009 18:16:01 +0200
From: Wolfgang Laun <wolfgang.laun(a)gmail.com>
Subject: Re: [rules-users] can drools support complex rules (resetting
of Accumulate?)
To: Rules Users List <rules-users(a)lists.jboss.org>
Message-ID:
<17de7ee80905210916gfddba51h35bf639ccf5af18a(a)mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"
Well, it's definitely not forbidden to do a little computational work on
the
RHS, too.
Bind the result to a variable:
Number( $times : intValue > 10 )...
and, on the RHS, do
for( int i = 1; i <= $times % 10; i++ ) shout( "alarm" );
or whatever.
-W
On Thu, May 21, 2009 at 4:21 PM, <hrishikesh.varma(a)wipro.com> wrote:
> Hi,
>
>
> Temporal Reasoning with Accumulate - (like 3- rule "Customer login
from
> more than 5 locations in the last one month")
>
> What if I want to reset my count for accumulate within the time
> specified sliding window.So that I can have the RHS triggered for
every
> 10times the event occurs in the same window.
> For Example:
>
> when
> $customer : Customer( $id : id )
> Number( intValue > 10 ) from accumulate(
> CustomerLogin( loginStatus=="Failed", customerId
==
> $id,$cusId:customerId)
> over window:time( 30s ),
> count( $ cusId) )
> then
> // do something as the customer had abnormal number of failed
> violations in last 30 secs.
> end
>
>
> Right now am doing something similar, but using a manual approach -of
> explicitly counting.
>
> Any Light on this?
>
> Regards
> Rishi
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 19 May 2009 11:17:41 -0400
> From: Edson Tirelli <tirelli(a)post.com>
> Subject: Re: [rules-users] can drools support complex rules
> To: Rules Users List <rules-users(a)lists.jboss.org>
> Message-ID:
> <e6dd5ba30905190817q33d15b9er5efee64bc74cdb0e(a)mail.gmail.com>
> Content-Type: text/plain; charset="windows-1252"
>
> Your question is funny. First you ask if Drools is capable of
> managing
> complex rules and then you mention examples of extremely simple rules?
> :)
>
> Drools is FOL complete and so can represent any well formed First
> Order
> Logic expression. Anyway, I will use this message to advertise some of
> the
> temporal reasoning features that we have on Drools 5 for the benefit
of
> anyone interested.
>
> There are several ways of authoring such rules, depending on how
> you
> model your problem domain. One possible way of doing them is:
>
> #1:
> rule "If a customer login within 5 minutes from two different
locations,
> mark the user invalid."
> when
> $l1 : CustomerLogin( )
> $l2 : CustomerLogin( userId == l1.$id, location != $l1.id,
> timestamp
> after[0s, 5m] $l1.timestamp )
> then
> // mark user as invalid
> end
>
> In the previous example I assumed both login objects would be in
working
> memory, but you can easily query for the previous login in an external
> datasource, pulling the data from the previous login on-demand for the
> reasoning cycle.
>
> #2:
> rule "If the customer location is not on a list of valid locations,
mark
> the
> user invalid"
> when
> $l : CustomerLogin( location not memberOf $validLocations )
> then
> // mark the user invalid
> end
>
> In the above rule, I assume the valid locations list is a global list,
> but
> you can as easily model locations as being facts on your working
memory
> or a
> service end point that you can call to validate the location.
>
> #3:
> rule "Customer login from more than 5 locations in the last one month"
> when
> $customer : Customer( $id : id )
> $locations : Set( size > 5 ) from accumulate(
> CustomerLogin( customerId == $id, $loc : location
)
> over window:time( 30d ),
> collectSet( $loc ) )
> then
> // do something as the customer logged in from more than 5
locations
> in
> the last 30 days
> end
>
> In the previous rule I decided to use sliding windows, just to show
how
> that
> feature can be used to simplify rules, but again, there are several
ways
> of
> doing it.
>
> I strongly recommend you read Drools manual.
>
> http://www.jboss.org/drools/documentation.html
>
> Cheers,
> Edson
>
>
>
> 2009/5/19 Bhushan Bhangale <bhushan_bhangale(a)kaleconsultants.com>
>
> > Hi,
> >
> >
> >
> > I recently came across Drools. I gone through the documentation and
> the
> > examples provide are quite simple. I want to know if it can be
really
> > applied to complex real world problems.
> >
> >
> >
> > Take for example,
> >
> >
> >
> > If a customer login within 5 minutes from two different locations,
> mark the
> > user invalid.
> >
> > How can I write the above rule in drools? I have the data when the
> user
> > last logged in and the data of current login. You can say two
objects.
> >
> >
> >
> > May be my understanding is wrong but looks like based on rule I have
> to
> > pass all the required data. How can then at real time new rules can
be
> > added?
> >
> >
> >
> > For example,
> >
> >
> >
> > If the customer location is not on a list of valid locations, mark
the
> user
> > invalid.
> >
> >
> >
> > For the above rule I need to pass a list of valid locations as well.
> >
> >
> >
> > Now how about "Customer login from more than 5 locations in the last
> one
> > month"?
> >
> >
> >
> > Thanks
> >
> > *Mr. Bhangale Bhushan*
> > *Associate Manager*
> > *Kale Consultants Ltd.*
> > bhushan_bhangale(a)kaleconsultants.com
> > tel: +91 (0)206 608
>
3777<http://www.plaxo.com/click_to_call?lang=en&src=jj_signature&To=%2B9
>
1+%280%29206+608+3777&Email=bhushan_bhangale(a)kaleconsultants.com<http://
www.plaxo.com/click_to_call?lang=en&src=jj_signature&To=%2B9%0A1+%280%29
206+608+3777&Email=bhushan_bhangale(a)kaleconsultants.com>
> >
> > http://www.kaleconsultants.com
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Disclaimer: This email (including any attachments) is intended for
the
> sole
> > use of the recipient/s and may contain material that is
CONFIDENTIAL.
> Any
> > unauthorized disclosure / copying / distribution or forwarding of
this
> message
> > or part is STRICTLY PROHIBITED. If you have erroneously received
this
> message,
> > please delete it immediately and notify the sender. No liability is
> assumed for
> > any errors and/or omissions in the contents of this message.
> Information in
> > this message that does not relate to the official business of this
> Company
> > shall be understood as neither given nor endorsed by it. If
> verification is
> > required please request a hard-copy version.
> >
> > To know more about Kale Consultants, visit www.kaleconsultants.com
> >
> > ----------
> >
> >
> >
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
>
> --
> Edson Tirelli
> JBoss Drools Core Development
> JBoss, a division of Red Hat @ www.jboss.com
>
15 years, 6 months
Re: [rules-users] can drools support complex rules (resetting of Accumulate?)
by hrishikesh.varma@wipro.com
Hi,
Temporal Reasoning with Accumulate - (like 3- rule "Customer login from
more than 5 locations in the last one month")
What if I want to reset my count for accumulate within the time
specified sliding window.So that I can have the RHS triggered for every
10times the event occurs in the same window.
For Example:
when
$customer : Customer( $id : id )
Number( intValue > 10 ) from accumulate(
CustomerLogin( loginStatus=="Failed", customerId ==
$id,$cusId:customerId)
over window:time( 30s ),
count( $ cusId) )
then
// do something as the customer had abnormal number of failed
violations in last 30 secs.
end
Right now am doing something similar, but using a manual approach -of
explicitly counting.
Any Light on this?
Regards
Rishi
----------------------------------------------------------------------
Message: 1
Date: Tue, 19 May 2009 11:17:41 -0400
From: Edson Tirelli <tirelli(a)post.com>
Subject: Re: [rules-users] can drools support complex rules
To: Rules Users List <rules-users(a)lists.jboss.org>
Message-ID:
<e6dd5ba30905190817q33d15b9er5efee64bc74cdb0e(a)mail.gmail.com>
Content-Type: text/plain; charset="windows-1252"
Your question is funny. First you ask if Drools is capable of
managing
complex rules and then you mention examples of extremely simple rules?
:)
Drools is FOL complete and so can represent any well formed First
Order
Logic expression. Anyway, I will use this message to advertise some of
the
temporal reasoning features that we have on Drools 5 for the benefit of
anyone interested.
There are several ways of authoring such rules, depending on how
you
model your problem domain. One possible way of doing them is:
#1:
rule "If a customer login within 5 minutes from two different locations,
mark the user invalid."
when
$l1 : CustomerLogin( )
$l2 : CustomerLogin( userId == l1.$id, location != $l1.id,
timestamp
after[0s, 5m] $l1.timestamp )
then
// mark user as invalid
end
In the previous example I assumed both login objects would be in working
memory, but you can easily query for the previous login in an external
datasource, pulling the data from the previous login on-demand for the
reasoning cycle.
#2:
rule "If the customer location is not on a list of valid locations, mark
the
user invalid"
when
$l : CustomerLogin( location not memberOf $validLocations )
then
// mark the user invalid
end
In the above rule, I assume the valid locations list is a global list,
but
you can as easily model locations as being facts on your working memory
or a
service end point that you can call to validate the location.
#3:
rule "Customer login from more than 5 locations in the last one month"
when
$customer : Customer( $id : id )
$locations : Set( size > 5 ) from accumulate(
CustomerLogin( customerId == $id, $loc : location )
over window:time( 30d ),
collectSet( $loc ) )
then
// do something as the customer logged in from more than 5 locations
in
the last 30 days
end
In the previous rule I decided to use sliding windows, just to show how
that
feature can be used to simplify rules, but again, there are several ways
of
doing it.
I strongly recommend you read Drools manual.
http://www.jboss.org/drools/documentation.html
Cheers,
Edson
2009/5/19 Bhushan Bhangale <bhushan_bhangale(a)kaleconsultants.com>
> Hi,
>
>
>
> I recently came across Drools. I gone through the documentation and
the
> examples provide are quite simple. I want to know if it can be really
> applied to complex real world problems.
>
>
>
> Take for example,
>
>
>
> If a customer login within 5 minutes from two different locations,
mark the
> user invalid.
>
> How can I write the above rule in drools? I have the data when the
user
> last logged in and the data of current login. You can say two objects.
>
>
>
> May be my understanding is wrong but looks like based on rule I have
to
> pass all the required data. How can then at real time new rules can be
> added?
>
>
>
> For example,
>
>
>
> If the customer location is not on a list of valid locations, mark the
user
> invalid.
>
>
>
> For the above rule I need to pass a list of valid locations as well.
>
>
>
> Now how about "Customer login from more than 5 locations in the last
one
> month"?
>
>
>
> Thanks
>
> *Mr. Bhangale Bhushan*
> *Associate Manager*
> *Kale Consultants Ltd.*
> bhushan_bhangale(a)kaleconsultants.com
> tel: +91 (0)206 608
3777<http://www.plaxo.com/click_to_call?lang=en&src=jj_signature&To=%2B9
1+%280%29206+608+3777&Email=bhushan_bhangale(a)kaleconsultants.com>
> http://www.kaleconsultants.com
>
>
>
>
>
>
>
>
>
> Disclaimer: This email (including any attachments) is intended for the
sole
> use of the recipient/s and may contain material that is CONFIDENTIAL.
Any
> unauthorized disclosure / copying / distribution or forwarding of this
message
> or part is STRICTLY PROHIBITED. If you have erroneously received this
message,
> please delete it immediately and notify the sender. No liability is
assumed for
> any errors and/or omissions in the contents of this message.
Information in
> this message that does not relate to the official business of this
Company
> shall be understood as neither given nor endorsed by it. If
verification is
> required please request a hard-copy version.
>
> To know more about Kale Consultants, visit www.kaleconsultants.com
>
> ----------
>
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @ www.jboss.com
15 years, 6 months
Class loading for facts used in rules
by seemamani
I have a rule in which I use objects of a class X. I compiled and packaged
this rule using BRMS for which I uploaded a jar containing class X as the
model. I use a rule agent to build a rulebase from this package. Now, when I
pass the facts of type X to the rule engine, I get a ClassCastException
saying that "X is incompatible with Y". Y is a subclass of X, but the
problem is that a subclass object cannot be assigned to a superclass type.
That means at some point, Y is getting loaded instead of X.
I'm trying to identify at which point this is happening. In the above case,
when does the class loading happen for the types used in a rule? Is it at
step 1, 2 or 3 ?
1. When the rule is compiled using MVEL?
2. When the rule is called the first time?
3. When the rulebase is built from the package?
Thanks,
Seema
--
View this message in context: http://www.nabble.com/Class-loading-for-facts-used-in-rules-tp23649584p23...
Sent from the drools - user mailing list archive at Nabble.com.
15 years, 6 months
Integrate drools into existing app
by Ian Spence
I have been asked to integrate Drools into an existing webapp. We are
thinking about using Spring (already implemented).
I have read in the Drools 4 documentation, the RuleAgent should be kept in a
Singleton or JNDI or similar.
i.e. from 4.0 docs
"IMPORTANT: You should only have one instance of the RuleAgent per rulebase
you are using. This means you should (for example) keep the agent in a
singleton, JNDI (or similar). In practice most people are using frameworks
like Seam or Spring - in which case they will take care of managing this for
you (in fact in Seam - it is already integrated - you can inject rulebases
into Seam components). Note that the RuleBase can be used multiple times by
multiple threads if needed (no need to have multiple copies of it)."
I have upgraded to Drools 5.0. Is the Singleton still required in 5.0 ? I
cannot see any mention of it there.
Has any had any experience with Drools 5.0 and Spring? Any advice?
--
Regards,
Ian Spence
15 years, 6 months
Download Drools 4.0.7
by Shenika Harris
Is it still possible to download 4.0.7?
We are in the process of getting approval to implement 4.0.7 in our one
of our applications. While 5.x is very appealing, it would be a
significant delay in the project to get approval for 5 at this time.
The links for 4.0.7 are 'gone' and making people very nervous.
Please let me know if you have the url to download 4.0.7... I suspect
it's something like http://download.jboss.org/drools/release/4.0.7 etc.
Thank you!
- Shenika
15 years, 6 months
RE: [rules-users] How to import DRL into Business Rule Assets section?
by Late Norther
> Hello,
> We are trying to develop a system based on Drools and want to have a
> repository based on JBoss and manage it from the Guvnor website. Now,
> we have a few questions:
> 1) Can we import DRL files into the Business rules section, so that
> later we can view/modify them using the graphical interface (text
> boxes, drop down menus, etc)? This will be very useful for production
> use.
> What we tried so far, imports them as text in the Technical rules
> section
I have the identical question. I have created a utility which takes
our own homegrown rules and converts them (hundreds of rules) into a
DRL file. I too have been able to import them into Guvnor, but was
hoping they could then be modified via the graphical editor instead of
the technical rule editor. The rules are simple and do not contain
anything that Guvnor's graphical editor does not support. I have a
feeling this is an enhancement request, but just in case anyone knew
of a workaround to change the type of rule from technical rule to
business rule.....
Thanks,
Jon
15 years, 6 months