KIE :: Public API 8.37.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(); }
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.
|