Turning the Tables on Rule Creation

DR

Dan Reynolds

02/05/2014

Put Your Information to Work

In the world of application development, requirements are stored in a variety of ways. As somebody who helps InRule customers implement our technology, I’ve seen great documentation and…well…some that’s not so great. Regardless of the quality though, one trend that we see is people leveraging Microsoft Excel to store requirements. Why not, right? It’s portable and a great way to organize information in a meaningful and structured format.

But how do you take this wealth of static information and transform it into actual rules that can be used by your application?

In most cases, rule authors manually work through the spreadsheets to build those rules one-by-one. Unfortunately, this sometimes ends up being the most practical solution when you have variations in the requirements or in the desired rule output. However, if your spreadsheet data follows a fixed pattern and you are willing to write a bit of code using the InRule SDK, this information can be leveraged to automate the process of building rules. This approach not only saves time up-front when building rules, it also ensures consistency in the generated rules, as well as minimizing future rework.

Great! So how do you do it? Enter irAuthor Extensions!

Extensions in irAuthor

Simply put, an Extension is a .NET assembly that implements specific interfaces and leverages the rule authoring framework exposed by the InRule SDK. The concept is very similar to a plugin. And like a plugin, an Extension gives you the ability to customize the rule authoring experience to meet your specific rule authoring needs. Any of the following can be accomplished with an irAuthor Extension:

  • Change the behavior of existing features
  • Add new features or functionality
  • Remove features you want to hide from your rule authors

In this example, our extension will add a new button to the irAuthor ribbon that will allow you to browse for a spreadsheet and import it as a Decision Table into your rule application.

Where Do I Start?

In this example, the Extension will import data from Excel spreadsheet to build a Decision Table in the rule application. The following spreadsheet has been used to determine if the established premium for the insurance policy in a given State or Province is sufficient. If it is not, the policy is invalid.

First, you need to determine which column(s) in the spreadsheet will be evaluated as conditions and which column(s) define the action(s) the rule should execute. This concept maps directly to the Decision Table construct, which is comprised of two parts, Conditions and Actions.

In this example, the first column in the spreadsheet holds the value for the State/Province. Each unique value that appears in that column should be created as an option in your State/Province condition. The screenshot below shows what that condition would look like in irAuthor: the condition has a recognizable name, maps to a field in the authoring model, and consists of all of the valid options the rule author can then select.

Once you’ve created your first condition, the remaining spreadsheet columns, Limit and Base Premium, can be handled in the same way.

Next, you need to add your Actions. While a Decision Table can support multiple Actions, in this example, there is only one called “Invalid”. The Actions are built in a very similar manner as the Conditions. The Action will simply mark the entire policy Invalid when the premium is too low.

The final step is to build the rows in the Decision Table using your Conditions and Actions. Each spreadsheet row will map to a row in the Decision Table. At execution time, when all of the Conditions in a row evaluate to true, the Action will execute. Once you have created all of the Decision rows, the Decision Table is complete and, as you can see below, it looks very similar to the spreadsheet, except that it can now be consumed by your application.

“Extending” An Offer

We touched on just one of the capabilities that you have at your disposal with the InRule SDK and irAuthor Extensions. Whether you want to add a new window into irAuthor to provide alternate ways to view your rules or replace existing functionality with some of your own, irAuthor Extensions allow you to customize your authoring experience to meet your needs.

I encourage you to download a free trial of our solution. In addition to the software, you also get access to the InRule Support site, which contains additional information on how to build an irAuthor Extension as well as working samples in our Extension Exchange library. Each sample contains an explanation of what the Extension does as well as the source code.

If you have any ideas for irAuthor Extensions that you would like to see added to the Exchange, please let us know by commenting on the post.

InRule for JavaScript | inrule said: "[…] couple of weeks ago we announced availability of InRule® for JavaScript through an early adopter program. To our knowledge this is […]".
Dynamic Surveys in Dynamics CRM Part II: Managing Dependencies | inrule said: "[…] this post makes extensive references to my preceding post, Surveys in Dynamics CRM Part I: Don’t Be a Monkey With Your Survey. If you are the type of person who likes to get the full story, you should go back and read the […]".
Josh Elster said: "In the time since this post was published, I've added (via a PR) full Windows Containers example code, DOCKERFILEs and scripts. They share common ancestry with the GH Gists I posted earlier, but are more up-to-date and tested. Here's a direct link to that sub-folder: https://github.com/InRule/Samples/tree/master/Developer%20Samples/WindowsContainers Now that our Samples repository is public, feel free to file Issues if you have problems or features you'd like to see implemented. If you have something you'd like to contribute, then by all means do so! The contributor guidelines and process are listed in the root of the repository. Enjoy! I'll update the body of the post as well with this link.".