JVS-rules规则引擎中基础和复合变量的详细介绍

熵桥露台
• 阅读 219

JVS-rules中的“变量”概念与编程语言中的变量类似,但它们通常在规则系统中处理条件判断、业务结果复制场景,如下所示:

  1. 条件判断:在规则引擎中,规则通常由两个部分组成:条件和分支。变量用于描述条件部分中的数据和状态。例如,一个规则可能是:“如果温度超过30度,则执行打开空调的分支”。这里的“温度”就是一个变量,它描述了一个条件。
  2. 动作执行:当规则引擎确定某个规则的条件满足时,与该规则节点执行后续的操作或者跳转结束节点。变量也可以在动作中使用,以便根据条件的满足情况来执行相应的操作。
  3. 上下文信息:变量可以用来在规则执行过程中传递上下文信息。这意味着在规则引擎中,变量可以代表各种数据,例如传感器读数、用户输入等。
  4. 动态性:规则引擎通常允许在运行时动态地修改变量的值或属性,以便适应不同的场景或条件。
  5. 作用域:变量可能有不同的作用域,取决于规则引擎的设计。一些规则引擎可能会将变量限制在特定的规则中,而另一些可能允许变量在整个规则集中共享。
  6. 数据类型:变量可以具有不同的数据类型,例如数值、字符串、布尔判断值,具体取决于规则引擎的实现。
  7. 决策支持:规则引擎中的变量用于支持决策过程,使得规则可以根据不同的条件和数据进行灵活的决策。
    JVS-rules规则引擎中基础和复合变量的详细介绍
    那么我们如何理解复合变量与基础变量呢?

基础变量

"基础变量"通常指的是编程中的基本数据类型,也叫做原始数据类型或简单数据类型。这些基本数据类型是决策中直接支持的最基本的数据类型,它们通常包括数值、字符、布尔值等。
这种类型的变量我们通常可以通过函数加工去做数据转换例如 y=f(x) ,那么 y 和 x 都是变量 ,我们可以通过把 x 传入函数进行加工,然后获得新的数据,系统中提供了大量函数加工的 方法,如下图所示:
JVS-rules规则引擎中基础和复合变量的详细介绍
①:定义的一变量名 :Y
②:定义的变量的说明备注
③:选择这个变量加工的函数,系统提供了100+的标准函数,这里可以自定义扩展自己所需要的函数
④:入参列表选择窗,这里可以是选择整个决策的入参、可以选择外部API输出的结果,也可选择系统中已经存在的变量(嵌套使用)
⑤:具体加工Y 的函数配置表达式
按照上述的例子 ,整个过程就是在调用这个决策的时候,业务调用方传入:(1,2)两个参数,那么 X1=1 ,X2=2,在后续的执行过程中 Y=3,可以用于判断、赋值等多个场景使用。

复合变量

那么什么又是复合变量呢?这里我们可以简单理解为复合变量可以 想成 一张经过加工后的 数据表(多行数据),这里复合变量就是通过对一个数据库的表进行查询,做了相应的数据过滤,然后获得的数据结果,那么这个变量中就表示了多行数据
JVS-rules规则引擎中基础和复合变量的详细介绍

如上图所示,这个变量获取的方式 是来源于数据库的数据查询,然后在界面上通过流程化的数据加工(过滤、关联、转换等操作),然后把需要的多行数据放如到变量之中。
那么这种复合变量如何使用呢?
• 我们可以把这种变量作为明细查询的数据,通过规则的结果值返给业务端,如下图所示
JVS-rules规则引擎中基础和复合变量的详细介绍

  • 也可以对变量进行嵌套加工,把一个复合变量传化为一个基础变量,再用于规则的判断,系统中提供了对集合操作(复合变量输出的结果)的函数,如下图所示,可以将复合变量转换为基础变量。
    JVS-rules规则引擎中基础和复合变量的详细介绍
  • 复合变量的加工方式,如下图所示,包括数据数据过滤、多表关联、数据分组汇总等等各种操作
    JVS-rules规则引擎中基础和复合变量的详细介绍
    ①:各种数据加工的算子
    ②:通过流程化、拖拽化的方式,把各种算子链接起来,实现各种多行数据的加工处理,包括 数据的增删改查、数据的跨库、跨API等各种加工操作
    ③:对不同算子的具体的配置操作

    变量使用的总结

    基础变量就是对单一的数据进行加工, 复合变量就是对多行数据进行加工(实现重复、循环的数据加工操作),复合变量可以通过函数加工 转换为基础变量。
    下一期详细介绍变量中函数的操作说明

