Public boundary
/api/v1 and worker protocol v1 expose stable DTOs, typed errors,
pagination, idempotency and trace propagation.
Abada is a self-hosted BPMN orchestration platform. Clients and workers use the versioned API, any engine replica may handle a command, and PostgreSQL owns the workflow truth.
flowchart TB
subgraph Clients
T[Tenda task application]
R[Orun operations application]
W[External workers and Java SDK]
A[API clients]
end
P[Traefik or trusted ingress]
subgraph Engine cluster
E1[Engine replica 1]
E2[Engine replica 2]
EN[Engine replica N]
end
DB[(PostgreSQL)]
O[OpenTelemetry collector]
IDP[OIDC identity provider]
T --> P
R --> P
W --> P
A --> P
P --> E1
P --> E2
P --> EN
IDP -. signed JWT .-> E1
IDP -. signed JWT .-> E2
IDP -. signed JWT .-> EN
E1 <--> DB
E2 <--> DB
EN <--> DB
E1 --> O
E2 --> O
EN --> O
Public boundary
/api/v1 and worker protocol v1 expose stable DTOs, typed errors,
pagination, idempotency and trace propagation.
Execution boundary
Core command services reconstruct state and execute the supported BPMN semantics inside explicit transactions.
Persistence boundary
JPA repositories and Flyway migrations map durable definitions, instances, tasks, subscriptions, jobs, variables, history and outbox records.
Presentation boundary
Tenda and Orun consume public DTOs. They do not define authorization or reconstruct authoritative workflow history.
| State | Authority | Replica memory policy |
|---|---|---|
| Definitions and versions | PostgreSQL deployment rows | Parsed immutable model may be cached by deployment ID |
| Instances, tokens and joins | PostgreSQL | Command-local only |
| Variables and user tasks | PostgreSQL | Detached read snapshots or command-local models |
| Subscriptions, timers and work | PostgreSQL | Acquired through locks and leases |
| Audit history and lifecycle events | PostgreSQL | Lifecycle delivery originates from the outbox |