JBoss Drools 3 Released

Home

News: JBoss Drools 3 Released

  1. JBoss Drools 3 Released (30 messages)

    The Drools team are pleased to announce the final release of JBoss Rules 3.0. JBoss Rules is the supported and branded release of the Drools project and part of the JBoss JEMS product range. Drools is an enhanced Rules Engine implementation, ReteOO, based on Charles Forgy's Rete algorithm tailored for the Java language. More importantly, Drools provides for Declarative Programming and is flexible enough to match the semantics of your problem domain with Domain Specific Languages. JBoss Rules 3.0 introduces the new Eclipse Workbench plugin making it easier to write and debug rules. Feature highlights include support for first order logic (not, exists), a new drl langauge with easy dsl exension capabilities, truth maintenance with logical objects, agenda groups, dynamic rules and high performance indexing for over 20x performance improvements compared to Drools 2.Enjoy The Drools team Message was edited by: joeo@enigmastation.com

    Threaded Messages (30)

  2. Re: JBoss Drools 3 Released[ Go to top ]

    Congratulations to the Drools team, that is a very important milestone. Cheers, Sacha (@JBoss)
  3. Looks great[ Go to top ]

    The new syntax looks great and I love the content assist support for DSL's. I just can't wait to try it out. Good work! Bruno Silva
  4. Re: Looks great[ Go to top ]

    The new syntax looks great and I love the content assist support for DSL's.

    I just can't wait to try it out. Good work!

    Bruno Silva
    Me too. Now if I can just convince others of the value of Drools for other things.
  5. XML synthax[ Go to top ]

    about 6-7 months ago i was evaluating Drools. Synthax was horrible (XML!!!) I ended up with lisp based open source rule engine LISA http://lisa.sourceforge.net/ And I love it.
  6. Re: XML synthax[ Go to top ]

    about 6-7 months ago i was evaluating Drools.
    Synthax was horrible (XML!!!)

    I ended up with lisp based open source rule engine LISA http://lisa.sourceforge.net/

    And I love it.
    You should get some serious karma points for dissing (1) java (2) a jboss project and (3) xml in a single post here on the server side. Talk about a hat trick! Now, if only you'd found a way to include Spring and Apache...
  7. Reason for XML is rule interchange[ Go to top ]

    If an user is going to only use 1 rule engine and never plans to migrate off it, then using a non-xml language is definitely better. on the otherhand, if you want to make sure you can swap out a rule engine, it makes sense to use a rule markup language like RuleML or some other XML based language. Not everyone is going to want to dive into ANTLR or JavaCC to write a rule conversion tool. my bias 2 cents. peter
  8. Re: XML synthax[ Go to top ]

    Lol. CLIPS is still free and open - it works a treat (nice compact native code). You can do quite a lot with LISP languages of course, and with ordered facts you can make for some readable nice rules (Peter Lin will call it "sin" though). For whatever reason, there seems to be a block that stops anything LISP from possibly being mainstream accepted, which is a shame (its such a flexible and easy to parse syntax). Cest la vie.
  9. You shall repent[ Go to top ]

    Lol. CLIPS is still free and open - it works a treat (nice compact native code). You can do quite a lot with LISP languages of course, and with ordered facts you can make for some readable nice rules (Peter Lin will call it "sin" though). For whatever reason, there seems to be a block that stops anything LISP from possibly being mainstream accepted, which is a shame (its such a flexible and easy to parse syntax). Cest la vie.
    ordered facts are really useful, but they often get abused. From first hand experience, a lot of people use ordered facts out of laziness. For example, if I'm writing a quick demo, I use ordered facts. For a real application, one should be careful when ordered facts are used :) in the hands of an experienced user ordered facts is just another tool in the CLIPS bag. I have a CLIPS parser in my rule engine that covers the most common rule commands. The parser isn't finished yet, but it does cover quite a bit. Most modern rule engines are decendents of OPS5 or ART today, so much of the work is based on the achievements of Dr. Forgy and the early pioneers of rule engines. peter
  10. .NET/C#[ Go to top ]

    Congratulations to the Drools Team. The DSL stuff definitely does look impressive. I noticed a .NET/C# group. Is this a new development? JBoss going .NET. Also, didn't see it in the docs, but what version of the RETE algorithm does Drools provide -- I or II?
  11. explanation[ Go to top ]

    Congratulations to the Drools Team. The DSL stuff definitely does look impressive. I noticed a .NET/C# group. Is this a new development? JBoss going .NET. Also, didn't see it in the docs, but what version of the RETE algorithm does Drools provide -- I or II?
    The core RETE is based on code I donated and is very close to Forgy's RETE paper. There's a few additional enhancements, which improve runtime performance. the objectTypeNode has additional hashing to reduce the cost of network "fan out" effect. This means that loading lots of simple rules (2-8K) with only a few object types can provide constant performance. the betaNode has additional indexing to reduce the cost of cross product pattern matching implemented by Edson Tirelli. the explanation of RETE algorithm in the new drools3 docs should be better than drools2 docs. For a detailed explanation I would suggest reading the RETE section in drools3 docs. peter
  12. Re: .NET/C#[ Go to top ]

    There was a .Net "partial" port done for 2.1 - using IKVM. We plan to do this for 3.x eventually, depending on community interest (usually we start with IKVM for some parts, and then use good olde fashioned porting for others - as there are only 24 hours in a day !).
  13. I love Drools[ Go to top ]

    I can't wait to try out the new version.
  14. Performance compared to drools2[ Go to top ]

    For those who care about performance, drools3 should be 20x faster than drools2 and will scale (with respect to number of rules) like classic RETE algorithm. Drools2 had scalability issues, since it was only forward chaining. peter
  15. Re: Performance compared to drools2[ Go to top ]

    For those who care about performance, drools3 should be 20x faster than drools2 and will scale (with respect to number of rules) like classic RETE algorithm. Drools2 had scalability issues, since it was only forward chaining.

    peter
    Performance, smormance. ;) I am looking forward to performance gains too. :)
  16. Re: JBoss Drools 3 Released[ Go to top ]

    Yeah whats up with the XML syntax for rules. Thats just pedantic. It looks like people are using XML to avoid writing parsers for what could be more intutive/user friendly rule languages. http://www.expertise2go.com/ It does not have a lot of buzz words but it packs a punch and I was able to write a small/medium size knowledge base and make it available online in an hour.
  17. Re: JBoss Drools 3 Released[ Go to top ]

    Yeah we didn't like the XML for the reason of "not writing a parser" - that is exactly what a lot of people use it for. Hence we have a non XML format. The XML format is only for interchange if at all (and there are utilities to switch between formats automatically). I think standards like RuleML will become important in the future, but as Peter said, its XML for interchange, not for authoring.
  18. Re: JBoss Drools 3 Released[ Go to top ]

    Many years ago we did the similar thing as preprocessor for the existing language (it was C or Pascal in our case). From my experience it is much better & user friendly – add production rules to the existing language rather than invent a new one and re-invent procedural things (functions etc.) Dmitry http://www.servletsuite.com
  19. Re: JBoss Drools 3 Released[ Go to top ]

    Which is what we did (to some extent) - allow semantic chunks of java code. Myself, I don't like it that way, as it tempts people to be non declarative, but from a practical point of view, people love it.
  20. Latest version of Drools / JBoss rules also allows you to specify you rules in Decisions Tables , an Excel Format, that you can share with your Business users.
  21. Re: JBoss Drools 3 Released[ Go to top ]

    Yeah whats up with the XML syntax for rules. Thats just pedantic.

    It looks like people are using XML to avoid writing parsers
    for what could be more intutive/user friendly rule languages.


    Frankly, I don't care much about the exact syntax used to express rules, compared to what rules are expressible and how their enforcement performs. Writing a parser and getting it perfected is time consuming and adds very little to the actual functionality. Why waste the time? XML is "good enough" and most people are perfectly comfortable with it. I'm just curious -- do you complain about writing ant build files too? They have a lot more complicated command set, but no one seems to mind. Rolling your own grammer for rules would only increase the learning curve with a tool like this. I'd rather have the new features of the actual underlying engine. Using XML dramatically increases the ease with which 3rd parties utilities will work with the data format. To me, the value proposition of getting such tools instead of a new grammer to learn is a no brainer.
  22. Re: JBoss Drools 3 Released[ Go to top ]

    Yeah whats up with the XML syntax for rules. Thats just pedantic.

    It looks like people are using XML to avoid writing parsers
    for what could be more intutive/user friendly rule languages.


    Frankly, I don't care much about the exact syntax used to express rules, compared to what rules are expressible and how their enforcement performs. Writing a parser and getting it perfected is time consuming and adds very little to the actual functionality. Why waste the time? XML is "good enough" and most people are perfectly comfortable with it. I'm just curious -- do you complain about writing ant build files too? They have a lot more complicated command set, but no one seems to mind. Rolling your own grammer for rules would only increase the learning curve with a tool like this. I'd rather have the new features of the actual underlying engine. Using XML dramatically increases the ease with which 3rd parties utilities will work with the data format. To me, the value proposition of getting such tools instead of a new grammer to learn is a no brainer.
  23. Re: JBoss Drools 3 Released[ Go to top ]

    Well Bruce, we have a choice. We originally only had a non XML format, and and IDE to help manage the rules, but then by popular demand added XML. XML is not really for hand editing, but if you have tools on top, or a UI, then its not so bad. But yes, with the non-xml format there is a slight learning curve (but its not a general purpose language, so much easier). Yes, that parser is not easy to do, but with tools like antlr 3, and antlrworks, it is getting easier (and with netbeans and eclipse you can create syntax aware editors).
  24. Re: JBoss Drools 3 Released[ Go to top ]

    Sorry *Bryan* ! That'll teach me to reply before my morning coffee !
  25. Re: JBoss Drools 3 Released[ Go to top ]

    Seems to be two main confusions. Firstly Drools now offers drl, dsl and xml - we are no longer restricted to xml. This means you can write your rules as xml as well as: Person( age >= 18 ) and with dsl as: The applicant is at least 18 years old See the latest live trail for details. Further to this Rete II, III and RetePlus are just marketting terms - there are no published papers. This means it is impossible for an engine to implemenet those. I provide a much better explanation in the documnation on this marketting driven fallacy. http://labs.jboss.comfile-access/default/members/jbossrules/freezone/docs/3.0.1/html_single/index.html#d0e45 "Drools has implementations for both Rete and Leaps; Leaps is considered experimental, as it is quite new. The Drools Rete implementation is called ReteOO signifying that Drools has an enhanced and optimised implementation of the Rete algorithm for Object Oriented systems. Other Rete based engines also have marketing terms for their proprietary enhancements to Rete, like RetePlus and Rete III. It is important to understand that names like Rete III are purely marketing where, unlike the original published Rete Algorithm, no details of implementation are published; thus asking a question like "Does Drools implement Rete III?" is nonsensical. The most common enhancements are covered in "Production Matching for Large Learning Systems (Rete/UL)" (1995) by Robert B. Doorenbos." Mark
  26. For those who care[ Go to top ]

    RETEII is supposed to be patented by Production Systems. The primary improvement from my understanding is that RETEII over came the issue of rulesets with numerous bindings. for anyone familiar with CLIPS, Forgy's papers or RETE-UL paper by doorenbos, many implementations of RETE use doubly linked lists to maintain bindings. This meant that rules with many bindings increased the memory cost. Using the doubly linked list approach, a RETE implementation would run into performance limitations once the rule count is extremely large or the dataset is extremely large. Those familiar with RETE literature will know that many papers on claim it is a limitation of the algorithm. That isn't completely true. In Forgy's original thesis, he gave a detailed description of how to implement RETE in C using linked lists. The approach I took in my engine is to use late binding, so the implementation does not maintain every single binding. Instead, it binds the object's attribute when needed to evaluate 2 literals. This is also how drools 3 works. Rule engines like ART also use late binding and is still one of the fastest engines today. If one were to look at Forgy's second paper published in 1982, using linked list to implement the working memory is not a requirement. For those who want a more detailed explanation of RETE http://woolfel.blogspot.com/2006/04/explaining-rete.html So what Mark says is correct. RETEII is basically a different implementation of RETE which over comes the memory limitations of maintaining bindings. I don't know what RETEIII is since there's no paper on it. In terms of optimization of RETE, there's really only 2 places: rule compilation and runtime. Adding indexing to the BetaNode is an example of runtime improvement. Compiling the rules to produce a static agenda like LEAPS is an example of compilation optimization. There are many more. In fact, in Doorenbos' RETE-UL paper, many of the optimizations he mentions in chapter 2 is work by other researchers. Doorenbos' primary contribution is the unlinking algorithm and writing a comprehensive summary of the optimization techniques others already tried. peter
  27. Re: For those who care[ Go to top ]

    So what Mark says is correct. RETEII is basically a different implementation of RETE which over comes the memory limitations of maintaining bindings.
    Actually, this is what I was referring to and thanks for your extended reply. I didn't mean to post a "nonsensical" question, I was just trying to get a gauge as to what optimizations you had taken to overcome some of the original deficiencies of the RETE algoritm. As far as RETE/UL optimizations, aren't there assumptions on the rulesets to achieve the cost benefits as Doorenbos mentions in 6.3(serial, limited tokens, positive assertion only, equality tests only,etc). Otherwise, RETE/UL degenerates similarly to basic RETE. Have you seen this in your experience or is this not true? The domains I am working on don't lend themselves to restricted representations as such, so I don't know if I would reap any benefits of these "optimizations".
  28. Re: For those who care[ Go to top ]

    So what Mark says is correct. RETEII is basically a different implementation of RETE which over comes the memory limitations of maintaining bindings.
    Actually, this is what I was referring to and thanks for your extended reply. I didn't mean to post a "nonsensical" question, I was just trying to get a gauge as to what optimizations you had taken to overcome some of the original deficiencies of the RETE algoritm. As far as RETE/UL optimizations, aren't there assumptions on the rulesets to achieve the cost benefits as Doorenbos mentions in 6.3(serial, limited tokens, positive assertion only, equality tests only,etc). Otherwise, RETE/UL degenerates similarly to basic RETE. Have you seen this in your experience or is this not true? The domains I am working on don't lend themselves to restricted representations as such, so I don't know if I would reap any benefits of these "optimizations".
    The primary assumption of RETE-UL improvement is a based on machine learning scenarios where a rule engine generates a lot of rules during the learning process, but many of the rules do not match fully. In those situations, some nodes are unliked if a rule does not result in complete match. The algorithm does not improve partial matche performance or business cases where rule count is under 50K. The type of rules used in machine learning are very different than business use cases, so RETE-UL does not provide significant benefit. For example, the ObjectTypeNode hashing described in RETE-UL paper only address equality conditions (example: Account.name == "George"). The paper states the optimization predates the RETE-UL paper. The optimization I implemented in my engine is a variation. You can read a detailed description here. http://woolfel.blogspot.com/2005/09/more-ideas-on-optimization-today-ive.html http://woolfel.blogspot.com/2005/12/constant-performance-is-achievable.html If you want to see the code, it's up on sourceforge http://www.sourceforge.net/projects/ruleml-dev/ There are other RETE extensions like bi-directional chaining and backward chaining, which Drools3 may implement in the future. I'm experimenting with several different approaches. peter
  29. Dear all, I just begin to handle some BPM projects, I want to know if the JBoss JBPM and JBoss Rule engine is good enough for some BPM projects.
  30. that depends on the process[ Go to top ]

    it's hard to answer that question without some idea of the process. If the process is similar to insurance claim processing or mortgage qualification, the answer is yes. If the process is a simple workflow that only goes in one directly, maybe not. peter
  31. I have experimented with JBoss Drools 3.0.3 and it's nice especially DSL feature. One thing that I have notice was that I can't use complex java property inside WHEN clause. For example, if you have java object Transaction and inside this object you have property "request" of type Request and inside this request object you have property "type" of type String then you can't specify this : t:Transaction(request.type == "type"); Is there traverse limitation when you try to get inner property? It seems natural for such expressions to be allowed Also I'm wondering since DSL feature allows rules to be coded to express what needs to be done instead of how - do you guys think to introduce enhanced template language - once that at least can say that some part of natural language sentence can be ommited and probably using some sort of referencing between sencences