KIE :: Public API 8.41.0.Final API

KIE provides a knowledge-centric API, where rules and processes are first class citizens. The majority of KIE API is considered stable and should not change, experimental classes and APIs will be marked as such.

The most common interfaces you will use are:

  • org.kie.api.KieBase
  • org.kie.api.runtime.KieSession
  • org.kie.api.runtime.StatelessKieSession
  • org.kie.api.runtime.KieContainer
  • org.kie.api.builder.ReleaseId
  • org.kie.api.builder.KieScanner

Factory classes, with static methods, provide instances of the above interfaces. A pluggable provider approach is used to allow provider implementations to be wired up to the factories at runtime. The Factories you will most commonly use are:

  • org.kie.api.KieServices
  • org.kie.api.command.KieCommands
  • org.kie.api.io.KieResources

Typical example of loading and using knowledge resources (rules, processes, etc) found on classpath. By convention the KIE API expects file META-INF/kmodule.xml which is a marker file and also enables additional configuration. For very basic usage the file can just contain <kmodule xmlns="http://www.drools.org/xsd/kmodule"/>:

  KieServices kieServices = KieServices.Factory.get();
  KieContainer kieContainer = kieServices.getKieClasspathContainer();
  KieSession kieSession = kieContainer.newKieSession();
  try {
    kieSession.insert(new Fibonacci(10));
    kieSession.fireAllRules();
  } finally {
    kieSession.dispose();
  }

Drools 8 introduced Rule Unit API as a recommended style which provides an atomic module defining a set of rules and a set of strongly typed data sources:

  MeasurementUnit measurementUnit = new MeasurementUnit();
  RuleUnitInstance<MeasurementUnit> instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit);
  try {
    measurementUnit.getMeasurements().add(new Measurement("color", "red"));
    List<Measurement> queryResult = instance.executeQuery("FindColor").stream().map(tuple -> (Measurement) tuple.get("$m")).collect(toList());
  } finally {
    instance.dispose();
  }

All Packages KIE Base API Builder API Definition API Configuration API Runtime API Commands API Event API Time API Task API Other Packages 
Package Description
org.kie.api
Base KIE API classes.
org.kie.api.builder  
org.kie.api.builder.model  
org.kie.api.cluster  
org.kie.api.command  
org.kie.api.concurrent  
org.kie.api.conf  
org.kie.api.definition
All classes to create definitions, as built by the KieBuilder from artifact resources, can be found here.
org.kie.api.definition.process
The classes that make up a Process definition.
org.kie.api.definition.rule
The classes that make up a Rule definition.
org.kie.api.definition.type  
org.kie.api.event
Comprehensive event API for all parts of the platform.
org.kie.api.event.kiebase
Events emitted while updating the definitions in the KieBase.
org.kie.api.event.kiescanner
Events emitted by the KieScanner.
org.kie.api.event.process
Events emitted while process instances are executing.
org.kie.api.event.rule
Events emitted while rules are executing.
org.kie.api.fluent
Process Fluent API allows programmer to build an in memory representation of a bpmn file.
This information can later be used to build a KIE resource and execute the process .
org.kie.api.internal.assembler  
org.kie.api.internal.io  
org.kie.api.internal.runtime  
org.kie.api.internal.utils  
org.kie.api.internal.weaver  
org.kie.api.io
io library for working with Resources
org.kie.api.logger
Logger classes used to log the KieRuntime's execution.
org.kie.api.management  
org.kie.api.marshalling
Marshalling classes are used to marshall and unmarshal StatefulKieSessions
org.kie.api.persistence  
org.kie.api.persistence.jpa  
org.kie.api.pmml  
org.kie.api.remote  
org.kie.api.runtime
The runtime engine classes, including KieSession and StatelessKieSession.
org.kie.api.runtime.conf  
org.kie.api.runtime.manager  
org.kie.api.runtime.manager.audit  
org.kie.api.runtime.process
The process runtime classes.
org.kie.api.runtime.query  
org.kie.api.runtime.rule
The rule runtime classes.
org.kie.api.task  
org.kie.api.task.model  
org.kie.api.time
Classes related to calendars and time.