Experience in the use of BRS shows that little regard was paid to the encapsulation of business logic in the architecture of applications in use today, irrespective of whether these are host systems or server based systems. Business rules are for the most part closely interwoven with the technical parts of the program.
Seemingly minor modifications to business logic often precipitate significant program modifications. Exacerbating the problem is that if program documentation is available at all it is useless for understanding the business logic implemented due to the mixture of functional and technical aspects.
But, various flexible yet powerful technologies through out different languages make these things easier to design and code.
Business Rules Systems solve this problem. With these business logic is structured and encapsulated in the application to make it easy to change.
I am blindly pointing to the BRMS (Business Rules Management System) concepts, a hot thing in today's technology world. A lot of applications are designed to have these as their base of their application decision making process.
Some of them are,
- Microsoft Work Flow Engine
- BizTalk
- JAVA : Web logic
If you deeply look into WF and BizTalk applications, there must be something in the base to take a decision and based on the decision, the application takes the next step.
E.g. in WF you need to call purchase web service, if the total quantity is less than a defined benchmark.
So if we code this in .NET,
if (BalloonStore.TotalQuantity < 50)
{
(BalloonStore.CallWebservice == True)
}
So there is process engine, to check the value in "CallWebService", if it is true, then it starts the process of calling the web service and do the further processing.
In a normal and conventional way, we code these checking in the part of the process engine.
Now, the management decides, that "should be checked the color of the balloon" along with the quantity.
Again, normally, we open up the class or library and change the condition and compile, deploy etc...finally start working
And, definitely, without doubt, these are the nightmare to anybody who supports the application, code and the client
(I know, people will get irritated and curse the management for changing the rules often or the people who made such architecture of the application!!!!!!!!!!!!!).
And, big players like JAVA, Microsoft are just giving more importance to this, and they already changed the way we do the coding.
It is very much visible and practicable: If you ever worked with Work Flow, WPF or BizTalk etc. (Find out more about, run time loading rules, XAML, BizTalk Rule Engine, Work Flow Rule Engine)
SO, I VERY MUCH CONVINCED THAT, THIS IS THE WAY TO CODE AND MAKE FASTER AND FLEXIBLE
I was searching for a Business Rule Engine, which can be integrated to our application and providing an interface to change the rules in text/XML editor.
I cornered an application in JAVA; DROOLS and DROOLS.NET by Apache, a BRMS system, is matching our requirements. It is having a library and a simple way of coding your rules.
You use these libraries in .NET and JAVA and code it as you required. The rule files can be changed in runtime and no changed in your code is required.
package TestRules
import RulesData
rule "R1Domestic"
when
inputData : InputData (TravelType == "Domestic")

Join the conversation! Your thoughts help the community grow.