2010/1/4 Ivanhoe Abrahams <[email protected]> > Hi all > > I have been playing around with Drools 5.0.1 running as a service in > Felix/Karaf. > I finally got it working using a very simple HelloWorld drools example (BTW > this is also my first stab at using Drools, so I'm no expert on that > framework). > > What I ended up with was. > 1. A bundle that starts/initializes the Drools service and exposes a method > which allows clients to call the Rules engine service. > 2. A domain Model bundle > 3. A fragment bundle which imports the exported packages from the domain > model bundle, as well as supplying the .drl file (which is the rules > engines' rule base) > 4. A client bundle which imports the exported packages from the model > bundle. > > The client then creates a model object, and calls the Drools service bundle > to execute the simple test. > The Service bundle is also the fragment-host for the fragment bundle. So in > that way it knows about the domain model, without explicitly declaring a > dependency on it. > > So my question is. Does the above seem right? > I have seen a couple of posts where the use of fragments are discouraged. > But I am not sure how to cleanly achieve the above scenario without > fragments. > > Also what bugs me about my solution above is that, since the Drools rules > engine does some bytecode enhancement. I eventually had to add import > package statements to the bundle which contains the domain model. This just > seems wrong because my Service bundle already imports packages from the > underlying rules engine. >
FYI, this article discusses bytecode enhancement in OSGi http://www.infoq.com/articles/code-generation-with-osgi which might provide some hints or alternative solutions So basically the question is, are there better ways to achieve above > modularization. > How does one write a service, which needs to operate on some domain model, > but without knowing what those domain models will be beforehand. > > Thankyou in advance > Ivanhoe > -- Cheers, Stuart

