# apache/incubator-kie-kogito-runtimes architecture

> Architecture diagram of the GitHub repository apache/incubator-kie-kogito-runtimes, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/apache/incubator-kie-kogito-runtimes
- Repository: https://github.com/apache/incubator-kie-kogito-runtimes

## Overview

Kogito is a cloud-native business-automation runtime: applications start and manage process instances, whose workflows can evaluate decisions and interact with human tasks; runtime state can be persisted and scheduled work resumed. The repository also includes event-driven integrations, monitoring, prediction, explainability, and process visualization. The sampled sources establish process-management contracts, DMN evaluation, serialization, timer scheduling, and SVG-to-data-index calls; most other subsystem connections are inferred only as capabilities from the file tree, so their wiring is not shown.

Main entry points: [`jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/rule/DecisionRuleTypeEngineImpl.java`](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/rule/DecisionRuleTypeEngineImpl.java) (DMN evaluation), [`jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/ProcessInstanceMarshallerService.java`](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/ProcessInstanceMarshallerService.java) (Instance serialization), [`api/kogito-timer/src/main/java/org/kie/kogito/timer/impl/JDKTimerService.java`](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-timer/src/main/java/org/kie/kogito/timer/impl/JDKTimerService.java) (Timer service), [`addons/common/process-svg/src/main/java/org/kie/kogito/svg/AbstractProcessSvgService.java`](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/process-svg/src/main/java/org/kie/kogito/svg/AbstractProcessSvgService.java) (Process visualization)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Workflow runtime"]
  node_process_api["Process service"]
  node_bpmn["BPMN assembly"]
  node_dmn["DMN evaluation"]
  node_user_tasks["User tasks"]
end

subgraph group_state["State and scheduling"]
  node_task_storage[("Task persistence")]
  node_process_serialization["Instance serialization"]
  node_process_stores[("Process stores")]
  node_timers["Timer service"]
  node_jobs["Job management"]
end

subgraph group_integrations["Extensions and events"]
  node_event_driven["Event-driven APIs"]
  node_event_publish["Mongo event publisher"]
  node_kubernetes["Service discovery"]
  node_prediction["Task prediction"]
end

subgraph group_insight["Operations and insight"]
  node_monitoring["Monitoring"]
  node_explainability["Explainability"]
  node_svg["Process visualization"]
  node_data_index["Data index"]
end

node_app(("Application"))

node_app -->|"starts or manages"| node_process_api
node_dmn -->|"evaluates workflow rule"| node_bpmn
node_process_serialization -->|"serializes instance state"| node_process_stores
node_timers -.->|"schedules jobs"| node_jobs
node_svg -->|"fetches node instances"| node_data_index

