solon-flow 你好世界!

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

1、Helloworld

1.1、新建项目

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

xml 复制代码
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-flow</artifactId>
</dependency>
1.2、添加配置

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

yaml 复制代码
solon.flow:
  - "classpath:flow/*"

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

yaml 复制代码
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!

java 复制代码
@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 的规则:

yaml 复制代码
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"}

规则应用:

java 复制代码
@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();
    }
}
相关推荐
代码的奴隶(艾伦·耶格尔)4 分钟前
Sentinel限流熔断
java·前端·sentinel
小徐Chao努力12 分钟前
【Langchain4j-Java AI开发】02-模型参数配置与调优
java·开发语言·人工智能
啥都不懂的小小白13 分钟前
CyclicBarrier深度解析:Java中的“循环栅栏“同步工具
java·juc·cyclicbarrier
毕设源码-朱学姐24 分钟前
【开题答辩全过程】以 基于uni—app的民宿预订系统为例,包含答辩的问题和答案
java·eclipse
bjxiaxueliang25 分钟前
一文详解Cpp多线程编程:从传统pthread到现代thread实践指南
java·开发语言·jvm
机智的人猿泰山26 分钟前
spring boot 运行测试类时:Error creating bean with name ‘serverEndpointExporter‘ 问题
java·spring boot·后端
爬山算法28 分钟前
Hibernate(3)Hibernate的优点是什么?
java·后端·hibernate
秋邱38 分钟前
Java面向对象进阶实战:用工厂模式+策略模式优化支付系统
java·bash·策略模式
heartbeat..1 小时前
网络通信核心知识全解析:模型、协议与 TCP 机制
java·网络·网络协议·tcp/ip
weixin_440730501 小时前
Java基础学习day01
java·开发语言·学习