v3.8.0 solon-flow-workflow 更新与兼容说明
2025年12月21日 下午12:11:18
3.8.0 更新与兼容说明(预告)
- 新增
solon-flow-workflow插件(替代 FlowStatefulService 接口)
兼容变化对照表:
| 旧名称 | 新名称 | 说明 |
|---|---|---|
GraphDecl | GraphSpec | 图定义 |
LinkDecl | LinkSpec | 连接定义 |
NodeDecl | NodeSpec | 节点定义 |
Condition | ConditionDesc | 条件描述 |
Task | TaskDesc | 任务描述(可避免与 workflow 的概念冲突) |
FlowStatefulService | WorkflowService | 工作流服务 |
StatefulTask | Task | 任务 |
Operation | TaskAction | 任动工作 |
TaskType | TaskState | 任务状态 |
Evaluation.runTest(..) | Evaluation.runCondition(..) | 运行条件 |
FlowStatefulService 到 WorkflowService 的接口变化对照表:
| 旧名称 | 新名称 | 说明 |
|---|---|---|
postOperation(..) | postTask(..) | 提交任务 |
postOperationIfWaiting(..) | postTaskIfWaiting(..) | 提交任务 |
evel(..) | / | 执行 |
stepForward(..) | / | 单步前进 |
stepBack(..) | / | 单步后退 |
| / | getState(..) | 获取状态 |
新特性预览:Graph 硬编码方式(及修改能力增强)
//硬编码
Graph graph = Graph.create("demo1", "示例", spec -> {
spec.addStart("start").title("开始").linkAdd("01");
spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end");
spec.addEnd("end").title("结束");
});
//修改
Graph graphNew = Graph.copy(graph, spec -> {
spec.getNode("n1").linkRemove("end").linkAdd("n2"); //移掉 n1 连接;改为 n2 连接
spec.addActivity("n2").linkAdd("end");
});
新特性预览:FlowContext:lastNodeId (计算的中断与恢复)。参考:https://solon.noear.org/article/1246
flowEngine.eval(graph, context.lastNodeId(), context);
//...(从上一个节点开始执行)
flowEngine.eval(graph, context.lastNodeId(), context);
新特性预览:WorkflowService(原名 FlowStatefulService)
WorkflowService workflow = WorkflowService.of(engine, WorkflowDriver.builder()
.stateController(new ActorStateController())
.stateRepository(new InMemoryStateRepository())
.build());
//1. 取出任务
Task task = workflow.getTask(graph, context);
//2. 提交任务
workflow.postTask(task.getNode(), TaskAction.FORWARD, context);