关键词:
前言:规则引擎通过将业务规则和开发者的技术决策分离, 实现了动态管理和修改业务规则而又不影响软件系统的需求。以下通过实例对基于SQL 查询、自定义规则等一系列场景来说明规则引擎在数据分析中的应用。
在现代的企业级项目开发中, 商业决策逻辑或业务规则往往是硬编码嵌入在系统各处代码中的。但是外部市场业务规则是随时可能发生变化的, 这样开发人员必须时刻准备修改、更新系统,降低了效率。在这种背景下, 规则引擎应运而生,它通过将业务规则和开发者的技术决策分离, 实现了动态管理和修改业务规则而又不影响软件系统的需求。规则引擎具有广泛的应用领域, 同样也适用于数据分析和清洗。
假设我们有以下所示的一个表结构:
字段名 | 字段类型 | 说明 |
Name | Varchar(50) | 姓名 |
Sex | Int | 性别(1:男,0:女) |
Department | Varchar(50) | 部门 |
Salary | Int | 工资 |
我们可能需要判断工资(Salary)字段不超过5000,按照此规则对该表中的数据进行清洗分析。
在数据分析中, 数据通常存储在如上所示的数据库表中,并且数据量也是比较大的。不可能一次性地导入到内存中供规则引擎使用。因此我们将通过规则引擎来分批读取并导入数据到内存中。
通过规则引擎进行数据分析将遵从以下所示的结构步骤:
1:需分析的数据
2:数据读取
3:将数据写入内存
4:规则库
5:规则引擎
6:分析结果
工作原理:
首先从需要分析的数据库中按照批次读取数据,然后将读取的数据放入内存中,再按照规则对内存中的数据进行过滤分析,当内存中的数据分析完成后,清空内存中的数据,再读取下一批数据进来进行新一轮的分析,知道所有的数据处理完毕为止。
规则库
用于判断工资的业务内容我们用旗正规则引擎提供的自然语言来进行表示,从而构成规则库,如下图所示:
上面的例子中,我们主要做的工作就是不停的判断人员的工资情况,大于5000就发出警告信息,并把该条数据提取出来,存放其他指定的地方。
下面我们再用一个实际的例子来做一个规则引擎的示例,说明如何用旗正规则引擎来表示数据分析中的业务规则
在车管所电子档案系统中存在如下所示的数据表:PF_Table,用于记录档案图片的基本信息,我们对该表进行数据分析,忽略数据的完整性和有效性,我们只看有多少数据违反了以下说明的业务规则
fNo(指标) | paNo(页号) | Path(存放路径) | caNo(文件) | baNo(业务) |
0217233 | 1 | 2008032403 2172331.jpg | 406101 | 2008032403 |
0217233 | 2 | 2008032403 2172332.jpg | 406102 | 2008032403 |
0217233 | 3 | 2008032403 2172333.jpg | 406105 | 2008032403 |
0217233 | 4 | 2008032403 2172334.jpg | 406108 | 2008032401 |
业务规则
1:path由三部分组成:业务类型,指标档案,页号。
业务类型:必须与baNo一致
指标档案:必须与fNo一致
页号:必须与paNo一致
我们可以把旗正规则引擎对数据的分析简单概括为3个步骤
1:规则引擎从数据库中读取数据,并将读取的数据加载到内存中
2:取出内存中的数据进行分析,校验,处理
3:返回结果数据,将脏数据存储到指定的地方或者输出其他的文件和信息
第一步:取出数据
这个过程主要是通过规则引擎从数据库中读取数据,并把数据存放到内存中,旗正规则引擎规则引擎提供一个独特的功能,就是允许规则引擎直接访问数据库,而不需要其他任何外部程序代码来协助。过程和传统的编码方式一样,编写SQL查询语句,然后执行查询,将结果存入内存。
对一个数据库进行分析的过程中,数据量肯定是巨大的,所以在编写SQL语句读取数据这个环节,我们要做一个说明:它可能需要DBA或者是专业的数据库操作人员来完成,这个和规则引擎没有关系,规则引擎只负责执行查询,以及后续动作。
在这里我仅用一个简单的查询语句来说明旗正规则引擎提供的这个功能:
select top(10) * fromPF_Table
这表示我只读取PF_Table数据表的前10条数据来进行处理
通过规则引擎对象库中添加test.dbs数据库连接对象,然后通过该连接就可以直接访问数据库,编写查询,插入,删除,更新等语句
在SQL语句编写完成后,我们就可以在规则中执行该语句
在规则包中添加一条规则,然后将复制的执行SQL的方法粘贴到规则的那么中
这样,当规则运行的时候就会执行该查询,同时会把查询得到的数据放入到内存中,在这里我们定义了内存表这个规则对象,可以直观的看到内存中的数据
第二步:数据分析处理
数据加载到内存中以后,我们需要取出来用配置好的规则来进行分析过滤
因为path由3部分组成,每个部分都有对应的规则,所以我们先把这3部分按照特定的字符来分开,然后看第一部分是否与业务类型一致,第二部分是否与指标档案,第三部分的数字是否与页号一致,如果任何一个不一致,那么该条数据是错误的数据
规则引擎的应用发展
...示层,使得产品更加优化,人性化,而1990年代后,使用规则引擎将业务规则分离单独管理,使得业务系统能够更加灵活变动,响应速度更加快速,旗正商业规则管理平台正式业务规则的管理专家规则引擎由推理引擎发展而来,... 查看详情
drrols规则引擎
1.什么是规则引擎? 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来。规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则、并根据业务规则做出相... 查看详情
JavaScript中的规则引擎[关闭]
】JavaScript中的规则引擎[关闭]【英文标题】:RuleEngineinJavaScript[closed]【发布时间】:2011-12-0110:59:10【问题描述】:JavaScript中有规则引擎吗?问题是在这种情况下:考虑一个具有用户填写表单的Web应用程序。当用户填写每个字段... 查看详情
开源业务规则引擎jbossdrools
Drools是什么?规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决... 查看详情
简说规则引擎在促销返利中的应用
大型生产型企业销售渠道的建设,一般都采用代理商政策。根据地区、产品等情况,设立不同级别的代理商,不同地区、不同级别代理商有着不同的促销返利政策,也需根据企业、市场现状对促销政策进行调整,另... 查看详情
规则引擎drools在贷后催收业务中的应用
...gXiang在日常业务开发工作中我们经常会遇到一些根据业务规则做决策的场景。为了让开发人员从大量的规则代码的开发维护中释放出来,把规则的维护和生成交由业务人员,为了达到这种目的通常我们会使用规则引擎来帮助我们... 查看详情
.netrulesengine规则引擎使用(代码片段)
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业... 查看详情
数据驱动规则引擎 - Drools
】数据驱动规则引擎-Drools【英文标题】:DataDrivenRulesEngine-Drools【发布时间】:2013-08-2322:51:57【问题描述】:我一直在评估Drools作为我们的业务Web应用程序中使用的规则引擎。我的用例是一个订单管理应用程序。规则如下:-如果... 查看详情
规则引擎的应用
java开源的规则引擎有:Drools、EasyRules、Mandarax、IBMILOG。使用最为广泛并且开源的是Drools。 规则引擎的优点声明式编程规则可以很容易地解决困难的问题,并得到解决方案的验证。与代码不同,规则以较不复杂的语... 查看详情
规则引擎选型及简单应用
规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程,使用规则引擎可以把复杂、冗余... 查看详情
golang规则引擎原理及实战(代码片段)
本文主要介绍规则引擎在golang中的使用,将首先介绍golang中主要的规则引擎框架,然后利用golang原生的parser搭建一个简单的规则引擎实现基本的bool表达式解析工作。 背景随着业务代码的不断迭代,诞生出了越来越多... 查看详情
什么事规则引擎
规则引擎一、规则引擎概述1.1什么是规则引擎1.2使用规则引擎的优势1.3规则引擎应用场景一、规则引擎概述1.1什么是规则引擎规则引擎,全称为业务规则管理系统,英文名为BRMS(即BusinessRuleManagementSystem)。规则引擎的主要... 查看详情
groovy脚本实现轻量级规则引擎
参考技术A1)当业务规则变更时,对应的代码也得跟着更改,每次即使是小的变更都需要经历开发、测试验证上线等过程,变更成本比较大。2)长时间系统变得越来越难以维护。3)开发团队一般是由一个熟悉业务的BA(业务分析... 查看详情
在 Python 中实现“规则引擎”
】在Python中实现“规则引擎”【英文标题】:Implementinga"rulesengine"inPython【发布时间】:2010-10-0220:04:32【问题描述】:我正在用Python编写一个日志收集/分析应用程序,我需要编写一个“规则引擎”来匹配和处理日志消息。... 查看详情
c# 中的规则引擎设计和示例
】c#中的规则引擎设计和示例【英文标题】:rulesenginedesign&examplesinc#【发布时间】:2011-08-2508:10:43【问题描述】:我目前正在使用c#编写一个.net应用程序,并希望检查一些规则,并根据规则通过或失败执行操作。因此,我希望... 查看详情
履约核心引擎低代码化原理与实践
业界,规则引擎是一个非常普遍的技术类工具,也有很多非常优秀的开源工具,例如Drools等,它是一种嵌入在应用程序中的组件,主要解决易变逻辑和业务耦合的问题,把易变的规则从应用程序代码中分离出来,进而提升交付效... 查看详情
drools规则引擎brms
安装说明|Drools中文网http://www.drools.org.cn/category/installDrools规则引擎-在微服务中的应用-简书https://www.jianshu.com/p/887ff9021eb3Drools规则引擎-在微服务中的应用-简书https://www.jianshu.com/p/887ff9021eb3微服务组件-规则引擎-Fx_demon-OSCHINAhttps://my... 查看详情
java规则引擎及jsr-94[转]
规则引擎简介 Java规则引擎是推理引擎的一种,它起源于基于规则的专家系统。 Java规则引擎将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。Java规则引... 查看详情