一.函数在规则引擎中的作用
- 数据存储和共享:函数配置允许在规则引擎中存储和访问数据。通过定义变量,可以将数据存储在规则引擎中,使其可供规则和决策过程使用。这样可以消除重复数据存储的需求,提高数据的共享和重用性。
- 决策逻辑的简化:通过使用函数,可以将规则引擎中的决策逻辑抽象为更具可读性和可维护性的形式。变量可以用于存储和操作不同类型的数据,如数字、字符串、日期等。通过使用变量,可以使规则的编写和维护更加简单,减少重复的代码,并提高规则的可读性和可维护性。
- 动态性和灵活性:函数配置允许在规则引擎中动态设置和更新变量的值。这样,当系统中的数据或环境发生变化时,可以实时更新变量的值,从而影响决策过程的结果。通过改变变量的值,可以灵活地调整规则的行为,而不需要修改底层的规则逻辑。
- 与外部系统的集成:函数配置使规则引擎能够与外部系统进行集成。变量可以用于存储和传递与外部系统交互所需的数据,如数据库查询结果、API调用返回值等。通过与外部系统的集成,规则引擎可以获取外部数据并将其用于决策过程,从而提高决策的准确性和实时性。
- 可管理性和可维护性:通过函数配置,规则引擎中的数据和逻辑被分离开来,提高了系统的可管理性和可维护性。函数配置使得对数据和逻辑的修改更加简单和集中化。通过集中管理函数,可以减少代码的冗余性,降低错误的风险,并简化对规则引擎的修改和扩展。
二.函数的类型
在JVS规则引擎中,函数分为以下几种类型。
- API
- DB
- SQL
- Groovy
- PYTHON
- ETL
- (函数加工)
通过函数式的方式 y=f(x)这种方式获得的数据加工,从一些入参获得另外一些出参的过程,这里x表示 单个、或者单一一条数据(多个字段)的输入,得到单一一个数据的输出。
例如:如果年龄为20-30岁之间,那么输出结果result是=“通过”, 也就是如果 20<age<30,那么 result=true 的过程, 这里age、result 都是基础变量。
- (算子编排)
复合变量是通过对多行数据的操作或者对多行数据的 处理得到的结果 ,这里的结果里边可能包含多条数据多个字段,我们把他称为复合变量。
例如:如果某个企业,被执行案件超过5条,需要输出被执行案件的数量以及对应的明细清单,那么这里边需要定义 一个复合变量 cases,这里cases是一个list数据,其中是把被执行案件全部记录下来,如下所示:
{
案件1,执行主体1,执行金额1,执行结果1;
案件2,执行主体2,执行金额2,执行结果2;
案件3,执行主体3,执行金额3,执行结果3
}
还需要定义个变量no ,no的值等于 计算cases 里边的案件数量,当案件数量大于5是, 把cases 的明细返回给调用方。这里cases就是个一复合变量,这个复合变量的来源可能来源于api查询回来的结果,也可能是来源于数据库查询的结果 。
- SQL变量(sql脚本取数)
通过SQL脚本可以便捷的从数据库中取数,并且自定义SQL支持传参,可满足技术人员复杂多变的数据加工处理。
三.界面介绍
主要分为两大区域,函数列表和函数详情,如下图。
形成这样一个展现形式:函数类型-函数分类-函数列表。
四.函数的创建
函数列表将在系统中所有的函数界面化展示,可以通过编辑与设计对函数修改。在函数页面可以通过下图三处点击+新建函数。
- 选择函数类型后创建自定义分类函数。
- 在指定函类型下创建创建自定义分类函数。
- 在指定函数指定分类下创建函数。
五.函数式编程实现变量加工
函数式编程是一种编程方法,它以类似 Excel 表格的方式进行数据处理和计算。它的特点是使用公式和函数来描述数据之间的关系和计算逻辑。
在函数式编程中,数据被组织成表格的形式,每列代表一个数据字段或变量,每行代表一个数据记录。可以通过公式和函数将不同的数据字段进行计算和操作,生成新的计算结果。
以下是类 Excel 的函数式编程的特点和优势:
- 公式和函数:类 Excel 的函数式编程使用公式和函数来表示数据之间的关系和计算逻辑。可以在变量的配置过程中,引用其他入参或者变量的值,并进行各种计算、逻辑操作和数据转换。
- 数据引用和依赖:函数式编程中,公式和函数可以引用其他数据的值,形成数据的引用和依赖关系。当被引用的单元格的值发生变化时,依赖于它的公式和函数会自动更新计算结果。
- 数据处理和转换:通过公式和函数,可以进行各种数据处理和转换操作,例如数值计算、逻辑判断、文本处理、日期操作等。这使得数据的加工和转换变得简单和灵活。
- 可视化展示:函数式编程通常提供可视化的界面来展示数据和公式的计算结果。开发者可以直观地查看和分析数据,观察公式和函数的计算过程。
六.函数变量的作用范围
- 在规则引擎中,都是局部变量类型,它们在规则引擎中定义的具有局部作用域的变量。它们仅在定义它们的规则、决策或操作内部可见和使用。局部变量通常用于存储在特定规则或决策中临时需要使用的数据。例如,局部变量可以用于存储临时计算结果、中间状态的值或特定规则的输入参数。局部变量的生命周期通常在规则或决策执行期间有效,它们在规则或决策执行完毕后被销毁。
- 局部变量适用于在特定规则或决策中临时使用的数据,具有更短暂的生命周期和较小的作用范围。可以提高规则引擎的性能、可读性和维护性,同时满足不同场景下的数据存储和访问需求。
七.函数编辑
函数设计器如下图所示,采用函数式编程,通过函数将数据进行加工映射,生成业务场景中所需要的数据。其中函数列表中包括7大类型的函数,基本上包括日常常用的一些函数方法;函数编辑区是通过伪代码的形式实现的具体变量场景需求,使用的方式是类似于excel的操作方式,点击下方函数,系统会自动将函数引入到编辑区,在右选对应接口,对应输出的字段,成为编辑区内函数的入参。
八.函数引用
支持常用的各类函数,鼠标悬空时,将显示函数的具体说明,点击函数时,系统自动将对应函数引入到变量编辑区内容
九.函数的测试
如下图所示,在函数编辑页面输入测试数据后点击测试,直接可以展示测试结果。
同时也可以在函数列表对指定函数进行模拟测试,如下图: