开源规则引擎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开始思考和推演,区块链技术可能是如何构思出来的。 去中心 在一般的思维…

回溯算法之组合总和2

题目: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candi…

浅谈配置元件之随机变量

浅谈配置元件之随机变量 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)加锁时,到…

DALL-E 2详细介绍

DALL-E 2是由美国人工智能研究公司OpenAI推出的一款文本生成图像系统,它是DALL-E的后续版本,具有更强大的功能和更高的图像质量。以下是关于DALL-E 2的详细解释: 一、主要功能特点 文本到图像生成:DALL-E 2能够根据用户提供的文…

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

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

vue+Django接入钉钉登录

前端处理 dingtalkLogin() {let url https://login.dingtalk.com/oauth2/auth?redirect_uri${this.dingRedirectUrl}&response_typecode&client_id${this.appKey}&scopeopenid&stateSTATE&promptconsentwindow.location.href url;},后端处理 def dingt…

Nginx:怎么携带参数重定向

在NGINX中,可以使用location指令和rewrite指令来携带参数进行重定向。 首先,可以使用location指令根据请求的URL匹配到一个特定的位置块。然后,在位置块中使用rewrite指令将请求重定向到另一个URL,并携带参数。 下面是一个示例配…

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可以给一个、多个…

基于语音识别的智能电子病历(其他)签名的处理

签名业务流程的说明 概述 签名是医生对完成的报告的确认操作,是医生对报告完成状况的认可。 一般情况下一份报告对应一个录音,而一个录音对应一个病人的一次诊疗过程,因此只有那些参与了录音或诊疗过程的医生,才能具有对报告的签…

java实现jpg转png

在Java中,你可以使用javax.imageio.ImageIO类来实现JPG到PNG的转换。以下是一个简单的方法,它接受JPG文件的路径,读取该文件,转换成PNG格式,并保存到指定的输出路径。 以下是实现代码: import javax.image…

LeetCode刷题第3题(C#)

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 法一: 这道题用到的其实是滑动窗口。 滑动窗口算法是在特定窗口大小的数组或字符串上执行要求的操作。它可以将一部分问题中的嵌套循环转变为一个单循环,以此减少时间复…

【Docker学习】docker push简述

docker push是docker pull的反向操作。我们将镜像上传到公共或私有镜像仓库就需要用到这个命令。 命令: docker image push 描述: 上传一个镜像到注册表。 用法: docker image push [OPTIONS] NAME[:TAG] 别名: docker pu…

实验名称:面向对象练习

门门都精通,头发去无踪。 目录 一、实验目的 二、实验环境 三、实验步骤 四、实验结果 1.设计一个圆类(Cirle),该类中包含圆心位置、半径、颜色等属性,还包括构造函数和计算圆的周长、面积的方法,设计完成后,测试…

算法004:盛水最多的容器

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

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

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

XXE漏洞介绍

XXE(XML External Entity)漏洞是一种安全漏洞,它发生在应用程序解析XML输入时。如果应用程序没有正确地限制对外部实体的引用,攻击者可以利用XXE漏洞执行各种恶意操作,例如访问敏感文件、执行远程服务请求、甚至可能导…

1、企业会计准则--基本准则

根据《国务院关于〈企业财务通则〉、〈企业会计准则〉的批复》(国函[1992]178号)的规定,财政部对《企业会计准则》(财政部令第5号)进行了修订,修订后的《企业会计准则--基本准则》已经部务会议讨论通过,现予公布,自2007年1月1日起施行。 二○○六年二月十五日 企业会计…