Drools is a rule engine, DMN engine and complex event processing (CEP) engine for Java.
  • Java 91.3%
  • Text 8%
  • GAP 0.2%
  • Go Template 0.1%
  • FreeMarker 0.1%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kusuma04-dev bda36f85a3
Some checks are pending
CI :: CI Tests / CiComputeBuildScopesTest (push) Waiting to run
CI :: Build / CI :: Build (Java 17) / ubuntu-latest (push) Waiting to run
CI :: Build / CI :: Build (Java 21) / ubuntu-latest (push) Waiting to run
Dev :: Tests / Dev scripts (push) Waiting to run
Dev :: Tests / make dev in a fresh clone (push) Waiting to run
Split Package Detection / check-split-packages (push) Waiting to run
[incubator-kie#7260] Migrate quarkus-resteasy to quarkus-rest (#7258)
* migrated quarkus resteasy to rest

---------

Co-authored-by: Kusuma04-dev <kusumalatha@apache.org>
2026-11-06 11:55:47 +05:30
.ci/jenkins
.github
.mvn
.openrewrite
bom
build-parent
docs
docsimg
drools-alphanetwork-compiler
drools-base
drools-beliefs
drools-commands
drools-compiler
drools-core
drools-decisiontables
drools-distribution
drools-drl
drools-drlonyaml-parent
drools-ecj
drools-engine
drools-engine-classic
drools-examples
drools-examples-api
drools-fastutil
drools-impact-analysis
drools-io
drools-kiesession
drools-legacy-test-util
drools-metric
drools-model
drools-mvel
drools-persistence
drools-quarkus-extension
drools-reliability
drools-retediagram
drools-ruleunits
drools-scenario-simulation
drools-serialization-protobuf
drools-templates
drools-test-coverage
drools-tms
drools-traits
drools-util
drools-verifier
drools-wiring
drools-xml-support
efesto
jbang-header
kie-api
kie-archetypes
kie-ci
kie-dmn
kie-drl
kie-internal
kie-maven-plugin
kie-memory-compiler
kie-no-dependency-management-enforcer-rule
kie-no-external-managed-dependency-enforcer-rule
kie-parent
kie-parent-drools
kie-pmml-trusty
kie-quarkus-build-parent
kie-test-util
kie-util
kogito-addons
kogito-api
kogito-apps-bom
kogito-apps-build-parent
kogito-apps-config
kogito-apps-integration-tests
kogito-apps-parent
kogito-apps-quarkus
kogito-apps-springboot
kogito-bom
kogito-build
kogito-codegen-modules
kogito-data-audit
kogito-data-index
kogito-drools
kogito-explainability
kogito-gradle-plugin
kogito-gradle-plugin-test
kogito-grafana-api
kogito-jbpm
kogito-jitexecutor
kogito-jobs
kogito-jobs-service
kogito-maven-plugin
kogito-maven-plugin-test
kogito-persistence-commons
kogito-quarkus
kogito-runtimes-parent
kogito-springboot
kogito-test-utils
kogito-trusty
kogito-workitems
optaplanner-benchmark
optaplanner-build
optaplanner-core
optaplanner-examples
optaplanner-parent
optaplanner-persistence
optaplanner-quarkus-integration
optaplanner-spring-integration
optaplanner-test
script
.asf.yaml
.git-blame-ignore-revs
.gitattributes
.gitignore
.rat-excludes
AGENTS.md
CLAUDE.md
CONTRIBUTING.md
devbox.json
devbox.lock
DISCLAIMER-WIP
LICENSE
Makefile
NOTICE
pom.xml
README.md
SECURITY.md

Apache KIE

Apache KIE logo

This is the main repository for Apache KIE (incubating). It contains the source code for:

  • Drools — a rule engine, DMN engine, and complex event processing (CEP) engine for Java.
  • OptaPlanner — a constraint solver for Java.
  • jBPM — a workflow engine, and BPMN engine for Java.
  • Kogito — a cloud-native runtime for highly scalable business automation solutions based on Drools and jBPM. Available for Quarkus, and Spring Boot.

Drools

Drools logo

The rule engine in Drools is a business rule management system with a forward-chaining and backward-chaining inference, allowing fast and reliable evaluation of business rules and complex event processing. A rule engine is also a fundamental building block to create an expert system which, in artificial intelligence, is a computer system that emulates the decision-making ability of a human expert.

Rules are defined in the DRL language, as source code or as Decision Table spreadsheets in Excel format.

The decision engine in Drools executes decision models. Decision models are a fundamental building block to separate decision logic from application code and put it in the hands of business experts.

Decisions models are defined in the DMN notation with expressions written in the FEEL language.

The complex event processing (CEP) engine in Drools detects patterns in streams of events, correlating facts over time with temporal operators, sliding windows, and automatic event expiration. It is a fundamental building block to react to situations that emerge from the combination of many events over time — such as fraud detection, systems monitoring, and IoT applications — rather than from any single event alone.

Event processing rules are defined in the DRL language too, with facts declared as events and evaluated by the rule engine running in stream mode.

OptaPlanner

OptaPlanner logo

The constraint solver in OptaPlanner optimizes planning and scheduling problems, such as vehicle routing, employee rostering, task assignment, and school timetabling. It combines optimization heuristics and metaheuristics — such as tabu search, simulated annealing, and late acceptance — with very efficient incremental score calculation to find good solutions to NP-hard problems in reasonable time.

Planning problems and their constraints are defined in plain Java, with domain classes annotated as planning entities and score rules written with the Constraint Streams API or in the DRL language.

jBPM

jBPM logo

The workflow engine in jBPM allows the definition and execution of business processes, bridging the gap between business analysts and developers by describing process logic in a notation both can understand. It supports long-running, stateful processes with human tasks, timers, events, and compensation, making it a fundamental building block to automate and monitor end-to-end business workflows.

Processes are defined in the BPMN 2.0 notation.

Kogito

Kogito logo

The runtime in Kogito executes business automation solutions as cloud-native microservices, building on Quarkus and Spring Boot to deliver fast startup, low footprint, and native compilation with GraalVM. It turns business assets into runnable microservices through build-time code generation, making it a fundamental building block to deploy rules, decisions, and processes as highly scalable microservices.

Kogito microservices are built using the same assets used by Drools and jBPM — DRL rules, DMN decisions, and BPMN 2.0 processes.


Releases

Officially, Apache KIE releases are source code releases. They are available at the Apache KIE :: Downloads, or directly at downloads.apache.org/incubator/kie, signed with the keys in KEYS — see the verification instructions.

For convenience, binary artifacts are published to Maven Central under the following groupIds:

  • org.kie
  • org.drools
  • org.jbpm
  • org.optaplanner
  • org.kie.kogito

To manage the versions of individual artifacts on your projects, import one of the BOMs:

  • org.drools:drools-bom
  • org.optaplanner:optaplanner-bom
  • org.kie.kogito:kogito-bom

There is no separate BOM for jBPM: its engine runs as part of Kogito, so the org.jbpm artifacts are managed by org.kie.kogito:kogito-bom.

All artifacts of a release share the same version, regardless of groupId.

Documentation

For the documentation of Drools, OptaPlanner, jBPM, and Kogito, please see Apache KIE :: Documentation

Documentation about this repository itself — its structure, build, and conventions — lives in the docs/ directory.

Get involved

Building and contributing

git clone https://github.com/apache/incubator-kie.git
cd incubator-kie
mvn clean install -DskipTests

See CONTRIBUTING.md for the contribution guide, and docs/BUILDING.md for build flags, test profiles, and troubleshooting.

License

Licensed under the Apache License, Version 2.0.


Apache KIE (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

Some of the incubating project’s releases may not be fully compliant with ASF policy. For example, releases may have incomplete or un-reviewed licensing conditions. What follows is a list of known issues the project is currently aware of (note that this list, by definition, is likely to be incomplete):

Some files, particularly test files, and those not supporting comments, may be missing the ASF Licensing Header If you are planning to incorporate this work into your product/project, please be aware that you will need to conduct a thorough licensing review to determine the overall implications of including this work. For the current status of this project through the Apache Incubator visit: https://incubator.apache.org/projects/kie.html