后端低代码平台探索总结

业务需求快速变化的背景

我们在对业务需求进行梳理后,在进行程序设计时,对于将来可能发生变化的常量、变量、阀值、开关、条件、公式等等,可能会配置在环境变量或数字字典来支持可配置。但是需求变化往往会更加复杂、更加不可预测,所以需要更加强大的可配置的业务规则/策略,来提高系统的可扩展性。

可配置、可扩展从浅到深

从简单的表达式计算、报表模板/邮件模板/sql模板,到复杂规则引擎,再到可编排规则引擎,最后是低代码平台。

一、表达式引擎

相对规则引擎,表达式引擎更轻,使用更加简单。语法和Java比较接近,部分表达式引擎支持将表达式编译成字节码,在执行速度更快。主流的有AviatorScript、QLExpress、SpEL、MVEL、OGNL等。

如AviatorScript

AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。AviatorScript 可将表达式编译成字节码。
1、Aviator一开始的定位为表达式语言,用于表达式的运算。
2、目前已经支持 if/else 条件语、for/while 循环语句。
3、在业务复杂规则配置的时候可以动态生成脚本并执行规则判断。
4、可使用在规则引擎中。

其它各选手不一一列举,表达式引擎各组件对比参考文档
https://zhuanlan.zhihu.com/p/666532372

二、模板引擎

如velocity/freemaker

velocity是一个基于Java的模板引擎,可以通过特定的语法获取在Java对象的数据,填充到模板中,从而实现界面和Java代码的分离。这意味着可以使用velocity替代jsp的开发模式了,这使得前端开发人员可以和 Java 程序开发人员同步开发一个遵循 MVC 架构的 web 站点,在实际应用中,velocity还可以应用于很多其他的场景。
1)、web应用程序:作为应用程序的视图,展示数据。
2)、源代码生成:velocity可用于基于模板生成Java源代码。
3)、自动电子邮件:网站注册,认证等的电子邮件模板。
4)、sql模板:自定义报表的sql模板。
5)、网页静态化:基于velocity模板,生成静态网页。

三、规则引擎

带配置页面的成熟规则引擎drools、urule。

1、Drool

Drools 是用 Java 语言编写的开源规则引擎,是KIE(知识就是一切)项目的一部分。其使用 ReteOO算法执行规则。支持使用自然语言表达业务逻辑,也可以使用 Java/Groovy/Python + XML 语法编写规则。 早期的版本一般由开发人员通过开发工具插件来定义规则,目前已有Drools Workbench通过web服务提供给业务人员维护规则。
在这里插入图片描述
Rules:我们自己定义的业务规则,比如我们自己写的规则文件。所有规则必须至少包含触发规则的条件和规则规定的操作。
Production memory:规则存储在 Drools 引擎中的位置。
Facts:输入或更改到 Drools 引擎中的数据,Drools 引擎匹配规则条件以执行适用规则。在规则中修改了Fact对象的值,真实的JavaBean的数据也会发生改变。 比如:当我们调用ksession.insert(对象),那么插入的这个对象就可以理解成Facts对象。
Working memory:facts 在 Drools 引擎中存储的位置。
Pattern matcher:匹配器,将Rule Base中所有的规则与Working memory中的Fact对象进行模式匹配,匹配成功的规则将被激活并放入到Agenda中。
Agenda:议程,执行Agenda中被激活的排好序的规则。

2、URule

系统架构图

在这里插入图片描述
使用者通过浏览器打开URule Pro规则设计器来定义业务规则,完成后的业务规则文件会被存储在规则存储仓库中(在URule Pro当中规则存储仓库既可以是文件系统中的某个目录,也可以存储于数据库当中)。规则文件调用时引擎会从规则存储仓库里把指定的规则文件取出,再通过规则构建引擎对规则进行解析、编译,最后由规则执行引擎执行并返回结果。

规则例子

在这里插入图片描述

3、流程引擎与规则引擎

流程引擎和规则引擎是两种不同的软件系统,各有其独特的特点。

1)、流程引擎是一种自动化业务流程的软件系统,它可以帮助您管理复杂的业务流程。流程引擎通常使用图形界面来定义业务流程,并且能够自动地执行流程中的各个步骤。
2)、规则引擎是一种可以根据特定规则自动处理业务数据的软件系统。规则引擎使用特定的语言(如DRL)定义规则,并且能够在数据发生变化时自动地执行规则。
3)、流程引擎和规则引擎之间有着密切的关联,它们可以互相配合工作,以实现更强大的业务自动化。例如,您可以在流程引擎中定义业务流程,并在流程的某些步骤中使用规则引擎来自动处理业务数据。

三、可编排规则引擎

liteflow 轻量,快速,稳定可编排的组件式规则引擎

1、组件编排

LiteFlow是一个非常强大的现代化的规则引擎框架,融合了编排特性和规则引擎的所有特性。
利用LiteFlow,你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。LiteFlow拥有开源规则引擎最为简单的DSL语法。
在这里插入图片描述
LiteFlow的脚本组件,支持众多脚本语言,完全和Java打通,你可以用脚本来实现任何逻辑。
在这里插入图片描述
LiteFlow支持把编排规则和脚本放在数据库,注册中心中,还有可以任意扩展的接口,方便你定制。
在这里插入图片描述

2、配置、图示、代码例子在这里插入图片描述

在这里插入图片描述

3、优缺点

1)无编排设计界面,只能手工编写规则文件。
在这里插入图片描述
2)、IDEA插件
试体验一下,有不少报错信息,就没有深入体验。
在这里插入图片描述

四、低代码平台

