jvs-rules 规则引擎-变量管理(函数式)的配置说明

news2024/10/6 8:23:52

JVS规则引擎变量管理

变量在规则引擎中的作用

  1. 数据存储和共享:变量配置允许在规则引擎中存储和访问数据。通过定义变量,可以将数据存储在规则引擎中,使其可供规则和决策过程使用。这样可以消除重复数据存储的需求,提高数据的共享和重用性。
  2. 决策逻辑的简化:通过使用变量,可以将规则引擎中的决策逻辑抽象为更具可读性和可维护性的形式。变量可以用于存储和操作不同类型的数据,如数字、字符串、日期等。通过使用变量,可以使规则的编写和维护更加简单,减少重复的代码,并提高规则的可读性和可维护性。
  3. 动态性和灵活性:变量配置允许在规则引擎中动态设置和更新变量的值。这样,当系统中的数据或环境发生变化时,可以实时更新变量的值,从而影响决策过程的结果。通过改变变量的值,可以灵活地调整规则的行为,而不需要修改底层的规则逻辑。
  4. 与外部系统的集成:变量配置使规则引擎能够与外部系统进行集成。变量可以用于存储和传递与外部系统交互所需的数据,如数据库查询结果、API调用返回值等。通过与外部系统的集成,规则引擎可以获取外部数据并将其用于决策过程,从而提高决策的准确性和实时性。
  5. 可管理性和可维护性:通过变量配置,规则引擎中的数据和逻辑被分离开来,提高了系统的可管理性和可维护性。变量配置使得对数据和逻辑的修改更加简单和集中化。通过集中管理变量,可以减少代码的冗余性,降低错误的风险,并简化对规则引擎的修改和扩展。

函数式编程实现变量加工

函数式编程是一种编程方法,它以类似 Excel 表格的方式进行数据处理和计算。它的特点是使用公式和函数来描述数据之间的关系和计算逻辑。

在函数式编程中,数据被组织成表格的形式,每列代表一个数据字段或变量,每行代表一个数据记录。可以通过公式和函数将不同的数据字段进行计算和操作,生成新的计算结果。

以下是类 Excel 的函数式编程的特点和优势:

  1. 公式和函数:类 Excel 的函数式编程使用公式和函数来表示数据之间的关系和计算逻辑。可以在变量的配置过程中,引用其他入参或者变量的值,并进行各种计算、逻辑操作和数据转换。
  2. 数据引用和依赖:函数式编程中,公式和函数可以引用其他数据的值,形成数据的引用和依赖关系。当被引用的单元格的值发生变化时,依赖于它的公式和函数会自动更新计算结果。
  3. 数据处理和转换:通过公式和函数,可以进行各种数据处理和转换操作,例如数值计算、逻辑判断、文本处理、日期操作等。这使得数据的加工和转换变得简单和灵活。
  4. 可视化展示:函数式编程通常提供可视化的界面来展示数据和公式的计算结果。开发者可以直观地查看和分析数据,观察公式和函数的计算过程。

 

规则变量的作用范围

在规则引擎中,全局变量和局部变量是两种不同的变量类型,它们在作用范围和生命周期上有所区别。

  1. 全局变量:全局变量是在规则引擎中定义的具有全局作用域的变量。它们可以在规则引擎的任何规则、决策或操作中被访问和使用。全局变量通常用于存储在整个规则引擎中共享和重复使用的数据。例如,全局变量可以用于存储系统配置参数、全局计数器、共享的业务规则等。全局变量的生命周期通常与规则引擎的生命周期相同,它们在规则引擎启动时创建,直到规则引擎关闭时销毁。
  2. 局部变量:局部变量是在规则引擎中定义的具有局部作用域的变量。它们仅在定义它们的规则、决策或操作内部可见和使用。局部变量通常用于存储在特定规则或决策中临时需要使用的数据。例如,局部变量可以用于存储临时计算结果、中间状态的值或特定规则的输入参数。局部变量的生命周期通常在规则或决策执行期间有效,它们在规则或决策执行完毕后被销毁。

全局变量和局部变量的选择取决于变量的作用范围和需求。全局变量适用于在整个规则引擎中共享和重复使用的数据,具有更广泛的可见性和持久性。局部变量适用于在特定规则或决策中临时使用的数据,具有更短暂的生命周期和较小的作用范围。正确地使用全局变量和局部变量可以提高规则引擎的性能、可读性和维护性,同时满足不同场景下的数据存储和访问需求。

变量列表展示

如图所示,变量列表将系统中所有的变量界面化展示,可以通过编辑与设计对变量修改。

变量编辑

变量编辑包括变量名称,变量的说明

