开源规则引擎LiteFlow项目应用实践

本文介绍基于开源规则引擎LiteFlow,如何开发规则设计器,在低代码平台中集成规则引擎,并在项目中实现应用的效果。由于低代码平台使用规则引擎实现了逻辑编排的需求,所以本文中的叫法为“逻辑设计”、“逻辑编排”、“逻辑流引擎”等。

逻辑设计规则设计,可以将复杂且多变的业务规则从硬编码中解耦,封装成独立、可复用的业务组件,通过可视化规则设计器按业务需求编排业务组件的执行逻辑,使得业务规则的变更无需修改项目代码、不用重启服务器就可以在线上环境立即生效,实现灵活应对业务需求变化。比如说订单价格计算,有折扣、满减、促销券、会员等级,不同会员等级在不同促销场景下(618、双11等),计算价格的规则是不一样的,这种需求就可以进行规则编排,面对业务需求快速变化,能够及时调整应对。

逻辑设计的使用步骤包括:逻辑组件定义和注册--->逻辑流设计编排--->调用逻辑流

1)逻辑组件定义和注册:将执行逻辑的代码注册成组件,以供后面进行逻辑流的编码。

2)逻辑流设计编排:通过设计器对组件的执行顺序、规则进行编排,形成可执行的逻辑流模型。

3)业务调用逻辑流:在表单、流程等扩展事件中通过HTTP或者Java API进行逻辑流的调用,来执行整个流程。

1.逻辑组件定义和注册

LiteFlow规则引擎支持多种开发语言开发逻辑组件,包括Java、Groovy、JavaScript等;其中后两者又属于脚本组件,可以进行在线注册和代码编写。前者则是需要在后端项目中写代码逻辑,并通过注解声明为一个组件,然后再通过页面将其给注册出来。

2.逻辑流可视化设计编排

逻辑组件开发完成并注册后,接下来就可以设计逻辑流了,打开逻辑流设计器(规则设计器),在线可视化设计逻辑流,可以直接复用注册的逻辑组件,也可以在设计器里直接定义逻辑组件。

设计好了逻辑流模型后,可以进行模拟测试,点击模拟测试,弹出模拟测试框。

在进行模拟测试时,可以填写或修改逻辑流的入参变量填写好后点击右下角测试按钮,即可展示测试结果。

【执行流】执行组件的流向

【执行节点】执行组件执行的各种信息

【整体用时】执行该逻辑流花费了多长时间

3.业务如何调用逻辑流

设计好我们的逻辑流模型后应该怎么去调用,我们目前提供了两种方式,分别是HTTP调用,和在后端代码中通过Java接口来调用执行。

我们首先来构建一个场景,以购物网站购物下单计算价格为例。通常我们网购时都会有各种优惠,比如满减、会员折扣、优惠券等等,这些优惠有时候会有有时候没有,这时我们可以通过逻辑流来编排我们订单价格计算的逻辑。首先我们要把不同的计算逻辑给独立成不同的组件。然后通过我们的逻辑流设计器把组件关联起来。

下面就是我们编排好的逻辑流模型,每个组件都有他们自己的职责,我们可以随意的更改我们的计算逻辑,比如去除满减活动,添加520促销活动的逻辑组件,更换两个组件的执行顺序。

然后在表单按钮点击事件里,自定义脚本通过HTTP服务调用逻辑流来计算订单价格,这样就实现了业务和逻辑流引擎的集成。如果是后端开发需要调用逻辑流,可以直接使用Java API 调用。

在线体验:http://www.yunchengxc.com

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

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

相关文章

.NET IoC 容器(三)Autofac

目录 .NET IoC 容器(三)AutofacAutofacNuget 安装实现DI定义接口定义实现类依赖注入 注入方式构造函数注入 | 属性注入 | 方法注入注入实现 接口注册重复注册指定参数注册 生命周期默认生命周期单例生命周期每个周期范围一个生命周期 依赖配置Nuget配置文…

0基础学习区块链技术——推演猜想

在《0基础学习区块链技术——入门》一文中,我们结合可视化工具,直观地感受了下区块的结构,以及链式的前后关系。 本文我们将抛弃之前的知识,从0开始思考和推演,区块链技术可能是如何构思出来的。 去中心 在一般的思维…

浅谈配置元件之随机变量

浅谈配置元件之随机变量 1.概述 为了增强测试的真实性和多样性,JMeter 提供了多种配置元件来生成动态数据,其中“随机变量”(Random Variable) 就是一种常用的配置元件,用于生成随机数值、字符串等,以模拟不同用户请求中的变化参…

认识meta

目录 认识meta camera_metadata的存储结构 camera_metadata的基本操作 申请camera_metadata 增加entry 查找entry 更新entry 删除entry 对tag的查找操作 vendor_tag_ops和vendor_cache_ops是Andriod提供的接口 propertyID Camxhal3metadatautil.cpp文件理解 Initia…

Redisson 分布式锁 - RLock、RReadWriteLock、RSemaphore、RCountDownLatch(配置、使用、原理)

目录 前言 Redisson 分布式锁 环境配置 1)版本说明 2)依赖如下 3)配置文件如下 4)项目配置 RLock 1)使用方式 2)加锁解释 3)加锁时手动设置时间 4)加锁时,到…

