<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx</link><description>I watched on the sidelines, not long ago, as a team of architects carefully inspected and examined different technologies for managing a rules engine. I found it interesting, but not terribly pertinent, because...well... to be honest... rules engines</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1818886</link><pubDate>Tue, 06 Mar 2007 21:57:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1818886</guid><dc:creator>Andreas Öhlund</dc:creator><description>&lt;p&gt;I agree that a rules engine is a bad idea most of the time but what about the scenario where you have a lot of complex business descisions that frequently must be modified by &amp;quot;business users&amp;quot; i.e the rules need a tight edit/test/deployment-cycle separated from your supporting IT-systems? (eg. rules for credit assessment, incurance policies etc.)&lt;/p&gt;
&lt;p&gt;I guess those cases are rare but I can see some use of a BRMS in the above examples.&lt;/p&gt;</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1824889</link><pubDate>Wed, 07 Mar 2007 08:30:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1824889</guid><dc:creator>NickMalik</dc:creator><description>&lt;p&gt;Hi Andreas,&lt;/p&gt;
&lt;p&gt;Even then, consider this. &amp;nbsp;If I have an insurance policy system, I want to be able to configure some fairly complex rules. &amp;nbsp;With some Commonality - Variability Analysis (CVA), you can usually distill out a set of numeric values or a table that drives the logic. &amp;nbsp;You write the component that consumes the data, and you put the data in a database.&lt;/p&gt;
&lt;p&gt;You still want to have your app use configuration data to select in the component, but for over 80% of the changes, data changes are all you actually need. &amp;nbsp;If your logic changes enough to need to change the code, then you WANT a longer test cycle. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;As I said in the post itself, there are probably narrow cases for a component that is more general. &amp;nbsp;However, for over 95% of the applications, a rules engine is just not an effective way to spend your money. &lt;/p&gt;
</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1828481</link><pubDate>Wed, 07 Mar 2007 18:43:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1828481</guid><dc:creator>Kevin I</dc:creator><description>&lt;p&gt;I agree with what you're saying, as I have recently had that issue with integrating rules in a frontend (driving user control validation) and backend (validating data before saving). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Current rule engine generators do not address this, but &amp;nbsp; I think with the enterprise library attacking business rules, hopefully we might see more integration of the tiers and common rules.&lt;/p&gt;
&lt;p&gt;We ended up making our own rule validation engine where we create one ruleset and it can be used in the backend, or front end. &amp;nbsp;If in the frontend, then any controls bound to data which is associated with rules are automatically affected and display validation of one or multiple rules.&lt;/p&gt;
&lt;p&gt;And we can create a ruleset with rules that a ui wants, and have a backend use those rules and create additional ones that are only relevant for the backend.&lt;/p&gt;
&lt;p&gt;So I do not necessarily think rule engines are bad - just that they are currently not thought out very well for different tiers. &amp;nbsp;&lt;/p&gt;</description></item><item><title>New and Notable 148</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1829351</link><pubDate>Wed, 07 Mar 2007 20:11:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1829351</guid><dc:creator>Sam Gentile</dc:creator><description>&lt;p&gt;Still real tired from my Oklahoma trip , partying with Raymond sure is exhausting-). Agile/Development&lt;/p&gt;
</description></item><item><title>Rules Engines v.s. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1830443</link><pubDate>Wed, 07 Mar 2007 23:21:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1830443</guid><dc:creator>Trumpi's Blog</dc:creator><description>&lt;p&gt;It appears that Nick Malik is out to motivate that rules engines are not as useful as dependency injection.&lt;/p&gt;
</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1834922</link><pubDate>Thu, 08 Mar 2007 12:10:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1834922</guid><dc:creator>Ernst Kuschke (C# MVP)</dc:creator><description>&lt;p&gt;Couldn't this idea, though it doesn't conform to traditional &amp;quot;rules engine&amp;quot; ideas, just be called a new rules engine? :P&lt;/p&gt;
&lt;p&gt;How about a hybrid? I see a UI where business users edit business concepts, ie. change values etc., these are persisted (wherever - xml / db / etc) and your strategy-classes can be hydrated from this persisted data and passed on to the execution engine.&lt;/p&gt;</description></item><item><title>Rules engines and dependancy injection - a response to Nick Malik </title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1848434</link><pubDate>Sat, 10 Mar 2007 02:52:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1848434</guid><dc:creator>Charles Young</dc:creator><description>&lt;p&gt;Nick Malik published a thought-provoking article on rules engines recently. You can read...&lt;/p&gt;
</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1848462</link><pubDate>Sat, 10 Mar 2007 02:59:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1848462</guid><dc:creator>Charles Young</dc:creator><description>&lt;p&gt;Nick, thanks for a really interesting article. &amp;nbsp; However, I strongly disagree. &amp;nbsp;In reality, many modern rules engines offer an excellent platform for implementing rules using dependency injection patterns. &amp;nbsp;There is no 'battle', therefore, between the two approaches. &amp;nbsp; There is, however, a marked degree of ignorance about what rules engines offer. &amp;nbsp; I've written up my thoughts and posted them at &lt;a rel="nofollow" target="_new" href="http://geekswithblogs.net/cyoung/articles/108411.aspx"&gt;http://geekswithblogs.net/cyoung/articles/108411.aspx&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1850615</link><pubDate>Sat, 10 Mar 2007 08:40:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1850615</guid><dc:creator>NickMalik</dc:creator><description>&lt;p&gt;Hi Charles,&lt;/p&gt;
&lt;p&gt;I read your blog reply and attempted to add the following text as a comment, but unfortunately, the blog software gave me an exception message. &amp;nbsp;So I'm posting it here. &amp;nbsp;I hope you see it.&lt;/p&gt;
&lt;p&gt;Wow. &amp;nbsp;I take it as a compliment that you took the time to offer such a lucid and detailed counterpoint to my post. &amp;nbsp;I respect your opinion and I'm glad you shared it. &amp;nbsp;(as you probably guessed, I'm not swayed by your arguments, but I am impressed with amount of detail and considerable knowledge of your field you offer.)&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;-- Nick&lt;/p&gt;
</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1920458</link><pubDate>Tue, 20 Mar 2007 19:51:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1920458</guid><dc:creator>jamet123</dc:creator><description>&lt;p&gt;Interesting post though I think you miss the point on rules. It is not (mostly) about executing the rules but about managing and evolving them. That's where business rules management systems (which include a rules engine) shine and outperform any pattern that involves writing a bunch of code ;-)&lt;/p&gt;
&lt;p&gt;JT&lt;/p&gt;
</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1922886</link><pubDate>Wed, 21 Mar 2007 05:52:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1922886</guid><dc:creator>shige</dc:creator><description>&lt;p&gt;sorry to interrupt.very curious topic! I'm an application developer and &amp;nbsp;confused a little. Nick is talking about just Rule Engine,right? jamet123 is talking about BRMS,isn't it? I just have thought that dependency injection and Rule Engine help each other on the application code, by the way.&lt;/p&gt;</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1935638</link><pubDate>Fri, 23 Mar 2007 10:27:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1935638</guid><dc:creator>NickMalik</dc:creator><description>&lt;p&gt;Hi JT,&lt;/p&gt;
&lt;p&gt;I believe that my post mentioned the &amp;quot;point&amp;quot; of isolating the rules so that they can be managed. &amp;nbsp;I believe I also made the &amp;quot;point&amp;quot; that only a small subset of the actual rules CAN effectively be encoded in a rules engine. &amp;nbsp;That means that some rules are still in the &amp;quot;bunch of code,&amp;quot; reducing the effectiveness of the whole rules-engine concept.&lt;/p&gt;
&lt;p&gt;Of the 20% of the rules that an engine can handle, then a BRMS is useful. &amp;nbsp;For the other 80%, it's useless. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, when you decide to embed a rules engine in an application, you increase the cost to the application, and decrease the performance, efficiency and maintainability dramatically. &amp;nbsp;Those are prices that you pay to do what... maintain a subset of the rules?&lt;/p&gt;
&lt;p&gt;The price is high and the benefit is low. &amp;nbsp;QED&lt;/p&gt;
</description></item><item><title>re: Perhaps it is time to declare victory in the battle of Rules Engines vs. Dependency Injection</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#1935646</link><pubDate>Fri, 23 Mar 2007 10:34:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1935646</guid><dc:creator>NickMalik</dc:creator><description>&lt;p&gt;To Shige and Ernst,&lt;/p&gt;
&lt;p&gt;Thank you for your thoughtful responses. &amp;nbsp;Yes, injection is often used inside rules engines, and they are not incompatible. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The point I was trying to make is that any situation that forces you to go out of process to execute the rules is counterproductive. &amp;nbsp;A framework, on the other hand, that runs in process with the app, that allows injection of modules that implement rules, that is fine. &amp;nbsp;A framework inside the rules engine, even if it allows injection of an execution module, is still outside the process boundaries.&lt;/p&gt;
&lt;p&gt;Frameworks are fine. &amp;nbsp;It is cool if some of the &amp;quot;out of the box&amp;quot; functionality in that framework is the ability to execute scripted rules or generic rules, because (a) the value of the engine is not in the generic execution but in the injection framework, and (b) you can execute the rules in the location in the code where it is needed without having to package up the current system state and pass it out of process for evaluation.&lt;/p&gt;
&lt;p&gt;I've seen rules engines work... when the application is written in the rules engine environment itself. &amp;nbsp;In that case, you have the rules running in process with the app. &amp;nbsp;It is the parallel to my concept. &amp;nbsp;If you can't take the mountain to the man, take the man to the mountain.&lt;/p&gt;
</description></item><item><title>New and Notable 148</title><link>http://blogs.msdn.com/nickmalik/archive/2007/03/06/perhaps-it-is-time-to-declare-victory-in-the-battle-of-rules-engines-vs-dependency-injection.aspx#9170308</link><pubDate>Wed, 03 Dec 2008 18:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9170308</guid><dc:creator>Sam Gentile's Blog</dc:creator><description>&lt;p&gt;Still real tired from my Oklahoma trip , partying with Raymond sure is exhausting-). Agile/Development Tools On my short list for some time now, is to switch from NUnit to the definitely superior MbUnit. My friend Andrew has done some great work with&lt;/p&gt;
</description></item></channel></rss>