初识 Solon Graph Fluent API,如何编排才能灵动如画?
摘要:Solon Flow 提供了一套流畅的流程图 Fluent API,让开发者可以通过代码方式定义业务流程。文章介绍了如何通过链式调用快速构建流程图,包括环境准备、核心概念(Graph与GraphSpec)以及实战案例(订单处理流程)。重点演
Solon Flow 在提供 json/ xml 编排之后。还提供了一套极为丝滑的流程图 Fluent API。它让流程定义回归到程序员最熟悉的工具——代码。
通过 Fluent API,你可以像写 Java Stream 一样,通过链式调用快速勾勒出业务流转图。
1、环境准备
首先,确保你的 Java 项目中已经引入了 solon-flow 依赖:
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-flow</artifactId>
</dependency>
2、核心概念:Graph 与 GraphSpec
在动手写代码前,需要理解两个关键概念:
Graph (图):流程的最终实体,包含所有节点和连线的运行逻辑。
GraphSpec (图规格/定义):它是构建图的“蓝图”。在 v3.8 之后,它是 Fluent API 操作的核心对象。
3、 实战:手动编排一个“订单处理流”
假设我们有一个简单的订单流程:开始 -> 检查库存 -> 支付 -> 结束。
第一步:准备业务处理组件()
Solon-flow 的设计理念是 “逻辑与实现分离”。 我们先定义具体的业务动作:
import org.noear.solon.annotation.Component;
import org.noear.solon.flow.FlowContext;
import org.noear.solon.flow.Node;
import org.noear.solon.flow.TaskComponent;
// 容器 Bean 的形式(此处以 Solon 为例)
@Component("checkStock")
public class CheckStockProcessor implements TaskComponent {
@Override
public void run(FlowContext ctx, Node node) throws Throwable {
System.out.println("--- 正在检查库存... ---");
ctx.put("stock_ok", true); // 在上下文中存入结果
}
}
//-------------
// 普通 Java 类形式
import org.noear.solon.annotation.Component;
import org.noear.solon.flow.FlowContext;
import org.noear.solon.flow.Node;
import org.noear.solon.flow.TaskComponent;
public class PayProcessor implements TaskComponent {
@Override
public void run(FlowContext context, Node node) throws Throwable {
System.out.println("--- 支付成功! ---");
}
}
第二步:使用 Fluent API 编排流程
下面是本文的核心代码。
