Is "Jess in Action" good? Is it generally applicable to rules engines, or is it pretty much just Jess mechanics? One of the Amazon reviews indicated this.
Hello Peter,
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]
