solon-flow 你好世界!
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;
@Override
public 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();
}
}
solon-flow 你好世界!的更多相关文章
- java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...
- C++的"开始" Hello World! 你好世界!
# C++的"开始" Hello World! 你好世界! ```C++ // 第一个程序 //代表注释这一行 #include <iostream> //c++专属头 ...
- UVa 11636 你好 世界!(贪心)
https://vjudge.net/problem/UVA-11636 题意: 经过一次复制,一条语句会变成两条语句,再经过一次变成四条语句...求最少需要复制几次能使条数恰好为n? 思路: 贪心水 ...
- C++自学教程第一课——你好世界,我是柠檬鲸。
C++系列教程现在在自己学校的一个博客平台发布,几个朋友一起搭建的 [C++基础教程系列](https://blog.ytmaxoj.org/cpp_basic_liuary-0/) 下面是原来的正文 ...
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 行走于Swift的世界中(转)
从Swift正式公布到现在,我基本一直在关注和摸索Swift.对于一门新语言来说,开荒阶段的探索自然是激动人心的,但是很多时候,资料的缺失和细节的隐藏也让人着实苦恼.最近几天的感受是,Swift 并不 ...
- 又一个小而美的Java Web框架: Solon!
Solon 是Java世界里一个新的极易上手的Web框架.参考过 Javalin . Spring 等很多现有框架的设计. 取名自海贼王里的角色,说是希能像他一样能打 小.真的是小.最小的运行单位只有 ...
- Mybatis 和 Solon 勾搭在一起,也是个漂亮组合
故事相关的源码 https://gitee.com/noear/solon_demo/tree/master/demo08.solon_mybatis 故事开讲 Solon 是Java世界里一个新的极 ...
- Mybatis 和 Solon 在一起的升级版
终于说通 Solon 作者,让他为 Solon 框架添加事务注解支持了:并且把 mybatis-solon-plugin 的 @Df 注解更名为 @Db ,接地气多了(Df是什么鬼呢?新手肯定这么想. ...
- Solon详解(11)- Mybatis 与 Solon 相亲相爱
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
随机推荐
- 4G模组软件指南 | json数据处理深度学习篇
针对4G模组软件的json数据处理,我已做出如下示例分享给大家,以4G模组Air780E为例: 1.JSON介绍 JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式 ...
- 系统框架(delphi)
写了一个简单的框架,参考ERP系统写的,可使用两层(client+DB),或三层(client+app<datasnap>+DB)的方式运行,非com+方式. 哈哈,登录好俗...... ...
- Rust 的静态网站生成器「GitHub 热点速览」
如果你做过个人博客网站,那么一定对静态网站生成器不陌生.无论是 Ruby 语言的 Jekyll.Go 语言的 Hugo.还是基于 React 的 Gatsby,这些工具都有庞大的用户群体.对于喜欢的人 ...
- CF2023C C+K+S 题解
题面 给您两个强联通的 \(^{\dagger}\) 有向图,每个图都有精确的 \(n\) 个顶点,但可能有不同数量的边.仔细观察后,您发现了一个重要特征--这些图中任何一个环的长度都能被 \(k\) ...
- Redis集群搭建-Docker
使用docker搭建本地集群Redis服务(参考:https://www.cnblogs.com/slowbirdoflsh/p/11633113.html) 环境配置 # 拉取redis镜像 doc ...
- LR语法分析算法
LR语法分析器 组成:一个输入,一个输出,状态栈,驱动程序,语法分析表 注意:规约后需要寻找新的符号在栈顶状态上的转换 例如: 状态栈 符号栈 输入 0 5 $id ...
- SpringBoot+logback 日志打印脱敏,正常获取对象不受影响
添加依赖 注意:springboot版本2.7.0 <dependency> <groupId>org.slf4j</groupId> <artifactId ...
- 使用Flex布局的几个小技巧
前情 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为 Flex 布局,如果说目前我开发中离不开的布局方式 ...
- css var实现网页换肤
前情 最近在做需求开发,要求根据后台传来的配置对网页换肤,按以往的换肤思路应该是写好几套样式做切换达到换肤效果,但是现在想做到能根据后台配置动态修改. 原理 通过css3新增变量特性,把颜色定义为变量 ...
- 腾讯技术岗位笔试&面试题(四)
说在前面 本篇文章是腾讯技术面试题目汇总第四篇. 后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案和分析. 欢迎大家点赞关注转发. 原文链接:https://mp.we ...