揭秘FL Studio21.2.8中文版一键解锁音乐创作新境界!

在音乐制作的广阔天地里,随着技术的不断进步和数字音频工作站(DAW)软件的普及,越来越多的音乐爱好者和专业制作人开始涉足音乐创作的奇妙旅程。其中,FL Studio以其强大的功能、直观的操作界面和丰富的音色资源&#xf…

LED驱动IC:HC2106,1W升压型DC/DC白光LED驱动器HC2106系列,供应给大功率白光LED灯提供能源、恒流源

LED驱动IC: HC2106:1W升压型DC/DC白光LED驱动器HC2106系列 概述:HC2106系列芯片是针对LED应用设计的PFM 控制模式的开关型DC/DC 升压恒流芯片,通过外接电阻可使输出电流值恒定在0mA~500mA。 HC2106可以给一个、多个…

算法004:盛水最多的容器

这道题比较简单,使用双指针。 要求的是最大面积,对于一个水桶(水杯来说),面积的算法是固定的,就是底乘以高。 在这个题中,我们把左边的位置设为left,右边的位置设为right&#xff…

一个月飙升 9k star!打破常规的 git 客户端

作为一名程序员,想必大家每天都要使用 git 来管理自己的代码吧。有些大佬喜欢使用命令行来进行 git 的操作,有些新入门的小白程序员则比较喜欢使用各种 git 客户端来可视化的管理代码,而有些程序员则喜欢使用 IDE 中集成的 git 功能来做代码的…

力扣234. 回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true # Definition for singly-linked list. # c…

R语言探索与分析17-CPI的分析和研究

一、选题背景 CPI(居民消费价格指数)作为一个重要的宏观经济指标,扮演着评估通货膨胀和居民生活水平的关键角色。在湖北省这个经济活跃的地区,CPI的波动对于居民生活、企业经营以及政府宏观经济政策制定都具有重要的影响。因此&a…

打造卓越任务调度体系:实用攻略与技巧解析

写这篇文章,想和大家从头到脚说说任务调度,希望大家读完之后,能够理解实现一个任务调度系统的核心逻辑。 1 Quartz Quartz 是一款 Java 开源任务调度框架,也是很多 Java 工程师接触任务调度的起点。 下图显示了任务调度的整体流…

基于STC12C5A60S2系列1T 8051单片机实现一主单片机与一从单片机相互发送数据的RS485通信功能

基于STC12C5A60S2系列1T 8051单片机实现一主单片机与一从单片机相互发送数据的RS485通信功能的RS485通信功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串…

zdppy_api 中间件请求原理详解

单个中间件的逻辑 整体执行流程: 1、客户端发起请求2、中间件拦截请求,在请求开始之前执行业务逻辑3、API服务接收到中间件处理之后的请求,和数据库交互,请求数据4、数据库返回数据5、API处理数据库的数据,然后给客户…

【第十一课】空间数据基础与处理——属性数据管理

一、前言 Arcgis分析离不开两大主体数据,一是空间,二是经济属性。在运用 Aecgis 进行分析时,经常会碰到一些涉及多要素的属性更改或填写, 如果按照普通的方法,每个属性进行修改或填写的话,工作量是很大的&…

Apache OFBiz 路径遍历导致RCE漏洞复现(CVE-2024-36104)

0x01 产品简介 Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。是美国阿帕奇(Apache)基金会的一套企业资源计划(ERP)系统。该系统提供了一整套基于Java的Web应用程序组件和工具。 0x02 漏洞概…

【深入理解计算机系统第3版】补码加法

感觉这部分有点难,所以稍微整理记一下。 抱歉中英混合,来回切换输入法真的很折磨人。 负溢出 正常 正溢出 以4位补码加法为例,理解下表(书中P64) 补码最大值Tmax 2^3 - 1 7, 补码最小值Tmin -2^3 -8 xyz x yz z mod 2^4zU2Tw(z)溢…

超燃混剪热门视频素材去哪里找? 爆款超燃网站合集分享

在今天的数字时代,短视频已成为传播信息和个人表达的主流方式。无论你是混剪爱好者还是自媒体创作者,掌握如何获取和利用高质量的视频素材是关键。本文将介绍几个顶级的视频素材网站,包括国内外的平台,帮助你创建引人入胜的视频作…

【数据结构】二叉搜索树--BST,Binary Search Tree

文章目录 二叉搜索树1. 二叉搜索树的概念2. 二叉搜索树的接口2.1 查找非递归查找递归查找 2.2 中序遍历2.3 插入非递归插入递归插入 2.4 删除非递归删除递归删除 3. 二叉搜索树的应用key搜索模型kv搜索模型 5. oj题 二叉搜索树 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树…

12-学生们参加各科测试的次数(高频 SQL 50 题基础版)

12-学生们参加各科测试的次数 -- 学生表中,id是唯一的,将他作为主表 -- CROSS JOIN产生了一个结果集,该结果集是两个关联表的行的乘积 -- 2行表,与3行表使用cross join,得到2*36行数据 select st.student_id, st.student_name,su.subject_na…