Skip to main content

Develop with Kotlin

View Markdown

Application code depends on one module, orchestration-api. It contains the whole port:

TypeRole
Orchestratorstart work, get a RunHandle back; run, start, handle
Runnerthe worker side: register handlers and flows for a queue, start()
TaskType, TaskHandler, TaskContextone unit of work
FlowType, FlowDefinition, FlowScopea durable program
RunOptions, TaskOptions, RetryPolicybudgets and policies
RunHandle, FlowHandle, RunStatus, RunStatewhat you hold after starting

Two engines implement it:

  • orchestration-engine: the orchestrator, over the wire. Production.
  • orchestration-memory: the same port in-process, no server. Tests, and the proof that the port is engine-neutral.

Both pass the same 40-test contract, shipped as test fixtures of the api module.