[rules-users] some pointers for solution

Greg Barton greg_barton at yahoo.com
Fri Nov 13 10:56:34 EST 2009


It should be possible to define rules in a decision table that have "true" as their condition, though since I don't use decision tables I can't say for sure.  Then in the action just insert the data.

--- On Thu, 11/12/09, Wishing Carebear <wishing.carebear at gmail.com> wrote:

> From: Wishing Carebear <wishing.carebear at gmail.com>
> Subject: Re: [rules-users] some pointers for solution
> To: "Rules Users List" <rules-users at lists.jboss.org>
> Date: Thursday, November 12, 2009, 12:05 AM
> Hi Greg:
> Looks like Excel may hep to pppulate the data objects
> but running into only problem. Don't know how to insert
> and update the dataobject in the same excel file.
>  
> In other words, want to write the following rule in
> Excel:
>  
> if
>     eval(true)
> then
>      Data d = new Data();
>      d.setAttr1("attr1");
>      d.setAttr2("attr1");
>      insert(d);
>  
> Thanks,
> cabear
> 
> 
> On Wed, Nov 11, 2009 at 3:42 PM,
> Wishing Carebear <wishing.carebear at gmail.com>
> wrote:
> 
> 
> Thanks for your reply Greg.
>  
> Actually I have 2 requirements:
>  
> 1) Define the data objects in the rule itself so that
> the business user can define\modify the data
> objects
> 2) have a rule that can evalaute the data objects
> against the criteria the user requests..
>  
> It is my bad I started with the 2nd requirement
> :(
>  
> Regards,
> cabear
> 
> 
> 
> 
> On Wed, Nov 11, 2009 at 1:50 PM,
> Greg Barton <greg_barton at yahoo.com>
> wrote:
> 
> Funny you should bring
> that up, I was just having this debate with a co-worker. :)
> 
> A decision table is a means for defining rules, not working
> memory objects.  So no, out of the box a decision table as
> it's defined in drools (and other rule management
> systems) would not serve that purpose.  However,
> there's no reason why you couldn't parse a
> spreadsheet (or other tabular data format) to generate Data
> objects.
> 
> 
> Now, are you sure it's Data objects you want to
> generate?  I'm guessing from how your question was
> phrased that it's Query objects you'd like to
> generate.  In that case the answer to the question is still
> no, but...if you use Wolfgang's approach to solve the
> problem (i.e. defining the queries in the rules themselves,
> and not in a working memory object) then using a decision
> table is appropriate.  In fact, it's probably the best
> way to define the rules. (It's most compact and readable
> when you have many rules with a repetitive structure.)
> 
> 
> 
> --- On Wed, 11/11/09, Wishing Carebear <wishing.carebear at gmail.com>
> wrote:
> 
> > From: Wishing Carebear <wishing.carebear at gmail.com>
> 
> > Subject: Re: [rules-users] some pointers for
> solution
> > To: "Rules Users List" <rules-users at lists.jboss.org>
> > Date: Wednesday, November 11, 2009, 3:38 PM
> 
> 
> 
> 
> > Hi Greg:
> > Is it possible to use decision table to populate the
> > Data object that contains the criteria list
> > information.
> >  
> > Thanks,
> > Ravi
> >
> >
> > 2009/11/8 Greg Barton <greg_barton at yahoo.com>
> 
> >
> > There
> > are a couple of ways to do this.  I'm sure
> there's
> > a bit more clean way than the example I'm
> providing, but
> > this should get you in the right direction.  It's
> not
> 
> > 100% rules, because it involves a bit of java
> collections
> > trickery. (See attached project,
> > collection_DroolsCriteriaMatch.tar.gz)
> >
> >
> > The heart of it is a single rule:
> >
> > rule "Match"
> 
> >  when
> >    d : Data()
> >    q : Query( size <= d.size )
> >    Number( intValue == q.size )
> >    from accumulate(
> >      Criteria( this memberOf d, this memberOf q ),
> >
> >      init( int total = 0; ),
> 
> >      action( total ++; ),
> >      reverse( total --; ),
> >      result( total )
> >    )
> >  then
> >    System.out.println("Match: " + d +
> "
> > and " + q) ;
> > end
> 
> >
> > The Data object holds data to be queried, Query
> objects are
> > asserted to match the Data, and Criteria objects can
> be
> > contained in either. (With the aforementioned
> collections
> > trickery that if a Criteria is contained in a Query it
> can
> 
> > be found in a Data object, but the reverse isn't
> true.
> >  See the Query.contains(Object) method for how
> that's
> > implemented.)
> >
> >
> > So the rule above basically says "There's a
> Data
> 
> > object, and all of the Query objects Criteria are
> contained
> > in the Data object."
> >
> > There's an alternate way of doing this using eval
> and a
> > bit more java fu.  See the
> eval_DroolsCriteriaMatch.tar.gz
> 
> > project attached.  This one's probably not
> optimal,
> > though, as it's basically a brute force check of
> all
> > Data objects against the asserted Query.
> >
> >
> > I tried for a while to get a solution working with
> 
> > different criteria types from both Data and Query
> objects
> > being asserted into working memory, but I couldn't
> get
> > the accumulate syntax right.  Anyone know of a way to
> do
> > that? (I figure that would get a "pure
> rules"
> 
> > solution.)
> >
> >
> > --- On Sat, 11/7/09, Wishing Carebear <wishing.carebear at gmail.com>
> > wrote:
> >
> > > From: Wishing Carebear <wishing.carebear at gmail.com>
> 
> >
> > > Subject: [rules-users] some pointers for
> solution
> > > To: rules-users at lists.jboss.org
> > > Date: Saturday, November 7, 2009, 10:19 PM
> 
> >
> >
> >
> > > Hello:
> > > There are n selection criteria from s1 .. sn for
> each
> > > item i1.. in. Each item can have a subset of
> criteria
> > which
> > > applies to them.
> 
> > >  
> > > The end user, can choose a subset of criteria
> like c1
> >
> > > and c5 and only the item that has c1 and c5
> valid
> > should be
> > > returned. For example: if item i1 and i2 have
> 
> > criterias
> > > valid for c1, c2, c5, c6, c8 since the request is
> only
> > for
> > > criteria c1 and c5, i1 and i2 must be returned.
> >
> > >
> > >  
> > > Is it possible to write a rule using drools for
> this
> 
> > > requirement.
> > >  
> > > Thanks for your help and time,
> > > cabear
> > >
> > > -----Inline Attachment Follows-----
> >
> > >
> > > _______________________________________________
> 
> > > rules-users mailing list
> > > rules-users at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/rules-users
> 
> >
> > >
> >
> >
> >      
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> 
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> >
> >
> >
> > -----Inline Attachment Follows-----
> 
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> 
> >
> 
> 
> 
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 
> 
> 
> 
> -----Inline Attachment Follows-----
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 


      




More information about the rules-users mailing list