变量设计器上图所示,采用函数式编程,通过函数将左侧的数据进行加工映射,生成业务场景中所需要的数据。其中函数列表中包括7大类型的函数,基本上包括日常常用的一些函数方法;函数编辑区是通过伪代码的形式实现的具体变量场景需求,使用的方式是类似与excel的操作方式,点击左侧函数,系统会自动将函数引入到编辑区,在右选对应接口,对应输出的字段,成为编辑区内函数的入参。

函数引用

函数支持常用的各类函数,鼠标悬空时,将显示函数的具体说明,点击函数时,系统自动将对应函数引入到变量编辑区内容

变量的创建

点击数据源,选择对应的数据接口,或者不同的数据来源,不同场景下,左侧可以选择的数据来源有差异,根据场景的上下文系统自动进行判断。

变量的配置

a、选择数据来源,如图所示,数据来源往往是我们经常看到的数据公司,每个数据公司采用相同的加密认证方式,提供多个不同的数据接口。

b、选择对应的接口名称

c、选择对应的接口出参,这里的输出数据多数以json形式存在,界面上做了解析,使用的时候可以直接选择对应子节点的出参作为输入变量。

d、系统展示筛选出来待使用的原始数据,这些数据可以直接作为函数的入参

e、可以引用已经配置过的变量

 

变量的测试

点击测试,系统展示测试界面

测试界面如图:

输入测试数据后,直接可以展示测试结果。

 

在线demo:http://jvs-rules.bctools.cn/

基础框架开源地址:https://gitee.com/software-minister/jvs

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

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

相关文章

ipad手写笔什么牌子好?最好用的电容笔

由于Apple pencil太过昂贵,很多小伙伴想入手一支电容笔,但是国内的品牌众多,不知道该如何挑选出合适自己的电容笔,我们在挑选电容笔要注意一些事项,才能挑选出合适的电容笔,今天给大家总结几个点再给大家介…

如何部署项目到Tomcat + 第一个Servlet程序

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 目录 文章目录 一、Tomcat 1.1 Tomcat是什么 1.2 下载安装 1.3 部署项目 二、第一个Servlet程序 2.1 Servlet是什么 2.2 创建Maven项目 2.3 引入依赖 2.4 创建目录 2.5 编写类方法 2.6 打包…

进程(三)

进程三 2.11 进程同步、进程互斥2.11.1 进程同步2.11.2 进程互斥2.11.3 总结 2.12 进程互斥和软件实现方法2.12.1 单标志法2.12.2 双标志先检查法2.12.3 双标志后检查法2.12.4 Peterson 算法2.12.5 总结 2.13 进程互斥和硬件实现方法2.13.1 中断屏蔽方法2.13.2 TestAndSet 指令…

vue 阻止事件冒泡常用的方法

在 Vue 中&#xff0c;阻止事件冒泡有两种常用方法&#xff1a; 1. 使用 event.stopPropagation() 方法&#xff1a; 在事件处理函数中&#xff0c;可以通过调用事件对象的 stopPropagation() 方法来阻止事件冒泡。例如&#xff1a; html <template> <div click"…

ChatGPT研究框架(2023)

摘要 ChatGPT市场反应热烈&#xff0c;国内外巨头纷纷入场 据统计&#xff0c;ChatGPT日活跃用户数的增速远超Instagram&#xff0c;1月份平均每天有超过1300万名独立访问者使用ChatGPT&#xff0c;是去年12月份的 两倍多&#xff1b;国内外科技巨头都非常重视ChatGPT引发的科…

牛客网DAY2(编程题)

圣诞节来啦&#xff01;请用CSS给你的朋友们制作一颗圣诞树吧~这颗圣诞树描述起来是这样的&#xff1a; 1. "topbranch"是圣诞树的上枝叶&#xff0c;该上枝叶仅通过边框属性、左浮动、左外边距即可实现。边框的属性依次是&#xff1a;宽度为100px、是直线、颜色为gr…

房地产行业IT运维安全就用行云管家堡垒机!

对于房地产行业而言&#xff0c;安全TI运维是构建数字化企业的核心&#xff0c;是推动其业务发展的信息化支撑体系。所以一个靠谱的IT运维安全软件非常重要。不仅可以省时省力&#xff0c;还能保障网络安全&#xff01;这里我给推荐行云管家堡垒机&#xff01; 行云管家公司介…

枚举、反射

枚举 jdk1.5之前&#xff0c;需要自己实现枚举 自己实现枚举 public class StatusEnum {private final String id;private final String code;private final String name;private StatusEnum(String id, String code, String name){this.id id;this.code code;this.name …

使用预训练的 ImageNet 模型进行图像分类

