BLOGE
0.9.9-RC1在线版 · 编制 2026-11-02 · English
第 33 章 —— 迁移与对比
承诺: 读完本章后,你将能先写出约束,再决定是否选择 BLOGE;你会明确至少三种“不应选择 BLOGE”的情况,完成一份包含依据、反事实和第一步迁移实验的短 ADR。
学习目标
- 把选型问题改写成部署、所有权、恢复语义、验证治理和生态五类约束。
- 用硬停止条件淘汰不合适的候选,而不是给功能勾选表加总分。
- 区分“功能存在”“团队能运营”“证据足以发布”三种完全不同的结论。
- 为合适的候选设计可撤销的迁移第一步,不以全量改写验证选型。
- 写出一份短 ADR:选择、依据、反事实条件、迁移探针和退出标准。
前置条件
- 第 20 章 —— Spring 与生产环境接线 ——
你需要
bloge-spring的接线模型来理解 BLOGE 如何嵌入运行中的应用。 - 第 13 章 —— 持久执行 —— 检查点存储、 挂起/恢复和恢复。
- 第 21 章——单 JVM 里的调度与复杂度 —— 引擎无状态性、 虚拟线程调度和分片。
源示例
| 文件 | 展示内容 |
|---|---|
BpmnToDslExample.java | 端到端:翻译 BPMN XML → .bloge DSL → 编译 → 执行 |
bloge-bpmn-transformer/README.md | 翻译管道、支持范围、诊断信息和已知限制 |
order-process.bloge | 标准订单处理 graph —— 并行拉取、分支、韧性 |
OrderProcessingDslExample.java | DSL 编译、注册表接线和从 Java 执行 |
order-saga.bloge | Saga 风格的补偿:每个节点上的 compensate |
payment-wait.bloge | 长时间运行的 await,带事件关联和超时 |
batch-order-processing.bloge | foreach 并行扇出处理集合 |
SpringTicketTriageService.java | 在 Spring 服务中注入 GraphEngine 和 List<Graph> |
| ADR-001 | 核心零依赖决策 |
| ADR-002 | 虚拟线程优于 CompletableFuture |
| ADR-004 | 受 HCL 启发的 DSL 优于 YAML/JSON |