Jesus Rodriguez has blogged recently on Tellago Devlabs’ release of an open source RESTful API for BizTalk Server Business Rules. This is an excellent addition to the BizTalk ecosystem and I congratulate Tellago on their work.
The Microsoft BRE was originally designed to be used as an embedded library in .NET applications.This is reflected in the implementation of the Rules Engine Update (REU) Service which is a TCP/IP service that is hosted by a Windows service running locally on each BizTalk box.The job of the REU is to distribute rules, managed and held in a central database repository, across the various servers in a BizTalk group. The engine is therefore distributed on each box, rather than exploited behind a central rules service.
This model is all very well, but proves quite restrictive in enterprise environments.The problem is that the BRE can only run legally on licensed BizTalk boxes.Increasingly we need to deliver rules capabilities across a more widely distributed environment.For example, in the project I am working on currently, we need to surface decisioning capabilities for use within WF workflow services running under AppFabric on non-BTS boxes.The BRE does not, currently, offer any centralised rule service facilities out of the box, and hence you have to roll your own (and then run your rules services on BTS boxes which has raised a few eyebrows on my current project, as all other WCF services run on a dedicated server farm ).
Tellago’s API addresses this by providing a RESTful API for querying the rules repository and executing rule sets against XML passed in the request payload.As Jesus points out in his post, using a RESTful approach hugely increases the reach of BRE-based decisioning, allowing simple invocation from code written in dynamic languages, mobile devices, etc.
We developed our own SOAP-based general-purpose rules service to handle scenarios such as the one we face on my current project.SOAP is arguably better suited to enterprise service bus environments (please don’t ‘flame’ me – I refuse to engage in the RESTFul vs. SOAP war).For example, on my current project we use claims based authorisation across the entire service bus and use WIF and WS-Federation for this purpose. We have extended this to the rules service.I can’t release the code for commercial reasons 🙁 but this approach allows us to legally extend the reach of BRE far beyond the confines of the BizTalk boxes on which it runs and to provide general purpose decisioning capabilities on the bus.
So, well done Tellago. I haven’t had a chance to play with the API yet, but am looking forward to doing so.