1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
本文件为 Claude Code (claude.ai/code) 在此仓库工作时提供指导。
`bpm-engine` 是一个用 Rust 编写的** token 驱动、持久化优先的 BPM 引擎**。它将长流程执行为持久化状态机,其中:
- ----
```bash
cargo build
cargo test --workspace
cargo test -p bpm-core
cargo test -p bpm-runtime
cargo test -p bpm-core -- test_token_name
cargo fmt
cargo clippy --workspace --all-targets -- -D warnings
```
```bash
cargo run -p bpm-server-rest
cargo run --example simple_process
cargo run -p bpm-worker-sdk --example payment
```
**Token** — 执行单元。代表在特定节点执行的授权。多个 token 实现并行。Token 状态转换被持久化。
**EngineEvent** — 驱动所有状态转换的不可变事件。处理器是确定性和事务性的。保证可观测性、可重放性和 crash 安全。
**ProcessInstance** — 持有 token 和变量的运行时容器。有生命周期:Running → Completed/Terminated。
**ExternalTask** — 委托给外部 worker 的工作。受租约保护(同一时间只有一个拥有者)。支持重试、超时和 crash 处理。
- --
- ---
引擎强制形式化不变式(见 `docs/invariants.md`):
- ---
- --
- -
- ----