PaiFlow工作流引擎面试题预测:DAG原理与WorkflowEngine解析
1. 什么是 DAG?为什么工作流引擎要用 DAG 来表示?
考察点:数据结构基础、DAG 特性
参考答案:
DAG 是有向无环图。"有向"是说边有方向,从 A 指向 B 表示 A 执行完才能执行 B;"无环"是说不能有循环依赖,A→B→C→A 这种是不允许的。
工作流用 DAG 有很多好处:节点之间谁先谁后一目了然、没有依赖关系的节点可以同时跑、能算出一个合法的执行顺序、无环的特性保证工作流一定能执行完。
在 PaiFlow 里,节点就是 Node 对象,边就是 Edge 对象,存的是 source 和 target 两个节点 ID。
2. 你的 WorkflowEngine 是怎么解析 DSL(JSON)并构建执行链路的?
考察点:DSL 解析、链路构建逻辑
参考答案:
整个过程分三步:
第一步:反序列化,前端传过来的是 JSON,我用 FastJSON 直接反序列化成 WorkflowDSL 对象,里面包含 nodes 列表和 edges 列表。
第二步:构建节点索引,遍历 nodes 列表,建一个 Map
// WorkflowEngine.java L157-164
Map();
for (Node node : workflowDSL.getNodes()) {
if (node.getNodeType() == NodeTypeEnum.START) {
startNode = node; // 标记入口点
}
n...
热门评论
64 条评论
回复