在线demo:http://rules.bctools.cn/
gitee地址:https://gitee.com/software-minister/jvs-rules

往期干货回顾

金融信贷风控系统,用jvs规则引擎就够了
规则引擎(JVS-rules):从应用到场景的全面解析
JVS规则引擎,打造智能自动化决策的利器

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
晴空闲云 晴空闲云
4年前
javascript实践教程-07-分支结构
本节目标1.掌握js中4种分支结构。内容摘要本篇介绍了js中的4种分支结构:if、ifelse、elseif、switchcase,用来判断在不同的条件下运行不同的代码分支。阅读时间1015分钟。分支结构js中分支结构总共有4种:ififelseelseifswitchcaseifif用来判断某个条件是否成立,如果成立则执行条
九路 九路
2年前
Go语言变量
Go语言变量和数学中的变量概念一样,变量有名字,有值,通过名字访问变量。在计算机编程语言的世界里,变量就是一块内存区域,通过名字,对这块内存区域进行赋值等操作。1Go语言变量的命名规则Go语言的变量命名规则和其它语言一样:由字母,数字,下划线组成注意:变量
CuterCorley CuterCorley
4年前
商业数据分析从入门到入职(6)Python程序结构和函数
一、Python程序结构Python中,有3种常见的程序结构:Sequence顺序从上向下依次执行。Condition条件满足某个条件则执行。Loop循环重复执行某个动作。1.if条件判断某个变量是否满足某个条件时如下:pythonpossibility_to_rain0.7print(possibility_to_rain
先知 先知
4年前
逻辑运算符详细归类
&&和&基本规则|&&|&|||||两个条件true,结果ture|两个条件true,结果ture||&&|&|||||第一个条件false,第二个条件不会判断,结果false,效率高。|第一个条件false,第二个条件会判断,结果false,效率低。|||和|基本规则|||||
Stella981 Stella981
4年前
Sass
嵌套规则(NestedRules)Sass允许将一套CSS样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器mainp{color:00ff00;width:97%;.redbox{
Stella981 Stella981
4年前
Bypass ngx_lua_waf SQL注入防御(多姿势)
0x00前言ngx\_lua\_waf是一款基于ngx\_lua的web应用防火墙,使用简单,高性能、轻量级。默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则:select.(from|limit)(?:(union(.?)select))(?:from\Winformation_schema\W)这边
Wesley13 Wesley13
4年前
Java入门(五):控制流程
在Java中,使用条件语句和循环结构确定控制流程,在本文中,主要包括块作用域、条件语句、循环结构、中断循环这四部分。一、块作用域块,也叫复合语句,是指由一对大括号括起来的若干条Java语句。块决定了变量的作用域。一个块可以嵌套多个块。二、条件语句如果判断超过三层,建议拆分开来写,这样更加清晰。packagejav
Wesley13 Wesley13
4年前
Java多线程之内存可见性
Java多线程之内存可见性一、Java内存模型介绍什么是JMM?Java内存模型(JavaMemoryModel)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的细节所有的变量都存储在主内存中每个线程都
糟糕,被SimpleDateFormat坑到啦!| 京东云技术团队
1\.问题背景问题的背景是这样的,在最近需求开发中遇到需要将给定目标数据通过某一固定的计量规则进行过滤并打标生成明细数据,其中发现存在一笔目标数据的时间在不符合现有日期规则的条件下,还是通过了规则引擎的匹配打标操作。故而需要对该错误匹配场景进行排查,定位其
糟糕,被SimpleDateFormat坑到啦!
1.问题背景问题的背景是这样的,在最近需求开发中遇到需要将给定目标数据通过某一固定的计量规则进行过滤并打标生成明细数据,其中发现存在一笔目标数据的时间在不符合现有日期规则的条件下,还是通过了规则引擎的匹配打标操作。故而需要对该错误匹配场景进行排查,定位其根