3

We're developing a WPF business application for internal users, but this problem could apply to WinForms easily as well. We want to leverage a business rules engine to make modifying the rules in the future easier as well as to possibly let the business folks to do it themselves at some point.

BizTalk (we're using 2010) exposes its Business Rules Engine and, while complex, this looks to be a potentially worthwhile solution especially if we look to using it for future applications as well. We've loaded up a virtual server with the developer edition to try it out, as well as its own SQL Server instance to run off of.

Everything I've read (example and example) seems to show adding the BRE assemblies to the application project as references and then using the provided classes to call and execute policies. But they also suggest that these assemblies require a license and we can't exactly license BizTalk for each of the dozens of possible end users that will use this WPF app.

Am I wrong about the licensing issue? Is it okay (and normal) to deploy the BRE assemblies with your app to all client machines in order for them to communicate with the BizTalk server where the policies exist? Should I look into exposing the BRE API via a Web Service or something? Are there any implementations out there already for doing that? Exposing the API like that seems like no small undertaking... or is it?

Dijkgraaf
  • 11,049
  • 17
  • 42
  • 54
Sean Hanley
  • 5,677
  • 7
  • 42
  • 53

1 Answers1

1

Microsoft says that the BRE is only available for server-side usage, e.g., in BizTalk orchestrations, ASP.NET apps, and Windows Services running on a server. The engine cannot be embedded in client applications.

From their FAQ on licensing:

All technical support and licensing for the BRE is only for server-side solutions. Note that you need to acquire a BizTalk Server 2010 license to utilize the Rules Engine, as the Rules Engine is considered server software requiring a valid processor license. The Rules Engine is not licensed separately from BizTalk Server.

Because of that, it may be worthwhile to look at using the BRE from an ASP.NET service that can be called from your WPF clients. If you want the clients to be able to update the rules, that is within the scope of the licensing agreement:

the Rules Composer is considered a client tool and may be installed on a separate internal client device to support development and testing of your BRE server solution

Be sure to check out Tellago's BRE Data Services API (available on CodePlex). They've done a lot of the work for you if you want to query the rules engine via your own service.

schellack
  • 10,144
  • 1
  • 29
  • 33
  • I _had_ seen Tellago's code, though I was wondering just how production-ready it really was. We certainly intend only to install BRE and/or BizTalk on a single server and just wanted to interact with the rules and such remotely from our client applications (and NOT to host the entire engine on their machines). So I guess exposing the API via a web service is the typical way to go? I've seen that, at a minimum, we would probably just need to deploy with our WPF applications the Microsoft.RuleEngine.dll assembly. I guess that still falls under the whole BRE package and thus license, huh? – Sean Hanley Dec 15 '11 at 17:35
  • if you were to use Tellago's code, then you shouldn't have to embed any of the BizTalk DLLs. They have an example on the page I linked to, showing how to execute a rule using an HTTP POST. Doing that means you should not have to include the Microsoft.RuleEngine.dll on the client. The client just needs to pass in the proper parameters. – schellack Dec 16 '11 at 20:25