go-bpm RU

Roadmap

Work is grouped by importance and complexity, from documentation to changes in the execution model. Completed tasks remain visible, crossed out and linked to documentation. Colors indicate relative effort.

This is a plan, without promised dates. See documentation for current behavior and BPMN limitations for unsupported features. Discuss priorities in GitHub issues.

Stage 1. Documentation#

Answers to the questions architects ask first, without changing the engine.

Execution semantics

At-least-once execution, task leases, retries after failure, idempotent methods and handlers, and when to use service tasks.

Waiting for external events

When to use messages, system-completed user tasks or polling service tasks, with examples and pitfalls.

Security

Protecting the API and console, deriving task identity from authentication and choosing safe process variables.

Changing processes

Compatible changes, removing elements with running instances and using KindPrefix for incompatible versions.

Reference architecture

A Kubernetes service with a dedicated engine database or a shared service database, including tradeoffs.

Migrating from Camunda 7

Reusing diagrams and DMN tables, rewriting delegates and expressions, and handling in-flight instances.

Stage 2. Operations and security#

Engine improvements that reduce custom production infrastructure.

Done

Prometheus metrics

Queue states, oldest task age, instance states, open user tasks and attempt durations through client_golang.

Documentation

API and console authorization

Resolve user identity and groups from a request instead of taking the task assignee from its body.

Operations audit log

Record who retried a task, edited variables or cancelled an instance, and when.

Done

History retention

engine.Retention removes old completed and cancelled instances with element/rule history and user tasks.

Documentation
Done

Engine hooks

engine.Hooks provides element events, service call wrappers for tracing, and instance failure callbacks for alerts.

Documentation
Done

Supply chain security

CI vulnerability checks, image SBOM and provenance, and keyless cosign signatures.

Documentation

Stage 3. Missing BPMN features#

Features built on waiting points, queued tasks and boundary timer races.

Done

Messages with key correlation

Receive tasks and intermediate catches wait for messages from HTTP or Go; TTL buffers early responses.

Documentation
Done

User task boundary timers

Escalate overdue work by cancelling a user task and following a different process path.

Documentation

Call activity and subprocess boundary events

Apply a deadline or error route to an entire child process.

Non-interrupting boundary timers

Send reminders or notifications without interrupting the activity.

Done

timeDate timers

Use an RFC 3339 deadline or a process variable for intermediate and boundary timers.

Documentation

timeCycle timers

Repeating timers for reminders and scheduled starts.

History partitioning

Partition bpm_history by time for predictable growth and partition-based cleanup.

Server load testing

Multiple service replicas sharing a database, p99 latency and PostgreSQL replica failover.

Stage 4. Advanced BPMN#

Changes that require richer execution semantics and compensation.

Done

Sequential multi-instance

Repeat tasks, subprocesses or call activities with a count and completion condition.

Documentation

Parallel multi-instance

Concurrent iterations and collection-driven work, such as approval by everyone in a list.

Compensation

BPMN saga rollback using compensating tasks.

Inclusive and event-based gateways

Conditional multi-branch selection and waiting for the first message or timer.

Message starts and interruptions

Start a process from an incoming event or interrupt an activity with a boundary message.

Camunda 7 generator attributes

Reuse Camunda 7 diagrams without redrawing them in a Camunda 8 modeler.

Design decisions#

  • Processes are deployed with service code and validated by compilation, tests and review.
  • PostgreSQL remains the storage and queue foundation.
  • Go remains the implementation language; call other services through service tasks.

Suggest an edit on GitHub