1、smart-flow 简介
smart-flow 是一个轻量、灵活的业务流程编排框架,支持业务流程中常见的条件分支控制、子流程、业务组件异步和降级等功能。同时 smart-flow 也是一款具备可观测性的流程编排框架,流程结构拓扑、执行路径跟踪、链路分析等功能能帮助您洞察整个业务流程和执行。
smartboot 开源组织,一个容易被误认为是在 “重复造轮子” 的低调组织。曾获得 2020 年度 OSC 中国开源项目「优秀 Gitee 组织 」荣誉。
该组织内的明星项目包括:
smart-socket
历时 5 年精炼出 2 千多行代码,轻松实现百万级长连接的 AIO 通信框架。smart-http
基于 smart-socket 实现的 HTTP/1.1 web 服务。smart-servlet
基于 smart-http 实现的 Servlet 3.1 容器服务。smart-mqtt
基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。
smart-flow
一款具备可观测性的轻量级业务编排框架。组织地址:https://smartboot.tech/
代码仓库:https://gitee.com/smartboot
2、 版本更新
v1.1.3 版本更新主要是一些使用体验上的优化,同时新增了nacos集成。
具体内容特性如下:
更快捷的流程中断方式
1.1.3以前版本,必须通过上下文来中断流程,实际使用起来可能不太方便。基于此新增工具类静态方法,可直接中断流程。
EngineContextHelper.broken(); // 中断当前流程/子流程EngineContextHelper.brokenAll(); // 中断整个流程EngineContextHelper.broken(); // 中断当前流程/子流程 EngineContextHelper.brokenAll(); // 中断整个流程EngineContextHelper.broken(); // 中断当前流程/子流程 EngineContextHelper.brokenAll(); // 中断整个流程
traceReporter优化
本次更新中,将原本的traceReporter
拆分为了 traceCollector
和新的traceReporter
。其中collector
负责收集trace
,reporter
负责将trace
上报远端。
// 配置reporterHttpTraceReporter reporter = new HttpTraceReporter();reporter.setServerAddress("http://localhost:8099/");reporter.setTimeout(4000L);reporter.setHeaders(new HashMap<>());reporter.getHeaders().put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)");reporter.init();// 配置收集器DefaultTraceCollector collector = new DefaultTraceCollector();collector.setRadio(0.1); // 设置采样率collector.addReporter(reporter); // 添加traceReportercollector.start(); // 启动收集器// 配置reporter HttpTraceReporter reporter = new HttpTraceReporter(); reporter.setServerAddress("http://localhost:8099/"); reporter.setTimeout(4000L); reporter.setHeaders(new HashMap<>()); reporter.getHeaders().put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"); reporter.init(); // 配置收集器 DefaultTraceCollector collector = new DefaultTraceCollector(); collector.setRadio(0.1); // 设置采样率 collector.addReporter(reporter); // 添加traceReporter collector.start(); // 启动收集器// 配置reporter HttpTraceReporter reporter = new HttpTraceReporter(); reporter.setServerAddress("http://localhost:8099/"); reporter.setTimeout(4000L); reporter.setHeaders(new HashMap<>()); reporter.getHeaders().put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"); reporter.init(); // 配置收集器 DefaultTraceCollector collector = new DefaultTraceCollector(); collector.setRadio(0.1); // 设置采样率 collector.addReporter(reporter); // 添加traceReporter collector.start(); // 启动收集器
Spring使用优化
- 占位符支持
为组件标签设置属性时,支持使用${}
占位符,占位符的解析与属性设置将交由spring进行处理。
<flow:component name="${engine.name}" execute="itemComponent"degradable="${itemComponent.degradable:false}"/><flow:component name="${engine.name}" execute="itemComponent" degradable="${itemComponent.degradable:false}"/><flow:component name="${engine.name}" execute="itemComponent" degradable="${itemComponent.degradable:false}"/>
- 自动bean装载
spring扩展包中部分类将会自动注册到spring容器中,不再需要手动引入。
Springboot使用优化
主要对springboot环境下,部分bean的组装进行了优化,并新增了链路上报的组装功能,详情见集成springboot。
Nacos集成
从Nacos远程拉取引擎配置解析,并支持配置变更监听,根据变更后的配置重新生成引擎实例。
<dependency><groupId>org.smartboot.flow</groupId><artifactId>smart-flow-integration-nacos</artifactId><version>${lastest.version}</version></dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-integration-nacos</artifactId> <version>${lastest.version}</version> </dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-integration-nacos</artifactId> <version>${lastest.version}</version> </dependency>
更多请阅读:集成nacos
其他更新
- 【优化】移除方法
DefaultEngineManager#getDefaultEngineManager
- 【新增】添加引擎获取方法
EngineManager#getEngine
- 【优化】其他代码优化
3、如何使用 smart-flow
3.1 源码
3.2 Maven 依赖
- smart-flow-core 核心包,可单独使用
<dependency><groupId>org.smartboot.flow</groupId><artifactId>smart-flow-core</artifactId><version>1.1.3</version></dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-core</artifactId> <version>1.1.3</version> </dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-core</artifactId> <version>1.1.3</version> </dependency>
- smart-flow-spring-extension spring 扩展
<dependency><groupId>org.smartboot.flow</groupId><artifactId>smart-flow-spring-extension</artifactId><version>1.1.3</version></dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-spring-extension</artifactId> <version>1.1.3</version> </dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-spring-extension</artifactId> <version>1.1.3</version> </dependency>
- smart-flow-manager 管理功能包
<dependency><groupId>org.smartboot.flow</groupId><artifactId>smart-flow-manager</artifactId><version>1.1.3</version></dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-manager</artifactId> <version>1.1.3</version> </dependency><dependency> <groupId>org.smartboot.flow</groupId> <artifactId>smart-flow-manager</artifactId> <version>1.1.3</version> </dependency>