smart-flow v1.1.0 发布,更低的接入成本


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.0 版本更新内容特性如下:

ExecutionListener新增SPI扩展方式

v1.0.9以前Listener生效需要开发者手动调用API进行注册,例如以下示例:

ExecutionListenerRegistry.register(new ExampleListener());

1.1.0以后,ExecutionListener新增支持Java标准SPI扩展方式,只需要在META-INF/serivices下新建以ExecutionListener全称限定类名为名称的文件,将需要注册的扩展类全称限定名配置到文件中即可生效

 

自定义绑定Executable属性

1.0.9以前,如果用户想要为Executable设置自定义属性,需要手动配置好属性后再将其设置到流程引擎中。例如以下示例

// 1、设置属性
JdbcExecutable je = new JdbcExecutable();
je.setDriverClass("");
je.setUrl("");
je.setUsername("");
je.setPassword("");

// 2、参与编排
Builders.pipeline()
		.... // 其他步骤
		.next(je)
.... // 其他步骤

这种方式使得xml编排方式受到了限制,所以在1.1.0版本中新增自定义属性绑定功能,上述代码可以转化为以下xml配置示例:

<pipeline name="example">
<component execute="JdbcExecutable" 
execute.driver-class=""
execute.url=""
execute.username=""
execute.password=""
/>
</pipeline>

smart-flow默认情况下将execute.开头的属性视为需要为执行器Executable绑定的属性,通过setter和字段反射的方式进行属性设置。而关于属性的类型,smart-flow会根据setter或字段类型自动进行转换,如果转换失败则解析失败。更多文档参考 自定义Executable

 

功能增强插件

增强插件是基于核心包开发,用于增加smart-flow功能的模块。使用此模块可以降低接入成本,更多文档请阅读 增强插件。

<dependency>
<groupId>org.smartboot.flow</groupId>
<artifactId>smart-flow-enhance-plugin</artifactId>
<version>${lastest.version}</version>
</dependency>

增强插件目前提供3个功能

  • 反射执行器
  • shell执行器
  • 占位符替换功能 

以下示例代码演示反射执行器使用:

@Service
public class CustomExecutable {

public Object execute(Integer request, Integer result) {
System.out.println("custom1 executed " + request + " result = " + result);
return new Exception("hello, will passed by smart-flow engine.");
}
}

@Service
public class CustomExecutable2 {

public static void execute(Integer request, int result, Exception customEx) {
int a = 10;
int b = 12;
double d = 12;
System.out.println("custom3 executed " + request + " result = " + result + " customExMsg = " + customEx.getMessage());
System.out.println(a + b + d);
}
}

业务流程分为2步,CustomExecutable接收出入参数,然后返回一个异常对象,然后CustomExecutable2接受出入参数以及步骤1中返回值异常对象。

<pipeline name="example">
<component execute="reflect"
reflect.target="customExecutable"
reflect.execute-method="execute" reflect.result-id="customEx"/>
<component execute="reflect"
 reflect.target="customExecutable2"
 reflect.execute-method="execute"/>
</pipelin>

以上配置使用了短语为reflect的反射执行器,为步骤1设置了执行目标customExecutable与执行方法execute,同时设置了返回值id为customEx, 步骤2设置与1同,区别在于未设置返回值id。

 

二进制执行包

二进制执行包基于增强插件开发,它作为一个新的尝试:在项目外解析并执行smart-flow的流程文件。

下载📎smart-flow-bootstrap-1.1.0.tar.gz解压后进入bin目录,并执行以下指令, 其中📎flow-example-simple-shell.xml为一个测试流程文件

./smart-flow.sh -f ../../flow-example-simple-shell.xml -t

执行后控制台可以观察到输出:

===================== start execute shell step1 ============================================
/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home
=====================endexecute shell step1 ============================================
===================== start execute shell step2 ============================================
hello world!!!
=====================endexecute shell step2 ============================================
===================== start execute shell step3 ============================================
a
=====================endexecute shell step3 ============================================
invoke trace tree:

flow-engine##testEngine escaped 27ms
|--- subprocess1escaped 27ms
|--- shell@step1escaped 14ms
|--- shell@step2escaped 5ms
|--- shell@step3escaped 5ms

如果流程文件中使用到了其他jar依赖,可以通过参数-cp或者-classpath 指定类路径。

其他更新

  • layui-vue升级
  • 页面样式调整与流程图生成调整
  • 解析g6流程图生成xml格式优化

 

3、如何使用 smart-flow

3.1 源码

  • 主仓库:https://gitee.com/smartboot/smart-flow

3.2 Maven 依赖

  • smart-flow-core 核心包,可单独使用

