<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-5869426.post3614483009660442772..comments</id><updated>2010-08-16T10:29:09.810+01:00</updated><category term='Performance'/><category term='compilers'/><category term='Conflict Resolution'/><category term='Probability'/><category term='use case'/><category term='competition'/><category term='drools webinar'/><category term='cookbook'/><category term='uncertainty'/><category term='aires'/><category term='service repository'/><category term='Simulation and Testing'/><category term='Job'/><category term='Testing'/><category term='medical'/><category term='Time-Sensitive'/><category term='GSoC'/><category term='AI'/><category term='javapolis'/><category term='video'/><category term='Ad-Hoc'/><category term='Expert Systems'/><category term='RuleML'/><category term='variables'/><category term='Business Rules'/><category term='Domain Specific Languages'/><category term='workshop'/><category term='java'/><category term='infoQ'/><category term='JBoss Rules'/><category term='example'/><category term='Mind Map'/><category term='Rules Engine'/><category term='BAM'/><category term='DotNet'/><category term='Rules'/><category term='Business Rules Forum'/><category term='Fuzzy'/><category term='decision tables'/><category term='Boot Camp'/><category term='Drools Boot Camp'/><category term='interview'/><category term='Eclipse'/><category term='MicroContainer'/><category term='Stream'/><category term='designer'/><category term='Brazilian'/><category term='upgrade tool'/><category term='milestone'/><category term='BOF'/><category term='Seam'/><category term='quote'/><category term='JDT'/><category term='shadow facts'/><category term='event'/><category term='ORF 2008'/><category term='SOA'/><category term='Smooks'/><category term='GUI'/><category term='grammar'/><category term='Drools Expert'/><category term='sequential'/><category term='announcement'/><category term='Drools'/><category term='buenos'/><category term='ESP'/><category term='Natural Language'/><category term='Camel'/><category term='SSL'/><category term='jBPM5'/><category term='JSON'/><category term='Drools Flow'/><category term='RuleML 2008'/><category term='Rete'/><category term='Production Rules Systems'/><category term='DRL'/><category term='remote'/><category term='brms insurance demo standalone'/><category term='FactTemplate'/><category term='traveling tournament'/><category term='BRMS'/><category term='MVEL'/><category term='Rule Flow'/><category term='Open Source'/><category term='argentina'/><category term='IKVM'/><category term='BPMN'/><category term='source code'/><category term='standards'/><category term='machine learning'/><category term='image processing'/><category term='Backward Chaining.'/><category term='Monitoring'/><category term='modify block'/><category term='GIS'/><category term='accumulate'/><category term='Drools Fusion'/><category term='Codehaus'/><category term='JUG'/><category term='Rule Authoring'/><category term='Negation'/><category term='Business Rules Governance'/><category term='DynaBeans'/><category term='junit'/><category term='JFDI'/><category term='Rule Engines'/><category term='KAMS'/><category term='dynamically generated classes'/><category term='ORF'/><category term='Form Builder'/><category term='syntax'/><category term='shadow proxies'/><category term='BRMS Guvnor Drools'/><category term='ANTLR'/><category term='Service Manager'/><category term='FedEx'/><category term='DSL'/><category term='Clips'/><category term='planner'/><category term='traits'/><category term='examination'/><category term='search space'/><category term='Janino'/><category term='MySQL'/><category term='Web Services'/><category term='semantic web'/><category term='jBPM'/><category term='constraint programming'/><category term='generated classes'/><category term='Research Network'/><category term='algorithm'/><category term='cloud'/><category term='Life Cycle'/><category term='MISMO'/><category term='BPEL'/><category term='LDAP'/><category term='jBPM5 webinar'/><category term='Templates'/><category term='case management'/><category term='android'/><category term='persistence'/><category term='RIF'/><category term='Logic Operators'/><category term='relational programming'/><category term='Debug'/><category term='Jess'/><category term='release'/><category term='extensibility'/><category term='Atom'/><category term='Analytics'/><category term='Portuguese'/><category term='Meetups'/><category term='Synasc'/><category term='drools puzzle'/><category term='Computer Games'/><category term='Progress'/><category term='JavaOne'/><category term='accumulate function'/><category term='Programming'/><category term='Healthcare'/><category term='October Rules Fest'/><category term='Guvnor'/><category term='SwitchYard'/><category term='WordNet'/><category term='SBVR'/><category term='devoxx'/><category term='one'/><category term='Drools Chance'/><category term='plug tree'/><category term='Presentation'/><category term='Spring'/><category term='Guice'/><category term='salaboy'/><category term='solver'/><category term='Savvion'/><category term='OSGi'/><category term='http://www.blogger.com/img/blank.gif'/><category term='REST'/><category term='DSL regexp antlr'/><category term='project proposals'/><category term='Forward  Chaining'/><category term='declarative programming'/><category term='videos'/><category term='CEP'/><category term='book'/><category term='API'/><category term='brms ajax web'/><category term='combinatorial optimization'/><category term='tests'/><category term='computer vision'/><category term='functional programming'/><category term='Time'/><category term='parser'/><category term='droos ide update-site downloads'/><category term='expressiveness'/><title type='text'>Comments on Drools &amp;amp; jBPM: Writing better rules (Edson Tirelli)</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.athico.com/feeds/3614483009660442772/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html'/><author><name>Mark Proctor</name><uri>http://www.blogger.com/profile/03304277188725220501</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_Jrhwx8X9P7g/SwUF6LGebpI/AAAAAAAAAYs/GVHGGzeDmdo/s1600/markp.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5869426.post-8360532252332268668</id><published>2009-11-03T15:52:02.144Z</published><updated>2009-11-03T15:52:02.144Z</updated><title type='text'>Is all your tips valid for drools 5 too?please upd...</title><content type='html'>Is all your tips valid for drools 5 too?please update this valuable post.&lt;br /&gt;&lt;br /&gt;thanks,&lt;br /&gt;David Bakkar</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/8360532252332268668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/8360532252332268668'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1257263522144#c8360532252332268668' title=''/><author><name>David Bakkar</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-978851757'/></entry><entry><id>tag:blogger.com,1999:blog-5869426.post-1140822119082967392</id><published>2009-08-18T19:01:47.927+01:00</published><updated>2009-08-18T19:01:47.927+01:00</updated><title type='text'>thank you</title><content type='html'>thank you</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/1140822119082967392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/1140822119082967392'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1250618507927#c1140822119082967392' title=''/><author><name>dobre programy</name><uri>http://www.dobrepliki.pl</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-616886874'/></entry><entry><id>tag:blogger.com,1999:blog-5869426.post-581665815539182462</id><published>2009-01-13T10:40:00.000Z</published><updated>2009-01-13T10:40:00.000Z</updated><title type='text'>Hi, I did the following and it seemed useful at th...</title><content type='html'>Hi, I did the following and it seemed useful at the time -&lt;BR/&gt;&lt;BR/&gt;(a)  Disregarded concepts like Inputs and Outputs to the Rule Engine - instead propagate the concept of a KnowledgeBase that undergoes some changes (becomes richer) as the rules fire. Spent almost as much time on thinking about the KB as about the rules.&lt;BR/&gt;&lt;BR/&gt;(b) Visualized the KnowledgeBase as a set of distinct XMLs, with tags and values in plain English, not more than two nestings per XML, maybe more than one XML.&lt;BR/&gt;&lt;BR/&gt;(c) Considered whether the KB to rules interaction would work even if the rules fired in a non-sequential unordered manner.&lt;BR/&gt;&lt;BR/&gt;(d) Wrote the rules first in plain English. As atomic as possible.&lt;BR/&gt;&lt;BR/&gt;(e) Asserted individual classes (once I JAXBed all those XMLs into classes) separately into Working Memory, but not the collections, which remained (hopefully as flat objects) inside each definite class.&lt;BR/&gt;&lt;BR/&gt;(f) Working with strings and other immutable classes always means "retract and re-insert" rather than update.&lt;BR/&gt;&lt;BR/&gt;(g) Minimized use of salience, but used activation-groups and no-actives whenever logic looked bunched or layered.&lt;BR/&gt;&lt;BR/&gt;I hope this may be of use to someone at the point of designing the rules set-up.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/581665815539182462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/581665815539182462'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1231843200000#c581665815539182462' title=''/><author><name>Kinshuk</name><uri>http://www.blogger.com/profile/05331200632897173074</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-110051722'/></entry><entry><id>tag:blogger.com,1999:blog-5869426.post-298847025914979592</id><published>2008-04-08T12:22:00.000+01:00</published><updated>2008-04-08T12:22:00.000+01:00</updated><title type='text'>There are many outsource writing services provider...</title><content type='html'>There are many outsource writing services providers are there online.. But when you select a provider for your custom business writing you must be very careful. A good business writing can improve and grow your business.. Gramatical or punctuation errors in your custom business writing causes bad impression on you//</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/298847025914979592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/298847025914979592'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1207653720000#c298847025914979592' title=''/><author><name>Jasmine Rose</name><uri>http://outsourcingresearchwriting.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2065208150'/></entry><entry><id>tag:blogger.com,1999:blog-5869426.post-6242608584037214561</id><published>2007-03-22T00:01:00.000Z</published><updated>2007-03-22T00:01:00.000Z</updated><title type='text'>I would consider #2 lack of nested property access...</title><content type='html'>I would consider #2 lack of nested property access a rule Anti-pattern. In practice, you can't always change the object model, so some times it is nice to be able to access a nested attribute like customer.address.zipCode. The problem is that it creates more problems than it solves. Normally, when an object is asserted, engines like clips, jess and many others will cache the value of the attribute. If the rule language allowed users to access a nested field, should it make a deep copy of the object when it caches the values? Doing that is costly, so most engines do a shallow copy.&lt;BR/&gt;&lt;BR/&gt;From a rule patterns and practice perspective, it's generally better to explicitly assert the fact and match on the object.attribute. when that isn't practical, it may be better to create a Busines object model like JRules BOM that flattens the model and makes it easier for reasoning.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/6242608584037214561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/6242608584037214561'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1174521660000#c6242608584037214561' title=''/><author><name>woolfel</name><uri>http://www.blogger.com/profile/13814445471254728002</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-567042017'/></entry><entry><id>tag:blogger.com,1999:blog-5869426.post-5137397478787152456</id><published>2007-03-15T16:44:00.000Z</published><updated>2007-03-15T16:44:00.000Z</updated><title type='text'>Yes, these are some of the "expressiveness limitat...</title><content type='html'>Yes, these are some of the "expressiveness limitations in the language" I was talking about in version 3.0.x. We are working on removing these limitations (and many of them were already removed) in 3.1 and beyond, so please keep tuned and providing us with feedback. It is very important for us to know real use cases and user needs.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/5137397478787152456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/5137397478787152456'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1173977040000#c5137397478787152456' title=''/><author><name>Edson Tirelli</name><uri>http://www.blogger.com/profile/06799293335230465902</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-259727537'/></entry><entry><id>tag:blogger.com,1999:blog-5869426.post-5051603735988275854</id><published>2007-03-15T15:04:00.000Z</published><updated>2007-03-15T15:04:00.000Z</updated><title type='text'>While I accept the thrust of your article, the thr...</title><content type='html'>While I accept the thrust of your article, the three biggest obstacles that I see currently to widespread adoption of the JBoss rules syntax in business are:  1) lack of basic boolean operations in conditions and 2) the lack of nested property access and 3) the lack of proper null handling.  These make it very difficult to write realistic business rules on anything close to a plain Java object model.&lt;BR/&gt;&lt;BR/&gt;I an glad to see that Michael and Mark are working on these issues (#1 and #2 have been partially addressed) and I think we should all encourage this line of refinement, even if it does not live up to the purist usage of the engine ;)&lt;BR/&gt;&lt;BR/&gt;thanks,&lt;BR/&gt;Pat Niemeyer</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/5051603735988275854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5869426/3614483009660442772/comments/default/5051603735988275854'/><link rel='alternate' type='text/html' href='http://blog.athico.com/2007/03/writing-better-rules.html?showComment=1173971040000#c5051603735988275854' title=''/><author><name>Pat Niemeyer</name><uri>http://www.blogger.com/profile/02732672917822149627</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.athico.com/2007/03/writing-better-rules.html' ref='tag:blogger.com,1999:blog-5869426.post-3614483009660442772' source='http://www.blogger.com/feeds/5869426/posts/default/3614483009660442772' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-322889474'/></entry></feed>
