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] > > > >