BizWork 云原生应用组装低代码平台
阿里推出的BizWork云原生的工作台,功能很强大,很震撼。我们可以借鉴阿里、美团等公司一些产品,研究和分析里面的功能,然后研发我们自己的低代码平台。
强大的功能:业务建模、服务编排、流程编排、页面编排、BizWorks Toolkit(IDE 插件)双向联动 等。
完整的闭环:建模、开发、测试、部署、运营、治理。

阿里是卖SAAS服务,体验了一个月,功能还是很强大的。前端LowCodeEngine低代码引擎,配合后端服务编排,可以快速完成页面和服务的在线配置开发。云原生应用还具备业务建模、在线开发、测试、部署能力。

1、服务编排

各业务系统的http服务、rpc服务,消息队列,本地sdk服务。通过服务编排把这些孤立的程序单元按照业务需求编排起来,形成新的业务服务。
在这里插入图片描述

2、节点类型丰富

在这里插入图片描述

3、BizWorks双向联动机制机制

在这里插入图片描述
1)模型到代码 - 设计阶段
设计阶段, 在建模平台完成模型设计, 实现模型的可视化和在线化
通过平台预置能力生成脚手架,模型对应的代码框架也同时生成
代码到模型 - 开发阶段
进入开发阶段后,研发人员更聚焦在代码侧,可以借助BizWorks Toolkit(IDE 插件) 快速完成

2)本地模型批量标注
本地模型批量扫描上报
联动效率和有效性
如何将平台(重设计),代码IDE(重开发)这两个不同定位的场景有效串联是双向联动需重点解决的问题。

3)BizWorks Toolkit(IDE 插件)通过提供了一系列配套能力使联动效率得到很大提升,也使得双向联动这一流程能有效落地:
平台模型实时同步
模型&代码实时校验
模型&代码一致性规约扫描
错误修复辅助(快速定位错误代码、QuickFix)
针对模型变更的代码增量生成
代码侧模型批量扫描上报

3、BizWorks Toolkit(IDE 插件)使用

插件下载
在这里插入图片描述
插件菜单
在这里插入图片描述

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

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

相关文章

Qt实现动画的2种方式

由于我之前是写java的所以在学习Qt的时候感觉会有点熟悉,因为Qt就是 用c写,而java底层也是c实现的 先看效果: 一、使用QMovie 这种方式我目前是用来加载gif图的,很简单噢,只不过我是加载的本地的路径,如…

减速机振动相关标准 - 笔记

参考标准:国家标准|GB/T 39523-2020 减速机的振动标准与发动机不同,摘引: 原始加速度传感器波形 可以明显看到调幅波 它的驱动电机是300Hz~2000Hz范围的。这个采样时间是5秒,看分辨率至少1024线。可分出500条谱线。 频谱部分 …

持续集成交付CICD:基于 GitLabCI 与 JenkinsCD 实现后端项目发布

目录 一、实验 1. GitLabCI环境设置 2.优化GitLabCI共享库代码 3.JenkinsCD 发布后端项目 4.再次优化GitLabCI共享库代码 5.JenkinsCD 再次发布后端项目 一、实验 1. GitLabCI环境设置 (1)GitLab给后端项目添加CI配置路径 (2&#xf…

ElementUI,修改el-cascader的默认样式

Element UI 中的下拉弹窗是通过在整个body标签末尾动态添加div实现的,所以修改样式时,必须要定义全局样式才能实现样式覆盖,那怎样才能避免全局的样式污染呢? 解决办法:通过给组件添加自定义的 popper-class 属性来避…

Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据

1、在查询中使用了group_concat 函数,简单例子如下: select GROUP_CONCAT(recordid) from s_au_user where username 121212此sql查询一个username 为121212的数据,当然肯定是查询不到的,理论上应该返回0条结果,但是…

(c语言)字符逆序——非递归

#include<stdio.h> #include<string.h> int main(int argc, char* argv[]) {char a[10000];char b[10000];gets(a);int i, c;c (int)strlen(a);for (i 0; i < c; i){b[i] a[c-i-1]; //将\0之前的元素赋值给b[]}b[c] \0; //之后在所有元素后加上\0,将…

vue看板使用电子数字

1、下载字体 https://www.dafont.com/theme.php?cat302&text0123456789 2、下载后将压缩包解压,并上传到https://link.csdn.net/?targethttps%3A%2F%2Fwww.fontsquirrel.com%2Ftools%2Fwebfont-generator 然后下载 3、项目中使用 在Vue项目中的assets中新建fonts文件夹…

OpenAI公布ChatGPT安全框架

12月19日&#xff0c;OpenAI在官网公布了“准备框架”&#xff08;Preparedness Framework&#xff09;测试版。该文档详细介绍了OpenAI是如何保证ChatGPT等产品的安全防护措施、开发和部署流程。 OpenAI表示&#xff0c;随着大模型的功能迭代不断完善&#xff0c;其能力已经开…

大创项目推荐 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于动态哈夫模型及双边匹配的电动汽车充电引导策略》

这个标题涉及两个主要概念&#xff1a;动态哈夫模型和双边匹配&#xff0c;用于制定电动汽车充电引导策略。 动态哈夫模型&#xff08;Dynamic Hawkes Model&#xff09;&#xff1a; 哈夫模型是用于描述事件发生的随机过程模型&#xff0c;特别适用于描述时间序列中的事件间的…

基于SSM的旅游管理系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对旅游信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&am…

喜报|亚数荣获“2023物联网场景应用品牌企业”奖项

12月5日至6日&#xff0c;以“物联中国 数智雄安”为主题的“千企雄安行&#xff1a;2023物联网产业品牌大会”在雄安新区举办。 大会由雄安新区管理委员会、中关村发展集团股份有限公司、物联中国团体组织联席会主办&#xff0c;雄安新区投资促进服务中心、北京物联网智能技术…