CompileFlow

September 9, 2026 · View on GitHub

CompileFlow

CompileFlow

A high-performance process engine for Java

CompileFlow Workbench Server CI Java Core CI Workbench CI OpenSSF Scorecard Java License

GitHub Stars GitHub Forks

中文 README

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.

Key capabilities

  • ⚡ 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.

Choose a product surface

NeedUse
In-process, low-latency executionProcessEngine with compileflow-tbbpm or compileflow-bpmn
Immutable versions, aliases, and canary rolloutCompileFlow Deploy
Persisted waits, timers, external operations, and restart recoveryCompileFlow Durable
Browser modeling, release management, and execution inspectionCompileFlow Workbench

These surfaces are independent. Adding Deploy, Durable, or Workbench does not make ProcessEngine.execute(...) calls persistent; persistent execution uses the Durable API.

Core API

TypePurpose
ProcessEngineThread-safe process execution entry point
ProcessRefReference to a published version or alias
ProcessDefinitionProcess 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.

Quick start

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 -DskipTests

Add 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.

Execution model

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.

Documentation

GoalEnglish中文
Start using the engineQuick Start快速开始
Configure and size an applicationConfiguration配置指南
Use persisted executionDurable ProcessDurable Process
Understand the architectureArchitecture架构文档
Check supported surfacesSupported Surfaces支持范围与兼容性
Operate a deploymentOperations运维手册
ContributeContributing贡献指南(英文)

The documentation center is the canonical index for task guides, specifications, architecture, and module documentation. Use Supported Surfaces for compatibility decisions.

Build and test

Run the embedded-engine integration suite:

./mvnw -B test -pl compileflow-integration-tests -am

Repository-specific verification commands are documented in the testing guide and CONTRIBUTING.md.

Adopters

Alibaba Group
Alibaba Group
Taobao
Taobao
Tmall
Tmall
Alipay
Alipay
Cainiao
Cainiao
Alibaba Cloud
Alibaba Cloud
AliExpress
AliExpress
Lazada
Lazada
Fliggy
Fliggy
…

Community

License

CompileFlow is available under the Apache License 2.0.