知识卡片
工作流引擎的两大核心功能,与"跨边界即需要长期运行能力"
内容
工作流引擎会自动控制流程:定义并部署”流程蓝图”(用特定建模语言描述的流程定义),部署后可以启动流程实例,引擎负责跟踪维护每个实例的状态。以[[荒野大集成Ash的故事揭示的常见反模式]]的信用卡支付流程为例,简单情况下流程从”收到支付请求”这个开始事件,经过一个执行外部信用卡REST调用的服务任务,走到结束状态;关键在于信用卡服务中断时,工作流引擎能安全暂停任务,等服务恢复后自动触发重试。这引出工作流引擎最重要的两项功能:持久化状态(支持任务暂停)和任务调度(比如重试)——这两项正是Ash被迫手写、却本该由现成工具提供的能力。这两项能力之所以关键,源自一个更本质的判断:每当逻辑跨越边界,就需要长期运行的行为。”边界”有多种含义——调用远程服务,跨越了本地程序/操作系统/计算机的边界,你就要负责处理服务可用性和延迟问题;调用其他组件或资源,跨越了技术事务边界;集成其他团队的组件,跨越了组织边界,需要更多协作;调用外部服务(如信用卡机构),跨越了公司边界;流程包含人的环节,则跨越了可自动化任务与不可自动化任务之间的边界。管理这些边界不仅需要长期运行能力,还要仔细斟酌任务顺序、认真讨论故障场景和对应的业务策略,甚至面临数据安全、合规、审计方面的监管要求。现代系统的边界正在急剧增多——系统越来越倾向于从单体拆成服务、微服务、函数这类细粒度组件,云上购买的服务和内部应用混合部署,这些趋势共同放大了对长期运行流程管理能力的需求。
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第1章《简介》"1.3 工作流引擎和可执行流程模型""1.5 长期运行的流程"(源文件:_epub-src/EPUB/xhtml/Section0001_0003.xhtml)
- 结论依据:原文用信用卡支付流程说明工作流引擎的持久化状态与任务调度两大核心功能,并列举远程调用、组织边界、公司边界、人机边界等多种"边界"类型,说明每当逻辑跨越边界就需要长期运行能力,直接支撑本卡片结论。
- 原始内容:我们刚刚谈到了工作流引擎的两项最重要的功能:持久化状态,支持任务暂停……任务调度,比如说重试……从另一个视角看每当逻辑跨越边界,就需要长期运行的行为。