Scala & drools project skeleton updated with latest release of Drools (6.1), more features added (logging, test cases wired, drl errors catched up), and rules clean up.
Some advices coming from experiences with big scala drools projects (hundreds of rules) :
  • Scala case classes are perfect for your rules
  • Use only java collections within the classes used by your rules. Avoid the scala collections in that precise case but rely on collection.JavaConversions._ implicits to hide that restriction.
  • In knowledge bases only use declarative classes (declare) for internal usage, such as intermediary reasoning state.
  • To change the java compiler used by drools, use the following system property : "drools.dialect.java.compiler=JANINO". It will replace ECJ by Apache Janino, but you will have to provide the dependency yourself : "org.codehaus.janino" % "janino" % "2.5.16" (Use only this release, at least up to Drools 6.1)