flow - 基础接口参考
链的流动由“流引擎”驱动的,也称为:执行。“流引擎”在执行链时,会涉及到“流上下文”(提供执行时的上下文参数与对象引用),以及可以定制的“流驱动器”。
1、 流引擎(FlowEngine)
返回数据类型 | 描述 | |
---|---|---|
FlowEngine.newInstance() | FlowEngine | 实例化引擎 |
addInterceptor(interceptor, index) | 添加拦截器 | |
register(name, driver) | 注册驱动器 | |
register(driver) | 注册默认驱动器 | |
unregister(name) | 注销链驱动器 | |
load(chainUri) | 加载链 | |
load(chain) | 加载链 | |
unload(chainId) | 卸载链 | |
getChains() | Collection<Chain> | 获取所有链 |
getChain(chainId) | Chain | 获取链 |
eval(chainId) | 执行链 | |
eval(chainId, context) | 执行链 | |
eval(chainId, startId, context) | 执行链 | |
eval(chainId, startId, depth, context) | 执行链 | |
eval(chain) | 执行链 | |
eval(chain, context) | 执行链 | |
eval(startNode) | 执行链节点 | |
eval(startNode, context) | 执行链节点 | |
eval(startNode, depth, context) | 执行链节点 |
主要扩展接口有:
- StatefulFlowEngine(有状态的流引擎)
主要实现有:
- FlowEngineDefault(用于支持无状态流)
- StatefulFlowEngineDefault(用于支持有状态流)
2、流上下文接口(FlowContext)
返回数据类型 | 描述 | |
---|---|---|
::new() | 构造函数 | |
::new(instanceId) | 带实例id的,构造函数 | |
getInstanceId() | 实例id(一般用于有状态流) | |
isInterrupted() | bool | 是否已阻断 |
interrupt() | 阻断(当前分支不再前进) | |
interrupt(bool) | 阻断或重置阻断 | |
isStopped() | bool | 是否已停止 |
stop() | 停止(整个流不再前进) | |
run(script) | 运行脚本 | |
manualNext(node) | 手动下一步(一般用于异步任务,需要 interrupt 配置) | |
eventBus() | DamiBus<C, R> | 当前实例事件总线 |
engine() | FlowEngine | 当前实例所用引擎(驱动定制时,用于跨链调用) |
counter() | Counter | 当前实例计数器(用于内部计数) |
model() | Map | 参数集合 |
put(key, value) | self | 推入参数 |
putIfAbsent(key, value) | self | 没有时推入参数 |
putAll(model) | self | 推入参数集合 |
get(key) | T | 获取参数 |
getOrDefault(key, def) | T | 获取参数或默认 |
remove(key) | T | 移除参数 |
computeIfAbsent(key, mappingFunction) | T | 没有时完成参数 |
backup() | 备份参数 | |
recovery() | 恢复备份时的参数 | |
result | Object | 执行结果(执行中可赋值) |
getResult() | Object | 获取执行结果 |
setResult(result) | 设置执行结果(有些脚本引擎需要属性模式支持) |
条件或脚本任务应用时:
- FlowContext 实例在脚本里的变量名为:
context
- 所有 model 里参数,会成为脚本里的变量(直接可用)
instanceId
(实例Id) 的作用:
- 对 FlowEngine 没直接作用。如果有需求,可用作日志记录
- 对 StatefulFlowEngine 有特定作用,通过识别是否有状态需求(空表示,不需要状态管理)
3、流驱动器接口(FlowDriver),可自由定制
返回数据类型 | 描述 | |
---|---|---|
onNodeStart(context, node) | 节点开始时 | |
onNodeEnd(context, node) | 节点结束时 | |
handleTest(context, condition) | bool | 处理条件检测 |
handleTask(context, task) | 处理执行任务 |
主要实现有:
- SimpleFlowDriver(用于支持无状态流)
- StatefulSimpleFlowDriverr(用于支持有状态流)