网站首页 > 博客文章 正文
逻辑引擎介绍
逻辑引擎是一种能够处理逻辑表达式的程序,它能够根据用户输入的表达式计算出表达式的值。在实际应用中,逻辑引擎通常被用于处理规则引擎、决策系统、业务规则配置等领域,具有广泛的应用前景。
原理与核心功能描述
基础原理
以下是JVS逻辑引擎的一般实现原理:
- 规则定义:首先,需要定义一组规则,这些规则描述了在特定条件下需要执行的操作。规则通常由条件和操作组成。条件是一个布尔表达式,用于检查输入是否满足规则。操作是一组指令,用于在规则满足时执行。
- 规则匹配:一旦规则定义好了,JVS逻辑引擎会将输入与规则进行匹配。如果输入满足规则的条件,那么该规则就会被触发。
- 规则执行:当规则被触发时,JVS逻辑引擎会执行该规则的操作。操作可以是任何有效的指令,例如输出消息、更新数据库或调用其他函数。
- 结果输出:最后,JVS逻辑引擎会输出执行结果。这可以是任何有效的输出,例如消息、日志或其他数据。
在JVS逻辑引擎中,规则是通过编程语言来定义的。以下是一个示例规则定义的代码块:
@Service
@AllArgsConstructor
@Rule(value = "生成唯一ID",
group = RuleGroup.工具插件,
explain = "生成唯一ID",
test = true,
returnType = ClassType.文本,
// iconUrl = "rule-ziyuan",
testShowEnum = TestShowEnum.TEXT
)
public class IdNumberServiceImpl implements BaseCustomFunctionInterface {
@Override
public Object execute(Object o, Map params) {
return IdWorker.get32UUID();
}
}
在这个示例中,定义了节点 , 和节点功能 ,为生成一个32位uid。这只是一个简单的示例,实际的规则可以更加复杂和灵活。
功能架构说明
逻辑引擎整体功能结构图如下所示:
如上图所示系统发起逻辑引擎的调用有三种方式:
1、用户从对应页面发起(相关功能提前对接逻辑引擎),然后通过业务网关触发逻辑的执行
2、对端系统通过api调用发起
3、系统支持通过定制器触发逻辑。
整体逻辑引擎核心架构分为逻辑执行器,数据处理模块以及基础管理模块三大部分:
逻辑执行模块包括:逻辑查找、图形化计息、节点处理、参数构建、路由判断、推理执行、数据引入绑定等功能
数据处理模块包括:节点设计数据加载、动态参数加载、公式数据加载、扩展节点数据加载等
基础管理模块包括:逻辑的设计数据存储管理、定时任务的管理、扩展组件的管理、执行的日志管理、执行的日志分析等功能
技术栈
JVS逻辑引擎是使用java语言,采用spring cloud 编写的一个工具,详细技术栈如下:
- 开发语言:JAVA
- 基础框架:JVS-base(spring boot)
- 前端框架:VUE
- 数据库 :MySql
业务与功能解耦
业务与功能的解耦是逻辑引擎基础的设计思想。
简单理解就是代码中各部分关联度过高的部分,将可变的业务规则与相对固定的功能分离,通过标准的调用实现。
解耦核心的是两个方面,第一个方面是将业务执行过程抽象,固定功能与可变的业务逻辑;第二个方面是设计如何触发。
举一个大家都遇见过的经典耦合场景:用户注册成功之后需要进行发送短信通知或是邮件通知,用户注册逻辑与发送短信或是邮件通知逻辑放在一块就是一种耦合现象,如果短信或是邮件功能异常,整个用户注册功能就会异常,会带来不好的用户体验,另外的缺点是维护复杂,不便于拓展。将业务逻辑与功能性逻辑进行拆分开就是属于解耦。
在解耦上,核心的表现就是如何实现关联动作事件,而且为了让逻辑引擎有更便捷、广泛的使用,是需要更多的场景来触发逻辑配置的结果的。如下图所示:
- 列表页按钮触发的设置:
- 列表页数据导入触发:
- 表单数据变动触发的设置:
API触发:
定时任务触发:
下期预告:jvs逻辑引擎的规则推理与判断(函数)
在线demo:https://frame.bctools.cn/
猜你喜欢
- 2024-12-30 IF嵌套层数太多?试试Drools规则引擎
- 2024-12-30 Java逻辑引擎服务编排,零代码低成本解决企业复杂业务需求
- 2024-12-30 JVS开源框架系列:多租户管理「含开源地址」
- 2024-12-30 开启灵活开发编码模式:规则引擎drools——基础语法
- 2024-12-30 Aviator规则引擎最佳实践 ilog规则引擎
- 2024-12-30 使用若依框架开发和部署简单应用的基本过程
- 2024-12-30 认识工作流程引擎 认识工作流程引擎教案
- 2024-12-30 开源规则引擎LiteFlow项目应用实践
- 2024-12-30 JAVA工作流「java工作流引擎框架」
- 2024-12-30 规则引擎EasyRule实践 规则引擎 go
你 发表评论:
欢迎- 最近发表
-
- 比GoPro 13更强的大疆Action 5 Pro,到底强在哪里?
- 信号和槽(信号和槽的实现原理)
- 在响应式项目中连接设计与开发(请简述实现响应式设计包括哪些技术点)
- 【C#】委托、Action、Func 和 Event 之间的关系
- 如何使用JavaScript实现Prompt弹窗?
- 谷歌Magic Actions功能曝光:AI革新安卓16通知交互
- 基于目标TPS的性能测试,如何通过手动设置场景进行测试?
- IOS基础学习之输出口和动作(io口输入输出实验总结及体会)
- 《Java语言程序设计》期末考试模拟试题——判断题和问答题
- Android学习之Touch事件的处理(android触摸事件实例)
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)