业务流架构师不是画流程图的岗位,而是把业务规则、组织协作、系统调用与异常补偿统一为可执行架构的人。只懂 BPMN 不懂工程,流程无法上线;只懂代码不懂业务,编排脱离现实。这个角色的核心价值,是在概率性智能与确定性流程之间画出清晰的边界。
第一层:业务建模。 用事件风暴识别命令、事件、聚合与策略,区分核心域与支撑域。输入是业务需求,输出是领域模型与状态图。
第二层:流程设计。 掌握 BPMN、状态机、Saga、事件驱动,明确同步与异步边界、人工节点与自动节点的划分。
第三层:工程实现。 幂等、重试、超时、补偿、持久化检查点、人工任务挂起与恢复。
第四层:治理度量。 SLA、积压、失败率、单均成本、审计合规、故障注入验证。
训练必须案例驱动,让学员在订单、退款、审批、履约场景中反复建模与重构。
业务流架构的第一原则是:永远不要让模型直接决定流程走向。LLM 是不可靠的外部依赖,同样的输入可能产出不同结果。流程的推进、回滚、补偿必须由状态机负责,模型只在受控节点做判断。
以退款审批流为例,状态机定义如下:
public enum RefundState {
INIT, CLASSIFYING, APPROVED, REJECTED, HUMAN_REVIEW, DONE, FAILED
}
public record RefundContext(
String orderId, String reason, double amount,
RefundState state, double confidence,
List<String> audit, int retryCount) {}状态推进由确定性规则驱动:
public class RefundFlow {
private final ChatClient llm;
private final RefundRepository repo;
public RefundState advance(RefundContext ctx) {
return switch (ctx.state()) {
case INIT -> classify(ctx);
case CLASSIFYING -> route(ctx);
case APPROVED -> executeRefund(ctx);
case REJECTED -> notifyUser(ctx);
case HUMAN_REVIEW -> createTicket(ctx);
case DONE, FAILED -> ctx.state();
};
}
private RefundState classify(RefundContext ctx) {
String raw = llm.prompt()
.system("只返回JSON:{decision, confidence}")
.user(ctx.reason())
.call().content();
var result = parseAndValidate(raw); // Schema 校验必做
ctx = ctx.withConfidence(result.confidence());
return RefundState.CLASSIFYING;
}
private RefundState route(RefundContext ctx) {
if (ctx.confidence() < 0.75) return RefundState.HUMAN_REVIEW;
if (ctx.amount() > 500) return RefundState.HUMAN_REVIEW;
return RefundState.APPROVED;
}
}关键设计:模型输出必须经过 Schema 校验,低置信度与超阈值金额强制转人工,流程推进由 switch 而非模型决定。这就是确定性外壳包裹概率性内核。
长流程必然有中间状态。退款执行到一半,库存服务超时了怎么办?答案是 Saga 模式——每个正向操作配一个补偿操作,失败时反向执行。
public record Step(String name, Runnable action, Runnable compensate) {}
public class Saga {
private final Deque<Step> executed = new ArrayDeque<>();
private final AuditLogger audit;
public void run(List<Step> steps) {
try {
for (Step s : steps) {
s.action().run();
executed.push(s);
audit.log(s.name(), "ok");
}
} catch (Exception e) {
audit.log("saga", "rollback start");
while (!executed.isEmpty()) {
Step s = executed.pop();
try {
s.compensate().run();
audit.log(s.name(), "compensated");
} catch (Exception ce) {
audit.log(s.name(), "compensate failed: " + ce.getMessage());
}
}
throw new FlowException("Saga 回滚完成", e);
}
}
}补偿操作必须幂等,且补偿失败要记录并转人工,不能静默吞掉。
所有写操作必须携带幂等键,超时重试不产生重复副作用。检查点让进程崩溃后能从最后节点恢复,而不是重跑整条链。
public class IdempotentExecutor {
private final RedisStore store;
public <T> T execute(String taskId, String step, Supplier<T> func) {
String key = "idem:" + taskId + ":" + step;
T cached = store.get(key);
if (cached != null) return cached; // 已完成,直接返回
T result = func.get();
store.setex(key, 86400, result);
return result;
}
public void runWithCheckpoint(FlowContext ctx, List<Step> steps) {
for (int i = ctx.cursor(); i < steps.size(); i++) {
Step s = steps.get(i);
execute(ctx.taskId(), s.name(), () -> { s.action().run(); return null; });
ctx = ctx.withCursor(i + 1);
store.set("cursor:" + ctx.taskId(), ctx.cursor());
}
}
}业务流架构师必须回答三个问题:流程卡在哪?为什么失败?谁在处理?
每个节点输出结构化日志,记录 traceId、节点名、耗时、模型 token 用量。当低置信度、重试超限、金额超阈值时,自动创建工单,等待人工介入后从检查点恢复。
public class HumanFallback {
private final Queue<Ticket> queue = new ConcurrentLinkedQueue<>();
public void escalate(String taskId, String reason, Map<String, Object> ctx) {
queue.offer(new Ticket(taskId, reason, ctx, Instant.now()));
}
public void resume(String taskId, String decision) {
// 人工处理后,从检查点恢复流程
FlowContext ctx = loadContext(taskId);
ctx = ctx.withState(decision.equals("approve")
? RefundState.APPROVED : RefundState.REJECTED);
advance(ctx);
}
}训练分四阶段:建模(输出事件表、状态图、异常清单)、编排(翻译为 DSL 或代码,定义网关与补偿)、压测(故障注入,验证幂等与恢复)、治理(接入监控,建立评估集与回归)。
合格者应能独立完成:一,用状态机建模业务流程并持久化;二,用接口与事件解耦入口、流程、工具;三,实现 Saga 补偿与幂等容灾;四,设计可观测与人工兜底;五,用故障注入验证恢复能力。
总结:业务流架构师的核心竞争力不在模型,而在编排。用状态机约束任务推进,用 Saga 保障容错,用幂等键兜住重复,用人工审批守住高风险决策。AI 能帮你快速起步,但生产级业务流的工程细节,得靠架构能力兜底。概率性智能需要确定性流程来驾驭,这正是业务流架构师不可替代的价值。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。