Business Challenge
The client had a rule-driven system for invoices analysis, which could verify
that invoices conformed to certain rules. The system was slow: it could take up
to a minute to process a complex invoice. The system was not flexible: there
were a few Rule Templates that could be used to create new rules by changing
values of some parameters. Any new Rule Template could be created only by a
programmer, requiring significant efforts. The system was not interoperable
with other programs: it did not have any programmatic interface and it was
"hard-wired" to a database it used. The client requested development of
entirely new Rule engine, free of all shortcomings listed above.
Solution
At first, it was not clear if a solution can be developed having relatively
modest budget. The project started as Research & Development, mainly to
investigate if some new concepts could work. When the prototype was created, it
exceeded all expectations and quickly grew into the production system. The
application was developed on .NET platform, with all interfacing done through
Web Services. That solved the interoperability problems from the beginning. The
base for the Rules engine was a very simple programming language, tight with
the Object Model of the Invoice database. A Rule written in that language would
be translated into Transact-SQL on the fly and executed on SQL Server 2000.
That accelerated execution speed by thousand times. The users did not have to
use that programming language though. They would use already created
construction blocks - macros to create Rules. Each Rule would typically use 4-7
macros. To simplify users' life further, a Web-based interface was developed,
so that Rules could be created in a few clicks using the mouse. The system was
very flexible, since new macros could be developed by advanced users, not
requiring any recompilation or enhancing the engine.
|
Software and Services: C#, VB.NET, .NET Framework, MS SQL Server 2000, MS
IIS 5.0
|
Benefits
A relatively simple but powerful rules engine was created within limited
time-frame and budget. It is worth mentioning that the first version had been
developed even before Visual Studio.NET was officially released. The first
version showed much better performance than the previous system, while being
able to execute the existing rules and ready for new. There were about ten
times more rules created eventually. The Object Model was adaptable so the
engine could be configured to work on a different database or even in a
different business area. All interactions with the external systems done
through Web Services that allowed easy extensibility of the system.
Top
|