<dependency>
<groupId>org.smartboot.flow</groupId>
<artifactId>smart-flow-core</artifactId>
<version>1.1.0</version>
</dependency>
  • smart-flow-spring-extension spring 扩展

<dependency>
<groupId>org.smartboot.flow</groupId>
<artifactId>smart-flow-spring-extension</artifactId>
<version>1.1.0</version>
</dependency>
  • smart-flow-manager 管理功能包

<dependency>
<groupId>org.smartboot.flow</groupId>
<artifactId>smart-flow-manager</artifactId>
<version>1.1.0</version>
</dependency>

3.3 使用

点击查看快速接入

3.4、示例地址

demo 工程地址

管理控制台体验地址

 


相關推薦

2024-08-22

他 Pi 5 型号中使用的 BCM2712C1“功能相同”,但制造成本更低。 Eben Upton 称,C1 版本除了提供 Raspberry Pi 的一些必须功能外,“还包含旨在服务于其他市场的功能,而我们并不需要这些功能。这种'dark silicon'在我们使用的芯片中

2022-04-14

通过创新,FOSS 通过启用可扩展且高度可靠的协作社区、更低的成本等敏捷环境,迅速为企业提供所需的竞争优势。但是,对开放核心和 FOSS 之间差异的了解不足可能会限制采用的优势以及业务的额外成本和风险。该报告则揭示

2023-03-09

1、smart-flow 简介 smart-flow 是一个轻量、灵活的业务流程编排框架,支持业务流程中常见的条件分支控制、子流程、业务组件异步和降级等功能。同时smart-flow也是一款具备可观测性的流程编排框架,流程结构拓扑、执行路径跟踪

2023-07-01

1、smart-flow 简介 smart-flow 是一个轻量、灵活的业务流程编排框架,支持业务流程中常见的条件分支控制、子流程、业务组件异步和降级等功能。同时 smart-flow 也是一款具备可观测性的流程编排框架,流程结构拓扑、执行路径跟

2023-05-04

请求同时发送,从而导致网络拥塞和负载增加。 v1.1.0 发布内容: RetryAspect添加Ordered,支持动态调整Aop执行顺序【新增】 手动添加重试任务【新增】 更新核心字段描述【更新】 更新类名定义【更新】 删除重试retry_task

2023-03-25

化资源效率,实现资源池的融合统一,帮助业务团队获得更低的资源成本和更强的弹性能力。 为实现资源统一托管,字节跳动从 2016 年就开始基于 Kubernetes 构建统一的基础设施。 到现阶段,字节内部已经基本完成全量微服务

2023-03-09

rt-broker 基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker 服务。 smart-flow 一款具备可观测性的轻量级业务编排框架。 组织地址:?https://smartboot.tech/ 代码仓库:?https://gitee.com/smartboot 2、 版本更新 这个版本在功能上的改动比较小

2022-09-01

管理功能进行统一维护。 通知公告:系统通知公告信息发布维护。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 登录日志:系统登录日志记录查询包含登录异常。 代码生成:一键生成模块 CR

2022-10-19

供了更高的性能与更低的资源消耗。 Cphalcon v5.0.4 正式发布,该版本更新内容如下: 修复 Phalcon\Encryption\Security ,在成本计算中考虑 workFactor #16153 删除了模型缓存期间的双重非序列化 #16035 、 #16131 修复了 Phalcon\Db\Adapter\Pdo\

2022-12-22

3)部分组件服务治理功能不齐全,缺少动态路由、灰度发布等微服务核心功能。 为了解决上面的问题,降低用户开发及运营微服务的门槛。北极星为服务治理提供一站式解决方案,覆盖服务注册中心、服务网格和配置中心的

2024-05-17

本已达2490亿。 百度表示,这几天,国内外多家厂商相继发布大模型最新进展和相关应用,百度很高兴地看到,“闭源大模型+公有云”已经成为全球AI市场的主流趋势。 “闭源大模型+公有云”能实现比开源大模型性能更好、成

2022-09-21

架中。根据官方计划,NVIDIA 将于 12 月以早期访问的形式发布 CV-CUDA,同时计划在明年 3 月推出测试版。

2024-01-12

员历时四个月的开发,Terraform 开源分支 OpenTofu 现已正式发布,可供生产使用,为 Terraform 用户提供了一条直接的迁移路径。 公告指出,这个版本发布的过程凸显了 OpenTofu 社区驱动的方法以及开源的价值。其中有两个例子值得

2024-07-26

位是更具成本效益和更强大的功能,具有更长的上下文和更低的延迟。GPT -4o mini 于 7 月 18 日推出,旨在通过让智能更实惠来扩大使用 AI 构建的应用程序范围。它支持一系列任务,例如链接或并行化模型调用的应用程序、将大量