click node_process_api "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-api/src/main/java/org/kie/kogito/process/ProcessService.java"
click node_bpmn "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/assembler/BPMN2AssemblerService.java"
click node_dmn "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/rule/DecisionRuleTypeEngineImpl.java"
click node_user_tasks "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskService.java"
click node_task_storage "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/JPAUserTaskInstances.java"
click node_process_serialization "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/ProcessInstanceMarshallerService.java"
click node_process_stores "https://github.com/apache/incubator-kie-kogito-runtimes/tree/main/addons/common/persistence"
click node_timers "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-timer/src/main/java/org/kie/kogito/timer/impl/JDKTimerService.java"
click node_jobs "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/jobs/management-common/src/main/java/org/kie/kogito/jobs/management/RestJobsService.java"
click node_event_driven "https://github.com/apache/incubator-kie-kogito-runtimes/tree/main/addons/common/events"
click node_event_publish "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/events/mongodb/src/main/java/org/kie/kogito/events/mongodb/MongoDBEventPublisher.java"
click node_kubernetes "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/kubernetes/src/main/java/org/kie/kogito/addons/k8s/EndpointDiscovery.java"
click node_prediction "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/human-task-prediction/api/src/main/java/org/kie/kogito/prediction/api/PredictionService.java"
click node_monitoring "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/monitoring/core/src/main/java/org/kie/kogito/monitoring/core/common/MonitoringRegistry.java"
click node_explainability "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/explainability/src/main/java/org/kie/kogito/explainability/ExplainabilityService.java"
click node_svg "https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/process-svg/src/main/java/org/kie/kogito/svg/AbstractProcessSvgService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_process_api,node_bpmn,node_dmn,node_user_tasks toneBlue
class node_task_storage,node_process_serialization,node_process_stores,node_timers,node_jobs toneAmber
class node_event_driven,node_event_publish,node_kubernetes,node_prediction toneMint
class node_monitoring,node_explainability,node_svg,node_data_index toneRose
class node_app toneIndigo
```

## Components

### Workflow runtime

- [Process service](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-api/src/main/java/org/kie/kogito/process/ProcessService.java): `api/kogito-api/src/main/java/org/kie/kogito/process/ProcessService.java`
- [BPMN assembly](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/assembler/BPMN2AssemblerService.java): `jbpm/jbpm-flow-builder/src/main/java/org/jbpm/assembler/BPMN2AssemblerService.java`
- [DMN evaluation](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/rule/DecisionRuleTypeEngineImpl.java): `jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/rule/DecisionRuleTypeEngineImpl.java`
- [User tasks](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskService.java): `api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskService.java`

### State and scheduling

- [Task persistence](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/JPAUserTaskInstances.java): `addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/JPAUserTaskInstances.java`
- [Instance serialization](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/ProcessInstanceMarshallerService.java): `jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/ProcessInstanceMarshallerService.java`
- [Process stores](https://github.com/apache/incubator-kie-kogito-runtimes/tree/main/addons/common/persistence): `addons/common/persistence`
- [Timer service](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/api/kogito-timer/src/main/java/org/kie/kogito/timer/impl/JDKTimerService.java): `api/kogito-timer/src/main/java/org/kie/kogito/timer/impl/JDKTimerService.java`
- [Job management](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/jobs/management-common/src/main/java/org/kie/kogito/jobs/management/RestJobsService.java): `addons/common/jobs/management-common/src/main/java/org/kie/kogito/jobs/management/RestJobsService.java`

### Extensions and events

- [Event-driven APIs](https://github.com/apache/incubator-kie-kogito-runtimes/tree/main/addons/common/events): `addons/common/events`
- [Mongo event publisher](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/events/mongodb/src/main/java/org/kie/kogito/events/mongodb/MongoDBEventPublisher.java): `addons/common/events/mongodb/src/main/java/org/kie/kogito/events/mongodb/MongoDBEventPublisher.java`
- [Service discovery](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/kubernetes/src/main/java/org/kie/kogito/addons/k8s/EndpointDiscovery.java): `addons/common/kubernetes/src/main/java/org/kie/kogito/addons/k8s/EndpointDiscovery.java`
- [Task prediction](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/human-task-prediction/api/src/main/java/org/kie/kogito/prediction/api/PredictionService.java): `addons/common/human-task-prediction/api/src/main/java/org/kie/kogito/prediction/api/PredictionService.java`

### Operations and insight

- [Monitoring](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/monitoring/core/src/main/java/org/kie/kogito/monitoring/core/common/MonitoringRegistry.java): `addons/common/monitoring/core/src/main/java/org/kie/kogito/monitoring/core/common/MonitoringRegistry.java`
- [Explainability](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/explainability/src/main/java/org/kie/kogito/explainability/ExplainabilityService.java): `addons/common/explainability/src/main/java/org/kie/kogito/explainability/ExplainabilityService.java`
- [Process visualization](https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/addons/common/process-svg/src/main/java/org/kie/kogito/svg/AbstractProcessSvgService.java): `addons/common/process-svg/src/main/java/org/kie/kogito/svg/AbstractProcessSvgService.java`
- **Data index**

### Other components

- **Application**

## Connections

- Application → Process service: starts or manages
- DMN evaluation → BPMN assembly: evaluates workflow rule
- Instance serialization → Process stores: serializes instance state
- Timer service → Job management: schedules jobs
- Process visualization → Data index: fetches node instances
