Using Oracle Data in the Business Rules Engine
- by Christopher House
Yesterday I started working on some new functionality that I had planned to implement using the Business Rules Engine. As I got further into it, I realized that some of my rules were going to need to reference some data that resides in an Oracle database. I knew the Business Rules Composer supports using DataConnections and TypedDataTables, but I’d never used this functionality myself, so I wasn’t so sure how it would work with Oracle. As it turns out, it’s very do-able, there’s just little hoop you need to jump through. I fired up BRC and my suspicions were quickly confirmed. BRC only recognizes SQL Server databases when it comes to editing rules. Not letting that deter me, I decided to see if I could “trick” BRE into using Oracle data. On my local SQL server, I created a new database and in that database, created a table that matched the schema of the table I wanted to use in the Oracle database. I then set about creating my rules, referencing the new SQL Server database everywhere I wanted to use Oracle data. Finally, I created a new class library and added a class that implements Microsoft.RuleEngine.IFactRetriever. In that class, I added the necessary code to get a DataSet from the Oracle server, wrap it in a TypedDataTable and assert it into the rule engine. It’s worth pointing out that in my IFactRetriever class, I made sure to set my DataSet name to the name of the database I’d referenced in the BRC and the DataTable’s name to the name of the table that I’d referenced in the BRC. After gac’ing the new class library and deploying my policy, I tested and everything worked as expected.