在这篇文章中,我们将学习如何使用预训练的 ImageNet 模型来执行图像分类。我们已经看到了如何训练一个简单的神经网络来对 CIFAR-10 数据集中的图像进行分类,但这是一个相对简单的任务,因为只有十个类别。另一方面,对大量对象类型进行分类将需要包含数百万个参数的更大网络…

华为OD机试真题B卷 Java 实现【字符统计】,附详细解题思路

一、题目描述 输入一个只包含小写英文字母和数字的字符串&#xff0c;按照不同字符统计个数由多到少输出统计结果&#xff0c;如果统计的个数相同&#xff0c;则按照ASCII码由小到大排序输出。 数据范围&#xff1a;字符串长度满足 1≤len(str)≤1000 。 二、输入描述 一个…

图像算法工程师岗位的基本职责范围(合集)

图像算法工程师岗位的基本职责范围 图像算法工程师岗位的基本职责范围1 职责&#xff1a; 图像内容识别、图像纹理优化方面的算法基础研发; 三维模型内容识别、三维模型优化方面的算法研发; 遥感影像处理、内容理解方面的算法研发; 以上1,2,3方面的内容可选择某一项或者多项; 可…

CodeForces..翻转魔术.[简单].[找规律]

题目描述&#xff1a; 题目解读&#xff1a; 给定由0&#xff0c;1组成的长度为n的字符串&#xff0c;执行翻转操作&#xff0c;即0变1&#xff0c;1变0&#xff1b; 判断执行一次翻转之后是否为回文。 解题思路&#xff1a; 寻找规律&#xff1a;如果翻转前已经是回文&…

这里有一个源码调试方法,短小精悍,简单粗暴,但足够好用。

文章中有这样的一段描述&#xff1a; 然后有个读者来问我&#xff1a; 是怎么把 JDK 源码中的一行代码给注释掉的&#xff1f; 这个问题确实不错&#xff0c;属于一个偶尔用一下能起到奇效的源码调试技巧。所以我决定写个文章来说明一下这个问题。 但是这个技巧确实非常的简单…

VS输出路径和生成事件

在生成时&#xff0c;常常希望输出文件夹整洁&#xff0c;因此需要设置dll或exe输出位置&#xff0c;同时也希望对一些文件做一些特殊操作 VS的 UI 常用缩写 “./”&#xff1a;代表目前所在的目录。 " . ./"代表上一层目录。 “/”&#xff1a;代表根目录。 生成…

【图像分割】SAM:Segment Anything论文学习V1

论文:2304.Segment Anything 代码&#xff1a; https://github.com/facebookresearch/segment-anything 官网与demo&#xff1a;https://segment-anything.com/ 概要&#xff1a;SAM是什么&#xff1f; 是通用的分割模型 可以通过 模糊的点选择、文字输入、标注框对图片进行标…

Scala学习(十一)---集合高阶

文章目录 1.集合常用方法2.衍生集合3.集合的常用函数 1.集合常用方法 class Test_Func {} object Test_Func{def main(args: Array[String]): Unit {val list List(1, 2, 3, 4, 5)//定义一个List集合val set Set(6, 7, 8, 9)//定义一个Set集合//1.获取集合长度&#xff0c;…

Spring Boot如何与其他技术进行集成,如Spring Cloud、Spring Security、Spring Data等?

Spring Boot与其他技术集成 Spring Boot 是一个快速构建 Spring 应用程序的框架&#xff0c;它提供了自动配置和快速开发的特性&#xff0c;使得开发人员可以更加专注于业务逻辑的实现而不是搭建框架。Spring Boot 可以轻松集成其他 Spring 生态系统中的技术&#xff0c;例如 …

pnpm无法加载文件 (解决方法 )

例如&#xff1a;我现在要运行一个TS的项目&#xff0c;我的电脑上没有安装pnpm&#xff0c;导致我的vscode一直报错无法加载 Pnpm安装 npm install -g pnpm pnpm : 无法加载文件 pnpm : 无法加载文件 C:\Users\HP\AppData\Roaming\npm\pnpm.ps1&#xff0c;因为在此系统上禁…

微念“跌倒”,李子柒也吃不饱

文 | 螳螂观察 作者 | 青月 “共有从前&#xff0c;各有未来。” 杨幂官宣与嘉行传媒结束合作关系的微文&#xff0c;同样适用于现在的微念与李子柒。 李子柒与微念之间的这场MCN机构与网红IP之间由于利益分配的矛盾&#xff0c;经过500多天的博弈后&#xff0c;最终以李子柒…

2.6. Java内存管理与垃圾回收

2.6.1. Java内存模型 在Java中&#xff0c;内存被划分为以下几个区域&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a;存储对象实例和数组&#xff0c;是垃圾回收的主要区域。栈&#xff08;Stack&#xff09;&#xff1a;存储局部变量和方法调用。每个线程有自己的…