Red Hat
Aug 21, 2014
by Charles Moulliard

We have worked hard this year to improve the Drools - Business Logic integration Platform to make it OSGI compliant. The modules of the project have been reviewed to :

  • Export/import correctly the packages required by the bundles when deployed into an OSGI container like Apache Felix,
  • Register some OSGI services,
  • Design a new OSGI classloader to load the Drools resources (drl, bpmn, bpmn2) packaged into the bundles

Moreover, the project provides now a features XML file to provision the different modules (drools, drools-decision-table,bpm, …) into JBoss Fuse or Apache Karaf

Since the release 6.1.0 of Drools/jBPM, you can capitalize the efforts done and deploys BRMS onto the JBoss Fuse Java Container which is a Multi-Technology OSGI Platform running your Integration projects with these technologies :

Typically a BRMS project can be designed as a bundle containing the knowledge repository, session, resources and rules to be fired. Using the BundleActivator class, the project can be started directly by the OSGI container when the event “start” will be called. This is not the only thing that you can do as you can also use a Dependency Injection framework supported by JBoss Fuse product :

to design your architecture. No matter which injection mechanism you prefer to use, JBoss Fuse will scan the bundles deployed and will create with the classloader of the bundle create the corresponding Application Context (Spring, Blueprint, Weld, …) to register the beans discovered as singletons objects.

To help you to start your project, a quickstart github repository has been created covering different scenario presented here They cover the different strategies described below but also how to externalize the rules, use rules defined in an Microsoft Excell spreadsheet and run some business processes (using or not a persistent layer).

One of the key benefit to use BRMS on the JBoss Fuse platform is that you can integrate it easily with the Camel Integration framework to collect data from different sources, validate or enrich them and next
inject such info into the Ksession before to fire the rules. Such a scenario is described here and a quick demo is attached to this post too to show you BRMS and Apache Camel in action.

BRMS & Camel Live !

Original Post