About the high-level question I remember reading an essay on the Jess
webpage that might help:

Some Guidelines For Deciding Whether To Use A Rules Engine
( http://www.jessrules.com/jess/guidelines.shtml )

Another paper from the Jess community that might be helpfull is:

The Zen of Jess
( http://www.jessrules.com/jess/zen.shtml )

There should be more information out there on the Internet, but nothing
comes to mind directly.

Regards,
Peter


Russ Egan wrote:
> That's fair, and Mark's comment about the drools manual is encouraging
> as well.  Maybe I just haven't found really illustrative reading on
> declarative programming yet.  I've looked into it from time to time, but
> never found enough guidance to figure out how it applies to real-world
> use cases.
> 
> I feel like a cookbook would be very useful though.  Some common
> patterns in procedural programming, why they are good candidates for
> accomplishing with declarative programming, how they translate into
> rules, patterns, anti-patterns...practical stuff.  Seems like much of
> the lit on declarative programming is very academic...hard to boil that
> down to tools I can use in my work.  The anti-patterns would be a big
> help actually, both high-level "this problem isn't suited to rules" and
> low-level "don't write rules like this" stuff.
> 
> I'm really surprised there isn't more of this out there, or at least
> that I haven't found it yet.
> 
> Hello Dave,
> 
>> Before you try to tackle a rules engine, you should definitely have a
>> good understanding of declarative programming languages.  Declarative
>> programming is very different from functional programming a la Java,
>> C++, C#, Visual Basic, Fortran, Cobol, etc.  To build your
>> fundamentals in declarative programming, you should attempt to master
>> a language like Prolog or Lisp.  These languages were the inspiration
>> for many of the rules engines that we have today.  These were the
>> tools that Charles Forgy and others experimented with before they
>> developed the technologies that we leverage today in the rules
>> community.  I would be hesitant to put a warning label on a Rules
>> Engine as we would on cigarettes.  However, let me say this:
>> "WARNING: The surgeon general cautions users of rules engines that
>> dabbling with rules engines without a core understanding of
>> declarative programming may be hazardous to your sanity."
>>
>> Best Regards,
>>
>> Dave
>>
>> -----Original Message-----
>>
>>> From: news [mailto:[EMAIL PROTECTED] On Behalf Of Russ Egan
>>> Sent: Tuesday, April 11, 2006 8:25 AM
>>> To: [email protected]
>>> Subject: Re: [drools-user] How to express conditional logic via DRL -
>>> ?
>>> Speaking of which, I've tried to find good, in-depth guides for rules
>>> engine usage.  Best practices, rules writing guidelines, cookbooks,
>>> advanced use cases, patterns, etc...  All I've found are very shallow
>>> "introductions"
>>> to rules engines.  Does anyone know of good, educational materials of
>>> this nature on the web?  Or good books?
>>> It's tough to avoid using rules engines "the wrong way" when this is
>>> little guidance for using them "right way", and when rules engines
>>> are so conceptually different from procedural programming.
>>>
>>> Hello Mark,
>>>
>>> Unfortunately I'm finding that many people just cannot adjust to the
>>> declarative and coupletely decoupled nature of a rule engine. The end
>>> result is that Drools is used as a script execution framework.
>>>
>>> Felipe Piccolini wrote:
>>>
>>> Mark,
>>>
>>> I could vote on this, I would vote no to the 'else'. The declarative
>>> thing about rule engines is that: no procedural code. So if you wanna
>>> do an 'else' condition you should re-think your rule and chack if its
>>> well writen. Of course this is just MHO.
>>>
>>> :)
>>>
>>> Tuesday, April 11, 2006, 6:09:22 AM, you wrote:
>>>
>>> I thought about adding 'else' but I couldn't decide on the best way
>>> to implement it, as there are several possabilities. Also 'else' is
>>> not considered declarative, so its a kinda of code smell. I'll llook
>>> into this again in 3.1
>>>
>>> Mark
>>> Geoffrey Wiseman wrote:
>>> On 4/10/06, Dmitry Goldenberg <[EMAIL PROTECTED]>
>>> wrote:
>>>
>>> What is the timeframe for 3.1?  Else/else if are very important to
>>> what we're trying to do.
>>>
>>> I can see how I can to the following with the method described by
>>> Geoffrey:
>>>
>>> if (A) then B else if (C) then D endif
>>>
>>> I also want to be able to do the following:
>>>
>>> if (A) then B else D endif
>>>
>>> I imagine that the rule would have to be written as a combo of
>>>
>>> if (A) then B endif
>>> if (!A) then D endif
>>> so that the conditions are complimentary...
>>> Indeed, yes, that's how you'd handle it.
>>>
>>> If it does make it into 3.1, that's a good thing in terms of
>>> supporting the way people think, talk, and work in other languages,
>>> but fundamentally, the same capabilities are there now -- they just
>>> require more typing.
>>>
>>> - Geoffrey
>>> -- 
>>> Geoffrey Wiseman
>>> --------------------------
>>> Felipe Piccolini
>>> [EMAIL PROTECTED]
> 
> 
> 
> 

Reply via email to