kotlin-cor is a lightweight Kotlin Multiplatform library that brings Chain of Responsibility pattern to business logic orchestration. It allows you to write complex business processes as readable, declarative code — instead of XML schemas or visual BPM designers.
kotlin-cor fills the gap between simple CoR pattern and full-blown workflow engines:
| Category | Tools | kotlin-cor Role |
|---|---|---|
| State Machines | Tinder/StateMachine, KStateMachine | Different — sequential processing, not state transitions |
| Workflow Engines | Temporal, Infinitic, Conductor | Lighter alternative — no infrastructure needed |
| Saga Pattern | Arrow Saga | Different — sequential pipeline, not distributed transactions |
| BPMS | Camunda, Flowable | Direct competitor — code-first instead of visual-first |
Primary Use Cases:
- Request handling pipelines (validation → authorization → processing → response)
- Business logic in microservices without external orchestration
- Projects requiring Kotlin Multiplatform (JVM + JS + Native)
- Teams wanting version control over business logic
- Code-first — Business logic in Kotlin, not XML/BPMN
- No infrastructure — Just a library, no external servers
- KMP — Single codebase for all platforms (JVM, JS, Native, Wasm)
- Readable — Chain reads like documentation
- Extensible — Easy to add custom handlers
See docs/comparison.md for detailed analysis.
val chain = rootChain<BizContext> {
validate("Validate request") {
validateNotEmpty("Check ID not empty")
validateFormat("Check ID format")
}
authorize("Check access rights") {
fetchUserPermissions()
checkObjectAccess()
}
fetchData("Load business object")
respond("Prepare response")
}.build()
runBlocking { chain.exec(BizContext(request)) }- Human-readable — business logic reads like a specification
- Kotlin Multiplatform — JVM, JS, Native, Wasm
- Condition-based execution —
on { condition }for conditional steps - Error handling —
exceptblocks for compensation/rollback - Parallel execution —
parallelblock for concurrent operations - Settings support — external configuration injection
// build.gradle.kts
dependencies {
implementation("com.crowdproj:kotlin-cor:${VERSION}")
}- Overview
- Core Concepts — Worker, Chain, Parallel, Loop
- DSL Reference
- Examples
- Contributing
- Version: ${VERSION}
- Kotlin: 2.3.20
- Platforms: JVM, JS, Linux, iOS, macOS, tvOS, watchOS, Wasm, Windows, Android Native