后端低代码平台探索总结

news2024/11/26 13:42:06

业务需求快速变化的背景

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

可配置、可扩展从浅到深

从简单的表达式计算、报表模板/邮件模板/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.coloradmin.cn/o/1320882.html

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

相关文章

Java中Exception的使用方法

Exception介绍异常处理机制的优缺点常见的Exception异常处理的常见错误优雅的处理异常异常处理中存在的性能问题Java自定义异常示例 Exception介绍 在Java中,异常(Exception)是一种特殊类型的对象,表示程序运行过程中发生的意外或…

智慧养老:创新科技让老年生活更美好

智慧养老:创新科技让老年生活更美好 随着人口老龄化的加剧,智慧养老成为了关注焦点。智慧养老以创新科技为核心,旨在改善老年人的生活品质、促进健康、增强安全感和社会融入感。本文将详细介绍智慧养老的关键技术和应用场景,带您了…

iPhone16:首款AI iPhone?

随着科技水平的不断发展,智能手机逐渐成为人们最依赖的电子产品之一。为能够满足用户需求,手机的硬件、外观设计与性能飞速提升,这也导致智能手机市场快速进入到瓶颈期。 为了能够带来更优秀的表现,苹果可能会为iPhone 16系列带来…

黑马React:基础拓展

黑马React: D10-基础拓展 Date: December 18, 2023 useReducer 基础使用 作用: 让 React 管理多个相对关联的状态数据 补充:和useState的作用类似,用来管理相对复杂的状态数据 **特点:**useReducer返回值为一个数组, 可以解构处数值stat…

【具身智能评估9】Open X-Embodiment: Robotic Learning Datasets and RT-X Models

论文标题:Open X-Embodiment: Robotic Learning Datasets and RT-X Models 论文作者:– 论文原文:https://arxiv.org/abs/2310.08864 论文出处:– 论文被引:–(12/18/2023) 论文代码&#xff1a…

力扣日记12.18-【二叉树篇】合并二叉树

力扣日记:【二叉树篇】合并二叉树 日期:2023.12.18 参考:代码随想录、力扣 617. 合并二叉树 题目描述 难度:简单 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时&#xf…

公共字段自动填充——后端

场景:当处理一些请求时,会重复的对数据库的某些字段进行赋值(如:在插入和更新某个物品时,需要更新该物品的更新时间和更新者的信息),这样会导致代码冗余。 如: 思路: 自…

Arma3/武装突袭3东风战役最后一关游戏无法保存的解决办法

Arma3这个游戏玩进去还是非常有可玩性的,可是在玩过了它本体自带的东风系列战役后,在最精髓的最后一关——game over这个关卡,却有个非常头疼的问题。 逃跑其实是非常简单的,但是想要无伤环游全岛确十分困难,因为这关卡…

探索人工智能中的语言模型:原理、应用与未来发展

导言 语言模型在人工智能领域中扮演着重要的角色,它不仅是自然语言处理的基础,也是许多智能系统的核心。本文将深入研究语言模型的原理、广泛应用以及未来发展趋势。 1. 语言模型的原理 统计语言模型: 基于概率统计的传统语言模型&…

云原生之深入解析如何在K8S环境中使用Prometheus来监控CoreDNS指标

一、什么是 Kubernetes CoreDNS? CoreDNS 是 Kubernetes 环境的DNS add-on 组件,它是在控制平面节点中运行的组件之一,使其正常运行和响应是 Kubernetes 集群正常运行的关键。DNS 是每个体系结构中最敏感和最重要的服务之一。应用程序、微服…

redis:六、数据过期删除策略(惰性删除、定期删除)和基于redisson实现的分布式锁(看门狗机制、主从一致性)和面试模板

数据过期删除策略 Redis的过期删除策略:惰性删除 定期删除两种策略进行配合使用 惰性删除 惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就…

转载: iOS 优雅的处理网络数据

转载: iOS 优雅的处理网络数据 原文链接:https://juejin.cn/post/6952682593372340237 相信大家平时在用 App 的时候, 往往有过这样的体验,那就是加载网络数据等待的时间过于漫长,滚动浏览时伴随着卡顿,甚至在没有网…

NLP论文阅读记录-ACL 2023 | 10 Best-k Search Algorithm for Neural Text Generation

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1优势2.2 挑战 三.本文方法3.1 并行探索3.2 时间衰变3.3堆修剪3.4 模型得分 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果 五 总结 前言 用于神经文本生成…

【Transformer】Transformer and BERT(1)

文章目录 TransformerBERT 太…完整了!同济大佬唐宇迪博士终于把【Transformer】入门到精通全套课程分享出来了,最新前沿方向 学习笔记 Transformer 无法并行,层数比较少 词向量生成之后,不会变,没有结合语境信息的情…

Transformer Decoder的输入

大部分引用参考了既安的https://www.zhihu.com/question/337886108/answer/893002189这篇文章,个人认为写的很清晰,此外补充了一些自己的笔记。 弄清楚Decoder的输入输出,关键在于图示三个箭头的位置: 以翻译为例: 输…

支持向量机(SVM):高效分类的强大工具

文章目录 前言1. SVM的基本原理1.1 核心思想1.2 支持向量1.3 最大化建模1.4 松弛变量1.5 核函数 2. SVM与逻辑回归的区别和联系2.1 区别2.2 联系 3. SVM的应用领域3.1 图像分类3.2 文本分类3.3 生物信息学3.4 金融领域3.5 医学诊断 4. SVM的优势与挑战4.1 优势4.1.1 非线性分类…

分布式理论 | RPC | Spring Boot 整合 Dubbo + ZooKeeper

一、基础 分布式理论 什么是分布式系统? 在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”; 分布式系统是由一组通过网络进行通信、为了完成共同的…

【02】GeoScene海图生产环境创建

1.1 海图生产环境 GeoScene中的企业级海事制图由中央航海信息系统数据库(NIS库)来处理,将之前传统桌面产品库(PL库)产品管理方面的能力已经移植到NIS数据库,以ProductDefinitions、ProductCoverage、Produ…

主从reactor多线程实现

现场模型图片,从网上找的 出于学习的目的实现的,如有不对的地方欢迎留言知道,简单实现了http的请求,可通过postman进行访问 启动项目: 返回数据示例 postman请求 附上源码,有问题直接看源码吧

低代码工作流,在业务场景下启动流程节点绑定的具体步骤与注意事项

在业务管理的场景下,存在先做了对应的数据管理,后续增加管理的规范度,“在业务数据变化时发起流程”的需求,那么这种情况下就需要在业务管理(列表页、表单)中发起流程,让业务模型使用流程配置&a…