# solon-flow **Repository Path**: opensolon/solon-flow ## Basic Information - **Project Name**: solon-flow - **Description**: Solon Flow 通用流程编排框架(采用 json 和 yaml 编排格式)。可用于计算(或任务)的编排场景;可用于业务规则和决策处理型的编排场景;可用于可中断、可恢复流程(结合自动前进,停止,再执行)的编排场景。同时兼容 java8 ~ java25。也可嵌入到 SpringBoot、jFinal、Vert.X、Quarkus、Micronaut 等框架中使用。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://solon.noear.org - **GVP Project**: No ## Statistics - **Stars**: 117 - **Forks**: 27 - **Created**: 2025-03-26 - **Last Updated**: 2026-01-28 ## Categories & Tags **Categories**: process-engine **Tags**: flow, rule, rule-engine, flow-engine ## README


Solon-Flow

Java 通用流程编排框架(采用 yaml 和 json 编排格式)
克制、高效、开放

https://solon.noear.org/article/learn-solon-flow

Ask DeepWiki Maven Apache 2 jdk-8 jdk-11 jdk-17 jdk-21 jdk-25
gitee star github star gitcode star


## 简介 面向全场景的 Java 流程编排框架。是 Solon 项目的一部分。也可嵌入到 SpringBoot、jFinal、Vert.X、Quarkus、Micronaut 等框架中使用。 支持已知流程编排的各种场景: * 可用于计算(或任务)的编排场景 * 可用于业务规则和决策处理型的编排场景 * 可用于可中断、可恢复流程(结合自动前进,停止,再执行)的编排场景 * 可用于复杂智能体系统开发(ReActAgent、TreamAgent、Multi-Agent System) 可视化设计器: * https://solon.noear.org/flow/designer/ * 第三方开源(已组件化):https://gitee.com/opensolon/solon-flow-bpmn-designer 嵌入第三方框架的示例: * https://gitee.com/solonlab/solon-flow-embedded-examples * https://gitcode.com/solonlab/solon-flow-embedded-examples * https://github.com/solonlab/solon-flow-embedded-examples ## 主要概念 | 概念 | 简称 | 备注 | 相关接口 | |-------------|-------------|---------------|---------------------| | 流程图 | 图(或流图) | | Graph, GraphSpec | | 流程节点 | 节点(或流节点) | 可带任务,可带任务条件 | Node, NodeSpec | | 流程连接线 | 连接(或流连接) | 可带连接条件 | Link, LinkSpec | | | | | | | 流程引擎(用于执行图) | 引擎(流引擎) | | FlowEngine | | 流程驱动器 | 驱动器(流驱动器) | | FlowDriver | | | | | | | 流程上下文 | 上下文(或流上下文) | | FlowContext | | 流程拦截器 | 拦截器(或流拦截器) | | FlowInterceptor | 概念关系描述(就像用工具画图): * 一个图(Graph),由多个节点(Node)和连接(Link)组成。 * 一个节点(Node),会有多个连接(Link,也叫“流出连接”)连向别的节点。 * 连接向其它节点,称为:流出连接。 * 被其它节点连接,称为:流入连接。 * 一个图“必须有且只有”一个 start 类型的节点,且从 start 节点开始,顺着连接(Link)流出。 * 引擎在执行图的过程,可以有上下文(FlowContext),可以被阻断分支或停止执行 通俗些,一个图就是通过 “点”(节点) + “线”(连接)画出来的一个结构。 ## 五大特性展示 ### 1、采用 yaml 或 json 偏平式编排格式 偏平式编排,没有深度结构(所有节点平铺,使用 link 描述连接关系)。配置简洁,逻辑一目了然 ```yaml # c1.yml id: "c1" layout: - { id: "n1", type: "start", link: "n2"} - { id: "n2", type: "activity", link: "n3"} - { id: "n3", type: "end"} ``` ### 2、表达式与脚本自由 支持内置表达式引擎,动态控制流程逻辑。 ```yaml # c2.yml id: "c2" layout: - { type: "start"} - { when: "order.getAmount() >= 100", task: "order.setScore(0);"} - { when: "order.getAmount() > 100 && order.getAmount() <= 500", task: "order.setScore(100);"} - { when: "order.getAmount() > 500 && order.getAmount() <= 1000", task: "order.setScore(500);"} - { type: "end"} ``` ### 3、元数据配置,无限扩展空间 元数据主要有两个作用:(1)为任务运行提供配置支持(2)为视图编辑提供配置支持 ```yaml # c3.yml id: "c3" layout: - { id: "n1", type: "start", link: "n2"} - { id: "n2", type: "activity", link: "n3", task: "@MetaProcessCom", meta: {cc: "demo@noear.org"}} - { id: "n3", type: "end"} ``` ### 4、上下文快照持久化:中断与恢复 支持输出快照(Snapshot)。对于需要人工审批、等待回调或长达数天的长流程,可将当前运行状态序列化保存,待触发后随时恢复运行。 ```java // 1. 在任务内根据情况停止执行 context.stop(); // 2. 在节点执行停止后,保存状态 String snapshotJson = context.toJson(); db.save(instanceId, json); // 3. 经过一段时间后,从中断处恢复(继续执行) String snapshotJson = db.get(instanceId); FlowContext context = FlowContext.fromJson(snapshotJson); flowEngine.eval(graph, context); ``` ### 5、事件广播与回调支持 内置 EventBus,支持组件间的异步解耦或同步调用。 ```java //发送事件 context.eventBus().send("demo.topic", "hello"); //支持泛型(类型按需指定,不指定时为 object) //调用事件(就是要给答复) String rst = context.eventBus().call("demo.topic.get", "hello").get(); System.out.println(rst); ``` ### 6、支持驱动定制(就像 jdbc 的驱动机制) 通过驱动定制,可快速实现:工作流(Workflow)、规则流(RuleFlow)、数据流(DataFlow)及 AI 智能流。 ## Solon 项目相关代码仓库 | 代码仓库 | 描述 | |-----------------------------------------------------------------------------|----------------------------------| | [/opensolon/solon](../../../../opensolon/solon) | Solon ,主代码仓库 | | [/opensolon/solon-examples](../../../../opensolon/solon-examples) | Solon ,官网配套示例代码仓库 | | | | | [/opensolon/solon-expression](../../../../opensolon/solon-expression) | Solon Expression ,代码仓库 | | [/opensolon/solon-flow](../../../../opensolon/solon-flow) | Solon Flow ,代码仓库 | | [/opensolon/solon-ai](../../../../opensolon/solon-ai) | Solon Ai ,代码仓库 | | [/opensolon/solon-cloud](../../../../opensolon/solon-cloud) | Solon Cloud ,代码仓库 | | [/opensolon/solon-admin](../../../../opensolon/solon-admin) | Solon Admin ,代码仓库 | | [/opensolon/solon-integration](../../../../opensolon/solon-integration) | Solon Integration ,代码仓库 | | [/opensolon/solon-java17](../../../../opensolon/solon-java17) | Solon Java17 ,代码仓库(base java17) | | [/opensolon/solon-java25](../../../../opensolon/solon-java25) | Solon Java25 ,代码仓库(base java25) | | | | | [/opensolon/solon-gradle-plugin](../../../../opensolon/solon-gradle-plugin) | Solon Gradle ,插件代码仓库 | | [/opensolon/solon-idea-plugin](../../../../opensolon/solon-idea-plugin) | Solon Idea ,插件代码仓库 | | [/opensolon/solon-vscode-plugin](../../../../opensolon/solon-vscode-plugin) | Solon VsCode ,插件代码仓库 |