flow - 流程引擎接口参考
2025年12月5日 上午10:05:10
图的流动由“流程引擎”驱动的,也称为:执行。“流程引擎”在执行图时,会涉及到“上下文”(提供执行时的上下文参数与对象引用),以及可以定制的“流程驱动器”。
1、 流程引擎(FlowEngine)
| 返回数据类型 | 描述 | |
|---|---|---|
FlowEngine.newInstance() | FlowEngine | 实例化引擎 |
FlowEngine.newInstance(driver) | FlowEngine | 实例化引擎(指定默认驱动器) |
getDriver(graph)->FlowDriver | 获取图的驱动器 | |
getDriverAs(graph, driverClass)->FlowDriver | 获取图的驱动器(带类型检测) | |
forStateful()->FlowStatefulService | 获取状态服务 | |
statefulService()->FlowStatefulService | 获取状态服务 [弃用] (v3.6.1 后由 forStateful 替代) | |
addInterceptor(interceptor, index) | 添加拦截器 | |
register(name, driver) | 注册驱动器 | |
register(driver) | 注册默认驱动器 | |
unregister(name) | 注销图驱动器 | |
load(graphUri) | 加载图(支持 * 号表达式批量加载) | |
load(graph) | 加载图 | |
unload(graphId) | 卸载图 | |
getGraphs() | Collection<Graph> | 获取所有图 |
getGraph(graphId) | Graph | 获取图 |
eval(graphId) | 执行图 | |
eval(graphId, context) | 执行图 | |
eval(graphId, startId, context) | 执行图 | |
eval(graphId, startId, depth, context) | 执行图 | |
eval(graph) | 执行图 | |
eval(graph, context) | 执行图 | |
eval(startNode) | 执行节点 | |
eval(startNode, context) | 执行节点 | |
eval(startNode, depth, context) | 执行节点 | |
eval(startNode, depth, exchanger) | 执行节点 |
主要实现有:
- FlowEngineDefault(默认实现)
2、流上下文接口(FlowContext)
| 返回数据类型 | 描述 | |
|---|---|---|
+of() | 获取无状态上下文实例 | |
+of(instanceId) | 获取无状态上下文实例 | |
+of(instanceId, stateController, stateRepository) | 获取有状态上下文实例 | |
+of(instanceId, stateController) | 获取有状态上下文实例 | |
getInstanceId() | 实例id(一般用于有状态流) | |
executor() | 异步执行器 | |
executor(executor) | 配置异步执行器(配置后,并行网关将多线程执行) | |
exchanger() | 交换器(主要内部使用) | |
interrupt() | 中断(当前分支不再前进) | |
stop() | 停止并返回(整个流不再前进) | |
eventBus() | DamiBus<C, R> | 当前实例事件总线 |
model() | Map | 参数集合 |
put(key, value) | self | 推入参数 |
putIfAbsent(key, value) | self | 没有时推入参数 |
putAll(model) | self | 推入参数集合 |
get(key) | Object | 获取参数 |
getAs(key) | T | 获取参数 |
getOrDefault(key, def) | T | 获取参数或默认 |
remove(key) | T | 移除参数 |
computeIfAbsent(key, mappingFunction) | T | 没有时完成参数 |
incrGet(key) | int | 增量获取 |
incrAdd(key, delta) | int | 增量添加 |
条件或脚本任务应用时:
- FlowContext 实例在脚本里的变量名为:
context - 所有 model 里参数,会成为脚本里的变量(直接可用)
instanceId(实例Id) 的作用:
- 用于识别是否有状态需求(空表示,不需要状态管理)
3、流程驱动器接口(FlowDriver),可自由定制
| 方法 | 返回数据类型 | 描述 |
|---|---|---|
onNodeStart(exchanger, node) | 节点开始时 | |
onNodeEnd(exchanger, node) | 节点结束时 | |
handleCondition(exchanger, condition) | bool | 处理条件检测 |
handleTask(exchanger, task) | 处理执行任务 | |
postHandleTask(exchanger, task) | 提交处理任务(有状态时,需要二次控制) |
主要实现有:
- SimpleFlowDriver(简单流程驱动器,同时支持无状态、有状态两种场景)