Skip to content

Instantly share code, notes, and snippets.

@vdevigere
Created December 17, 2015 15:31
Show Gist options
  • Save vdevigere/b8a4a22fd07e5a100671 to your computer and use it in GitHub Desktop.
Save vdevigere/b8a4a22fd07e5a100671 to your computer and use it in GitHub Desktop.
Loading a .drl file and running a stateless Drools 6 session using Scala.
import java.io.File
import java.util.{ArrayList, List}
import com.typesafe.scalalogging.LazyLogging
import org.kie.api.KieServices
import org.kie.api.io.ResourceType
/**
* Created by Viddu on 12/12/2015.
*/
object CampaignSelector extends LazyLogging {
// KieServices is the factory for all KIE services
val kieServices: KieServices = KieServices.Factory.get()
val file = new File("src/main/resources/com/github/rdc/CampaignRules.drl")
val resource = kieServices.getResources().newFileSystemResource(file).setResourceType(ResourceType.DRL)
val kFileSystem = kieServices.newKieFileSystem().write(resource)
kieServices.newKieBuilder(kFileSystem).buildAll()
// kieModule is automatically deployed to KieRepository if successfully built.
val kc = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId())
def select(context: Context): List[Campaign] = {
val ksession = kc.newKieSession()
val campaigns = new ArrayList[Campaign]()
ksession.setGlobal("campaignList", campaigns)
ksession.insert(context)
ksession.fireAllRules()
ksession.dispose()
return campaigns
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment