≡ Menu

First Look: FlexRule


FlexRule is a .Net business rules environment from Pliant Framework. The team began development on a free product in 2007 and commercialized the product in 2010 by founding Pliant Framework a product and services company. The product has a runtime, designer, repository (vault) and server. The product is under active development with releases happening regularly.

FlexRule Designer is a Windows IDE with an editor, validation/test and a debugger. There are run time engines (including a RETE engine.) and a FlexRule server for deployment to your own or cloud servers with a repository and APIs. Projects can be saved in the file system or in a shared repository managed on the server. FlexRule supports flow rules, decision tables and various action other elements, storing all of them as XML.

A flow rule, what I would call a decision flow, allows you to link various  decision-making elements into a flow. For a flow rule you specify the input and output data and can link these to various data sources. The flow supports conditional branching, executing decision tables and calling other flows as well as executing procedural logic and actions etc. Notifications, such as warnings or errors, can be specified in the flow and will be included with the results data.

The decision table editor capability was developed using their Domain Specific Languages or DSL capabilities and allows simple conditions and actions to be added and removed, linking them to the parameters being managed in the project. While the-built-in editor is pretty straightforward, users can also use Excel or Google Docs to specify more complex decision tables. This can support merged cells, ranges, partial conditions in cells etc. Condition and action columns are mapped to the data structure and all this is checked when the spreadsheet is loaded into the designer. Single and multi-hit tables are supported.

The decision logic editor allows a set of rules to be defined – either representing each row in a decision table or being edited directly as a rule set. Multiple conditions can be combined, multiple actions taken by a rule and rules can be named. Every element can be color coded, collections can be processed as a set and various checks like Null performed. This is used both as an editor and as a way to display decision tables in a more verbose format to improve understanding and documentation.

A snippet of procedural logic can be selected to debug a flow, using the procedural logic to select test scenarios or pull data from a source. The debugger walks through the flow as you would expect with graphical highlighting of the steps as well as notifications, parameter monitoring and logging. When pieces of decision logic or a decision table, for instance, are included in the flow you can jump into them and debug those as well. There is also a search mechanism across the repository.

FlexRule is rule language agnostic allows custom languages be implemented for rules definition and execution. For instance, FlexRule offers support for BDD – Behavior driven development. While BDD historically uses a structured language that was made executable by developers writing code behind it. In FlexRule the language itself is executable. Editing this requires only a text editor.

More information on FlexRule is available here and Pliant Framework will be added as a vendor to the next release of our Decision Management Systems Platform Technology Report.


Comments on this entry are closed.