Java 流程编排新范式 Solon Flow:一个引擎,七种节点,覆盖规则/任务/工作流/AI 编排全场景
Java 流程编排新范式 Solon Flow:一个引擎,七种节点,覆盖规则/任务/工作流/AI 编排全场景
在 Java 后端开发中,流程编排一直是绕不开的“硬骨头”。过去,我们处理业务逻辑时,要么用 if-else 堆砌出“面条代码”,要么引入重量级的 BPMN 工作流引擎(如 Activiti、Flowable),却常常因为其复杂的部署和陡峭的学习曲线而头疼。而如今,随着 AI Agent、事件驱动架构的兴起,我们需要的是一种 轻量、灵活、可嵌入 的编排引擎。今天要聊的 Solon Flow,正是这样一款“小而美”的工具。它用一个核心引擎,定义了七种基础节点,却能覆盖从规则判断、任务执行到复杂工作流,甚至 AI 编排的全场景。这听起来是不是有点“瑞士军刀”的味道?### 为什么我们需要“七种节点”?在传统的流程引擎中,节点类型往往非常多(几十种),但实际开发中 80% 的场景只用到其中几种。Solon Flow 将复杂度收敛,只保留了七种核心节点:1. 开始节点(Start):流程的入口。2. 结束节点(End):流程的出口。3. 规则节点(Rule):基于条件进行分支判断(相当于 if-else)。4. 任务节点(Task):执行一段具体的业务逻辑(相当于一个方法调用)。5. 脚本节点(Script):动态执行一段脚本(如 Groovy、JavaScript)。6. 子流程节点(Subflow):调用另一个流程定义(实现复用)。7. AI 节点(AI):调用大模型接口,完成生成、分类、抽取等 AI 任务。这七种节点,就像乐高的七种基础积木,通过不同的组合,就能拼出业务所需的各种“形状”。### 核心引擎:极简的“调度器”Solon Flow 的引擎核心非常轻量,它不依赖 Spring 容器,可以独立运行。它的核心职责就是:**从开始节点出发,根据节点类型和上下文数据,驱动流程流转,直到结束节点。**下面我们直接上手,看一段最基础的流程定义和运行代码。#### 代码示例 1:一个简单的“规则+任务”流程假设我们要做一个“订单折扣”计算:如果订单金额大于 1000,则打 9 折,否则原价。首先,我们定义流程(这里使用 JSON 格式,Solon Flow 支持 JSON 和 Java API 两种方式):json// process.json{ "id": "discount_flow", "name": "订单折扣流程", "nodes": [ { "id": "start", "type": "start", "name": "开始" }, { "id": "check", "type": "rule", "name": "金额判断", "condition": "amount > 1000", "trueTarget": "discount_9", "falseTarget": "end" }, { "id": "discount_9", "type": "task", "name": "打9折", "handler": "com.example.DiscountHandler", "target": "end" }, { "id": "end", "type": "end", "name": "结束" } ]}然后,我们用 Java 代码加载并执行这个流程:java// 引入 Solon Flow 的核心类import org.noear.solon.flow.*;import org.noear.solon.flow.driver.SimpleFlowDriver;// 1. 定义任务处理器(实现 TaskHandler 接口)public class DiscountHandler implements TaskHandler { @Override public void handle(Context ctx) throws Throwable { // 从上下文中获取流程传递的数据 Double amount = (Double) ctx.get("amount"); // 执行业务逻辑:打9折 Double finalPrice = amount * 0.9; // 将结果放回上下文,供后续节点或外部使用 ctx.put("finalPrice", finalPrice); System.out.println("[任务节点] 打折后价格:" + finalPrice); }}// 2. 加载流程并运行public class FlowDemo { public static void main(String[] args) { // 创建流程引擎(可复用) FlowEngine engine = FlowEngine.create(new SimpleFlowDriver()); // 加载流程定义(从 JSON 文件或字符串) Chain chain = engine.parseChain("classpath:process.json"); // 准备上下文数据 Context ctx = new Context(); ctx.put("amount", 1500.0); // 模拟订单金额 // 执行流程 engine.eval(chain, ctx); // 获取最终结果 System.out.println("流程执行完成,最终价格:" + ctx.get("finalPrice")); }}运行结果:[任务节点] 打折后价格:1350.0流程执行完成,最终价格:1350.0这就是一个最基础的“规则分支 + 任务处理”的流程。你会发现,我们将复杂的 if-else 和业务方法调用,解耦成了流程定义和数据流转。### 进阶:覆盖 AI 编排场景Solon Flow 最让我兴奋的一点,是它对 AI 节点 的原生支持。在这个大模型时代,我们经常需要编排复杂的 AI 调用链,比如:> 用户提问 -> 判断意图(AI) -> 如果涉及“天气”,调用天气 API(任务) -> 将结果用 AI 生成幽默回答(AI) -> 输出。这如果用手写代码,会是一层套一层的回调地狱。但用 Solon Flow,我们可以将每一步抽象为节点,通过规则节点串联起来。#### 代码示例 2:一个简单的 AI 编排流程我们演示一个“智能客服”流程的简化版:先调用 AI 判断意图,然后根据意图走不同的分支。json// ai_flow.json{ "id": "ai_chat_flow", "name": "AI 聊天编排", "nodes": [ { "id": "start", "type": "start" }, { "id": "intent", "type": "ai", "name": "意图识别", "prompt": "用户说:{{userInput}}。请判断意图:1.查询天气 2.闲聊。只回答数字。", "output": "intentCode", "target": "route" }, { "id": "route", "type": "rule", "name": "路由", "condition": "intentCode == '1'", "trueTarget": "weather_task", "falseTarget": "chat_task" }, { "id": "weather_task", "type": "task", "name": "调用天气API", "handler": "com.example.WeatherHandler", "target": "end" }, { "id": "chat_task", "type": "ai", "name": "闲聊回复", "prompt": "用户说:{{userInput}}。请用幽默的语气回复。", "output": "replyText", "target": "end" }, { "id": "end", "type": "end" } ]}在这个流程中,AI 节点 被用来做意图识别和内容生成。你不需要自己管理 HTTP 调用、API Key 等细节(Solon Flow 的 AI 节点底层会通过适配器对接大模型),只需要关心 流程结构 和 提示词 即可。在实际项目中,你甚至可以通过 子流程节点 将多个独立的 AI 流程(如总结、翻译、摘要)组合成一个更复杂的“AI Agent 工作流”。### 七种节点,如何覆盖全场景?有些人可能会问:“就这么几个节点,真的够用吗?”答案是:组合大于枚举。- 规则引擎场景:通过 规则节点 + 脚本节点 可以完成复杂的业务规则判断(如信贷审批中的多条件分支)。- 任务调度场景:通过 任务节点 + 子流程节点 可以编排复杂的批处理任务,并支持重试、超时控制(通过引擎配置实现)。- 工作流审批场景:虽然它没有专门的人工任务节点(UserTask),但可以通过 任务节点 结合外部存储(如数据库)来模拟“待办任务”,实现轻量级的审批流。- AI 编排场景:如上面所示,通过 AI 节点 组合其他节点,可以快速构建 RAG 链路、Agent 工具调用链等。Solon Flow 的哲学是:把核心的调度逻辑做到极致,把扩展能力留给开发者。你可以在任务节点中编写任何 Java 代码,这意味着它的上限取决于你的想象力。### 总结Solon Flow 为 Java 开发者提供了一种 “反内卷” 的流程编排思路。它没有追求大而全的规范,而是用 “一个引擎 + 七种节点” 的极简设计,降低了流程引擎的使用门槛。- 轻量级:无需独立部署,可作为库嵌入现有 Spring Boot 或 Solon 应用。- 高可扩展:任务节点和 AI 节点是开放的,可以无限扩展业务能力。- AI 友好:原生支持大模型调用,为 AI Agent 开发提供了流程化的编程模型。如果你正在寻找一个既不会过度设计,又能覆盖规则、任务、工作流甚至 AI 编排的解决方案,Solon Flow 绝对值得你花一个下午去尝试。它或许不能解决所有问题,但它提供了一种更优雅、更清晰的方式来组织你的业务逻辑。记住: 流程编排的核心不是“引擎有多强”,而是“如何让业务逻辑变得可视化、可维护、可复用”。Solon Flow 正是为此而生的。
更多推荐


所有评论(0)