solon-flow 你好世界!

news/2025/1/30 13:02:55/文章来源:https://www.cnblogs.com/noear/p/18690947

solon-flow 是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有 “开放式” 驱动定制支持,像 jdbc 有 mysql 或 pgsql 等驱动,可为不同的应用场景定制不同的驱动处理。

1、Helloworld

1.1、新建项目

可以用 Solon Initializr 新建 solon-lib 模板项目,之后添加 solon-flow 依赖(也支持在 spring 或 vert.x 或 jfinal 项目里使用)。

<dependency><groupId>org.noear</groupId><artifactId>solon-flow</artifactId>
</dependency>

1.2、添加配置

app.yml 里添加应用配置,指定 flow 为流处理配置存放地:

solon.flow:- "classpath:flow/*"

添加流处理配置(支持 json 或 yml 格式),例: flow/demo1.chain.yml

id: "c1"
nodes: - { id: "n1", type: "start", link: "n2"}- { id: "n2", type: "execute", link: "n3", task: "System.out.println(\"hello world!\");"}- { id: "n3", type: "end"}

示意图:

1.3、代码应用

应用启动时,可以打印:hello world!

@Component
public class DemoCom implements LifecycleBean {@Inject private FlowEngine flowEngine;@Overridepublic void start() throws Throwable {flowEngine.eval("c1");}
}

2、转换 drools 的规则参考

配置业务处理规则:flow/r1.chain.yml。使用 solon-flow 的简化模式,很适配转换 drools dsl 的规则:

id: "r1"
title: "评分规则"
nodes:- { 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"}

规则应用:

@Component
public class DemoCom {@Inject FlowEngine flowEngine;//评分public int score(Order order) {//执行ChainContext ctx = new ChainContext();ctx.put("order", order); //模型数据,可被规则直接使用flowEngine.eval("r1", ctx);//获取评分结果return order.getScore();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/875602.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1/25 遇到的问题

1.数据库连接报错 错误代码: nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBExceptionorg.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined inclass path resource [org/s…

【模拟电子技术】14-基本共射放大电路的动态分析

【模拟电子技术】14-基本共射放大电路的动态分析给出问题,求三个参数。反推:需要Aus就需要求解交流通路(动态参数H等效模型),交流通路需要知道Rbe,Rbe需要知道Rbb,Rbb需要知道静态工作点,静态工作点需要分析直流通路,思路有了。得到Au现在再次探讨输入电阻对放大电路的…

[2025.1.25 MySQL学习] 约束

约束概念:约束是作用于表中字段的规则,用于限制存储在表中的数据 目的:保证数据库中数据的正确、有效性和完整性 分类:

QT+VS “QtRunWork”任务返回了 false,但未记录错误。

无法打开 源 文件 " ui_xxx.h 源文件不可用 Qt开发报错:Q_INTERFACES Error: Undefined interface报错:QtRunWork”任务返回了 false,但未记录错误。 无法打开 源 文件 " ui_xxx.h 源文件不可用 原因: 1.查看错误:“QtRunWork”任务返回了 false,但未记录错误…

2025牛客寒假算法基础集训营2 个人题解

2025牛客寒假算法基础集训营2 个人题解2025牛客寒假算法基础集训营2 个人题解 A.一起奏响历史之音! #include<bits/stdc++.h> #define endl \n using namespace std; void solve(){bool flag=false;for(int i=1;i<=7;i++){int x;cin>>x;if(x!=1 && x!=…

亚像素视觉使用与故障处理

亚像素视觉使用与故障处理 V1.0 2024.05修订日期修订内容2024/5/20初版(V1.0)目录1. 界面介绍 41.1运行画面 41.2设定画面 42.操作方法 52.1设定与运行模式切换 52.2 手动拍照测试、执行条件选择 52.3常用工具使用与工具…

计量经济学——计量分析步骤(零)

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 计量经济学作为现代经济学的重要分支。经济计量分析是现代经济学研究中不可或缺的一部分,旨在运用数学、统计学和计算机科学的方法,对经济现象进行量化研究…

一起看很美的日落!

一起看很美的日落! 题目描述 牛可乐有一棵由 $n$ 个结点构成的树,第 $i$ 个节点的权值为 $a_i$。 我们定义一个连通块 $\mathbb{V}$ 的权值为:当前连通块中两两结点的权值异或和,即 $\sum\limits_{i,j \in \mathbb{V}}{a_i \oplus a_j}$;你需要计算全部连通块的权值之和。…

哈工深准备复试~代码复健

去年年前过完了c语言基础,初始算了下分成绩还不错,现在寒假在家准备复试 东西真的忘得干干净净了,因为是跨考,所以算是零基础吧,每天刷刷代码题,就当复健了