CompileFlow is a lightweight, high-performance, embeddable, and extensible process engine for Java. It supports TBBPM and the documented subset of BPMN 2.0.
The CompileFlow Process engine focuses on in-memory, stateless execution and is used by core systems across Alibaba business platforms, including Taobao, Alibaba Cloud, and international businesses.
CompileFlow Durable persists long-running process state so execution can resume after waits, timers, external operations, or an application restart.
The visual editor turns complex business logic into workflows that business and engineering teams can understand and maintain together. Java Actions connect application services, rules, and Agent calls in the same process. CompileFlow Deploy and Durable add versioned rollout and persistent execution.
- ⚡ High-performance execution — Choose compiled or interpreted execution; compiled mode generates and reuses Java runtimes.
- 🧩 TBBPM and BPMN — Use one engine API and runtime model for TBBPM and the documented subset of BPMN 2.0.
- ✅ Java and Spring Boot integration — Embed a thread-safe engine directly or through Spring Boot, with declared variables, preflight validation, typed results, and stable errors.
- 🚦 Versioned deployment — Publish immutable versions, update aliases with revision checks, and route deterministic canary traffic with CompileFlow Deploy.
- ⏱️ Durable execution — Persist waits, timers, and external-operation state, then resume execution after an application restart.
- 🖥️ Visual Workbench — Model and validate processes in the browser, then publish, monitor, and inspect execution through the Workbench Server.
- 🤖 Agent workflow orchestration — Compose Agent calls with service actions and business rules through Java Actions.
| Need | Use |
|---|---|
| In-process, low-latency execution | ProcessEngine with compileflow-tbbpm or compileflow-bpmn |
| Immutable versions, aliases, and canary rollout | CompileFlow Deploy |
| Persisted waits, timers, external operations, and restart recovery | CompileFlow Durable |
| Browser modeling, release management, and execution inspection | CompileFlow Workbench |
These surfaces are independent. Adding Deploy, Durable, or Workbench does not make ProcessEngine.execute(...) calls
persistent; persistent execution uses the Durable API.
| Type | Purpose |
|---|---|
ProcessEngine |
Thread-safe process execution entry point |
ProcessRef |
Reference to a published version or alias |
ProcessDefinition |
Process definition supplied inline or from the classpath |
ProcessResult<T> |
Typed result or failure with stable error information |
Keep one long-lived ProcessEngine for each distinct configuration. A single engine discovers every installed
frontend, while each definition carries its model type. Close the engine with the application lifecycle; do not
create an engine per request.
CompileFlow supports JDK 17, 21, and 25. Generated bytecode targets Java 17.
Build and install the required modules from source:
./mvnw install -pl compileflow-spring-boot-starter-tbbpm -am -DskipTestsAdd the Spring Boot starter:
<dependency>
<groupId>com.alibaba.compileflow</groupId>
<artifactId>compileflow-spring-boot-starter-tbbpm</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>Inject the application-scoped engine and execute an explicit definition:
@Service
public class OrderService {
private final ProcessEngine processEngine;
public OrderService(ProcessEngine processEngine) {
this.processEngine = processEngine;
}
public OrderResult execute(OrderRequest request) {
ProcessDefinition definition = ProcessDefinition.classpath(
ProcessModelType.TBBPM, "order.process",
"flows/order-process.bpm");
return processEngine.execute(
definition,
request,
OrderResult.class,
ProcessExecutionOptions.defaults())
.orElseThrow();
}
}For a complete project, run
examples/spring-boot-basic. The
quick-start guide also covers standalone composition, preflight, warm-up, and shutdown.
For a fuller HTTP example with gateways, a process call, parallel work, iteration, retries, and controlled errors, run
examples/spring-boot-order-fulfillment.
flowchart LR
definition["TBBPM or BPMN definition"]
engine["ProcessEngine"]
semantic["Validated process model"]
compile["COMPILED: generate and compile Java"]
interpret["INTERPRETED: execute the model directly"]
runtime["Process runtime"]
result["ProcessResult"]
definition --> engine --> semantic
semantic --> compile --> runtime
semantic --> interpret --> runtime
runtime --> result
runtime --> engine
See Supported Surfaces for executable nodes, process formats, and public compatibility commitments.
| Goal | English | 中文 |
|---|---|---|
| Start using the engine | Quick Start | 快速开始 |
| Configure and size an application | Configuration | 配置指南 |
| Use persisted execution | Durable Process | Durable Process |
| Understand the architecture | Architecture | 架构文档 |
| Check supported surfaces | Supported Surfaces | 支持范围与兼容性 |
| Operate a deployment | Operations | 运维手册 |
| Contribute | Contributing | 贡献指南(英文) |
The documentation center is the canonical index for task guides, specifications, architecture, and module documentation. Use Supported Surfaces for compatibility decisions.
Run the embedded-engine integration suite:
./mvnw -B test -pl compileflow-integration-tests -amRepository-specific verification commands are documented in the testing guide and CONTRIBUTING.md.
Alibaba Group |
Taobao |
Tmall |
Alipay |
Cainiao |
Alibaba Cloud |
AliExpress |
Lazada |
Fliggy |
… |
CompileFlow is available under the Apache License 2.0.
