Installing Drools with Business Central and KIE Server (via Docker Compose)

Step-by-step guide to installing Drools with Docker. Learn how to set up Business Central and KIE Server, deploy rules, and verify your installation.

Understanding the Components

Before installing, it’s important to understand how the Drools ecosystem works:

  • Drools (BRM/Rule Engine)
    Drools is the core rules engine. It executes your business rules written in DRL (Drools Rule Language) or managed via decision tables, guided rules, or DMN models.
  • Business Central
    Business Central is the web-based workbench for authoring, testing, and managing business rules, processes, and decision models. It provides a UI for business users and developers to collaborate.
    ➝ Think of it as the “IDE” for Drools, but in a browser.
  • KIE Server
    KIE Server is the runtime execution server. It runs the rules and processes deployed from Business Central. Once you design and package a project in Business Central, you deploy it to KIE Server for execution.
    ➝ Think of it as the “production runtime” for your rules.
  • Relationship
    Business Central controls and manages projects, while KIE Server executes them.
    Business Central communicates with KIE Server via REST APIs (the KIE_SERVER_CONTROLLER setting in the Docker config links them).

See our full article on this section:


Installation with Docker Compose

Steps to Install

Here’s the provided docker-compose.yml (simplified for explanation):

version: "3.8"

services:
  business-central:
    image: jboss/drools-workbench-showcase:latest
    container_name: business-central
    ports:
      - "8080:8080"
    environment:
      - KIE_SERVER_CONTROLLER=http://kie-server:8080/kie-server/services/rest/server
      - KIE_SERVER_CONTROLLER_USER=admin
      - KIE_SERVER_CONTROLLER_PWD=admin
      - KIE_SERVER_USER=admin
      - KIE_SERVER_PWD=admin
      - KIE_MAVEN_REPO=http://business-central:8080/business-central/maven2
    volumes:
      - ./data/businesscentral/data:/opt/jboss/wildfly/standalone/data
      - ./data/maven:/opt/jboss/.m2/repository
    networks:
      - kie-net

  kie-server:
    image: jboss/kie-server-showcase:latest
    container_name: kie-server
    ports:
      - "8180:8080"
    environment:
      - KIE_SERVER_ID=kie-server
      - KIE_SERVER_LOCATION=http://kie-server:8080/kie-server/services/rest/server
      - KIE_SERVER_CONTROLLER=http://business-central:8080/business-central/rest/controller
      - KIE_SERVER_CONTROLLER_USER=admin
      - KIE_SERVER_CONTROLLER_PWD=admin
      - KIE_SERVER_USER=admin
      - KIE_SERVER_PWD=admin
      - KIE_MAVEN_REPO=http://business-central:8080/business-central/maven2
    volumes:
      - ./data/kieserver/data:/opt/jboss/wildfly/standalone/data
      - ./data/maven:/opt/jboss/.m2/repository
    networks:
      - kie-net

networks:
  kie-net:
    driver: bridge

  1. Save the file as docker-compose.yml.
  2. Run Docker Compose in the same directory:
docker-compose up -d

Wait for containers to start (it may take a few minutes on the first run as images are downloaded).

Accessing the Applications

Business Central UI

Open http://localhost:8080/business-central

Credentials:

  • Username: admin
  • Password: admin

You will see home page like below:

That’s verify your business central up and running.

KIE Server REST API

Open http://localhost:8180/kie-server/services/rest/server

Credentials:

  • Username: admin
  • Password: admin

You will see XML content like below:

<response type="SUCCESS" msg="Kie Server info">
    <kie-server-info>
        <capabilities>KieServer</capabilities>
        <capabilities>BRM</capabilities>
        <capabilities>BPM</capabilities>
        <capabilities>CaseMgmt</capabilities>
        <capabilities>BPM-UI</capabilities>
        <capabilities>BRP</capabilities>
        <capabilities>DMN</capabilities>
        <capabilities>Swagger</capabilities>
        <location>
            http://kie-server:8080/kie-server/services/rest/server
        </location>
        <messages>
            <content>
                Server KieServerInfo{serverId='kie-server', version='7.61.0.Final',
                name='kie-server',
                location='http://kie-server:8080/kie-server/services/rest/server',
                capabilities=[KieServer, BRM, BPM, CaseMgmt, BPM-UI, BRP, DMN, Swagger]',
                messages=null', mode=DEVELOPMENT}started successfully at Sat Sep 06 15:55:33 UTC
                2025
            </content>
            <severity>INFO</severity>
            <timestamp>2025-09-06T15:55:33.682Z</timestamp>
        </messages>
        <mode>DEVELOPMENT</mode>
        <name>kie-server</name>
        <id>kie-server</id>
        <version>7.61.0.Final</version>
    </kie-server-info>
</response>

that’s verify your kie-server up and running.

Test the installed Drools

Define a mocked rule

Login to Business Central, create new project, open Menu → Projects, then create new project:

Once added, Business Central will open project “hello-rules”, click add new asset:

Select DRL:

set name = hello.drl

define the rule:

package com.myspace.hello_rules;

declare Message
    message : String
    status  : String
end

rule "Hello Drools"
when
    $m : Message( message == "Hello Drools" )
then
    // set status so we can inspect the object after rules fired
    $m.setStatus("processed");
    System.out.println("Rule fired for message: " + $m.getMessage());
end

Save!

Deploy mocked rule

Deploy the rule to KIE-Server. Open project page in Business Central

Click “deploy”:

Verify container exists on KIE Server

From your host shell:

curl.exe -u admin:admin -H "Accept: application/json" http://localhost:8180/kie-server/services/rest/server/containers

you will see:

{
  "type" : "SUCCESS",
  "msg" : "List of created containers",
  "result" : {
    "kie-containers" : {
      "kie-container" : [ {
        "container-id" : "hello-rules_1.0.0-SNAPSHOT",
        "release-id" : {
          "group-id" : "com.myspace",
          "artifact-id" : "hello-rules",
          "version" : "1.0.0-SNAPSHOT"
        },
        "resolved-release-id" : {
          "group-id" : "com.myspace",
          "artifact-id" : "hello-rules",
          "version" : "1.0.0-SNAPSHOT"
        },
        "status" : "STARTED",
        "scanner" : {
          "status" : "DISPOSED",
          "poll-interval" : null
        },
        "config-items" : [ {
          "itemName" : "KBase",
          "itemValue" : "",
          "itemType" : "BPM"
        }, {
          "itemName" : "KSession",
          "itemValue" : "",
          "itemType" : "BPM"
        }, {
          "itemName" : "MergeMode",
          "itemValue" : "MERGE_COLLECTIONS",
          "itemType" : "BPM"
        }, {
          "itemName" : "RuntimeStrategy",
          "itemValue" : "SINGLETON",
          "itemType" : "BPM"
        } ],
        "messages" : [ {
          "severity" : "INFO",
          "timestamp" : {
  "java.util.Date" : 1757180128747
},
          "content" : [ "Container hello-rules_1.0.0-SNAPSHOT successfully created with module com.myspace:hello-rules:1.0.0-SNAPSHOT." ]
        } ],
        "container-alias" : "hello-rules"
      } ]
    }
  }
}

meaning that Business Central and KIE-Server connected each other.


Leave a Reply