前言:规则引擎通过将业务规则和开发者的技术决策分离, 实现了动态管理和修改业务规则而又不影响软件系统的需求。以下通过实例对基于SQL 查询、自定义规则等一系列场景来说明规则引擎在数据分析中的应用。
在现代的企业级项目开发中, 商业决策逻辑或业务规则往往是硬编码嵌入在系统各处代码中的。但是外部市场业务规则是随时可能发生变化的, 这样开发人员必须时刻准备修改、更新系统,降低了效率。在这种背景下, 规则引擎应运而生,它通过将业务规则和开发者的技术决策分离, 实现了动态管理和修改业务规则而又不影响软件系统的需求。规则引擎具有广泛的应用领域, 同样也适用于数据分析和清洗。
假设我们有以下所示的一个表结构:
字段名 |
字段类型 |
说明 |
Name |
Varchar(50) |
姓名 |
Sex |
Int |
性别(1:男,0:女) |
Department |
Varchar(50) |
部门 |
Salary |
Int |
工资 |
我们可能需要判断工资(Salary)字段不超过5000,按照此规则对该表中的数据进行清洗分析。
在数据分析中, 数据通常存储在如上所示的数据库表中,并且数据量也是比较大的。不可能一次性地导入到内存中供规则引擎使用。因此我们将通过规则引擎来分批读取并导入数据到内存中。
通过规则引擎进行数据分析将遵从以下所示的结构步骤:
1:需分析的数据
2:数据读取
3:将数据写入内存
4:规则库
5:规则引擎
6:分析结果
工作原理
首先从需要分析的数据库中按照批次读取数据,然后将读取的数据放入内存中,再按照规则对内存中的数据进行过滤分析,当内存中的数据分析完成后,清空内存中的数据,再读取下一批数据进来进行新一轮的分析,知道所有的数据处理完毕为止。
规则库
用于判断工资的业务内容我们用VisualRules提供的自然语言来进行表示,从而构成规则库,如下图所示:
上面的例子中,我们主要做的工作就是不停的判断人员的工资情况,大于5000就发出警告信息,并把该条数据提取出来,存放其他指定的地方。
下面我们再用一个实际的例子来做一个规则引擎的示例,说明如何用VisualRules来表示数据分析中的业务规则
在车管所电子档案系统中存在如下所示的数据表:PF_Table,用于记录档案图片的基本信息,我们对该表进行数据分析,忽略数据的完整性和有效性,我们只看有多少数据违反了以下说明的业务规则
fNo(指标) |
paNo(页号) |
Path(存放路径) |
caNo(文件) |
baNo(业务) |
0217233 |
1 |
\2008032403\0217233\1.jpg |
406101 |
2008032403 |
0217233 |
2 |
\2008032403\0217233\2.jpg |
406102 |
2008032403 |
0217233 |
3 |
\2008032403\0217233\3.jpg |
406105 |
2008032403 |
0217233 |
4 |
\2008032403\0217233\4.jpg |
406108 |
2008032401 |
业务规则
1:path由三部分组成:业务类型,指标档案,页号。
业务类型:必须与baNo一致
指标档案:必须与fNo一致
页号:必须与paNo一致
我们可以把VisualRules对数据的分析简单概括为3个步骤
1:规则引擎从数据库中读取数据,并将读取的数据加载到内存中
2:取出内存中的数据进行分析,校验,处理
3:返回结果数据,将脏数据存储到指定的地方或者输出其他的文件和信息
第一步:取出数据
这个过程主要是通过规则引擎从数据库中读取数据,并把数据存放到内存中,VisualRules规则引擎提供一个独特的功能,就是允许规则引擎直接访问数据库,而不需要其他任何外部程序代码来协助。过程和传统的编码方式一样,编写SQL查询语句,然后执行查询,将结果存入内存。
对一个数据库进行分析的过程中,数据量肯定是巨大的,所以在编写SQL语句读取数据这个环节,我们要做一个说明:它可能需要DBA或者是专业的数据库操作人员来完成,这个和规则引擎没有关系,规则引擎只负责执行查询,以及后续动作。
在这里我仅用一个简单的查询语句来说明VisualRules提供的这个功能:
select top(10) * from PF_Table
这表示我只读取PF_Table数据表的前10条数据来进行处理
通过规则引擎对象库中添加test.dbs数据库连接对象,然后通过该连接就可以直接访问数据库,编写查询,插入,删除,更新等语句
在SQL语句编写完成后,我们就可以在规则中执行该语句
在规则包中添加一条规则,然后将复制的执行SQL的方法粘贴到规则的那么中
这样,当规则运行的时候就会执行该查询,同时会把查询得到的数据放入到内存中,在这里我们定义了内存表这个规则对象,可以直观的看到内存中的数据
第二步:数据分析处理
数据加载到内存中以后,我们需要取出来用配置好的规则来进行分析过滤
因为path由3部分组成,每个部分都有对应的规则,所以我们先把这3部分按照特定的字符来分开,然后看第一部分是否与业务类型一致,第二部分是否与指标档案,第三部分的数字是否与页号一致,如果任何一个不一致,那么该条数据是错误的数据
从上面的规则配置来看,规则实际上是对业务知识的抽象,其表示形式与具体数据库无关, 因此用户在数据质量分析过程中编写的规则能够在其他相似的业务环境下复用。假如以后需要对其他的表进行数据监控。这种情形下, 用户无需重新编写规则只需利用先前在数据分析中定义好的VisualRules规则。
最后, 我们可以看出基于VisualRules规则引擎的数据分析系统具有以下优点:
1:规则可以从所有应用程序具体化到一个集中式的规则库。在这个规则库中, 可以使用专门的规则管理工具( 如TemaServer) 来管理这些规则
2:规则本身是动态的, 允许在不重新构建系统组件的情况下在整个系统实现业务规则的变化
3:VisualRules的扩展性允许用户自定义新的运算函数和清洗方法
4:基于VisualRules规则的数据分析可以实现良好的交互性
5:以VisualRules表示的规则灵活的改变和很好的复用
相关推荐
在数据质量管理、数据分析等领域,规则引擎扮演着重要角色,能够帮助用户根据预定义的规则对数据进行高效、准确的核查。 在描述中提到的博文链接(由于实际链接无法访问,这里将不展开具体的内容),通常博主会详细...
1. 风险评估:例如在金融行业中,通过规则引擎实时分析客户的信用状况,决定是否批准贷款申请。 2. 自动决策:在保险业,根据保单条款和客户信息,自动计算保费和理赔金额。 3. 数据清洗:在数据处理过程中,利用...
Java 规则引擎原理主要涉及将商业决策逻辑与应用程序代码分离,使得业务规则可以在运行时动态管理和修改,以适应不断变化的企业环境。这种技术源于基于规则的专家系统,特别是推理引擎的发展。 1. **规则引擎产生...
在这里,我们创新性地引入了操作数据库的功能到规则引擎中。这使得规则引擎可以直接访问数据库,读取和写入数据,从而实现更加灵活和高效的数据处理和分析。 在规则配置过程中,引入操作数据库的功能可以起到...
在本文中,我们将深入探讨如何使用C#编程语言与Windows Workflow Foundation (WWF)来构建一个规则引擎。规则引擎是一种软件系统,它允许程序在运行时动态地执行和修改业务规则,无需更改代码基础结构。C#结合WWF提供...
在银行交易系统中,规则引擎如Shuffle的应用至关重要。例如,它可以用于: - **风险管理**:通过实时分析交易数据,识别潜在的欺诈行为,如短时间内取消手机提醒后的大额转账。 - **客户服务**:根据客户的行为模式...
- [规则引擎在数据清洗中的应用](https://www.example.com/rule-engine-data-cleansing) - [Rete算法详解](https://www.example.com/rete-algorithm-explanation) #### 七、总结 综上所述,基于规则引擎的数据清洗...
Java规则引擎是一种强大的工具,它允许程序在运行时根据...通过学习这个文档,开发者不仅可以理解Java规则引擎的工作原理,还能了解到如何在实际项目中有效地应用和管理规则引擎,提升业务系统的智能化和动态适应能力。
本文将深入探讨规则引擎中的规则测试和轨迹跟踪功能,帮助开发者更好地理解和运用这一技术。 1. 规则测试 规则测试是验证规则引擎正确性的关键步骤。规则引擎通常提供两种测试方式:普通规则包测试和批量测试。 -...
在这个"Drools规则引擎使用demo"中,我们将深入探讨Drools的核心概念、工作原理以及如何通过实际操作来运用它。 1. **Drools核心概念**: - **规则(Rule)**:是Drools中的基本单位,包含条件(LHS,左侧)和行动...
JSR 94定义了一套Java应用程序接口(API),这些API允许应用程序使用规则引擎,而不需要了解底层规则引擎的具体实现细节。这样的设计使得不同的规则引擎能够通过一套通用的API进行交互,从而简化了规则引擎的使用。 ...
标题中的“规则引擎的实现”指的是在软件系统中用于处理业务规则的一种技术。规则引擎允许开发者将业务逻辑从应用程序代码中分离出来,使得业务规则可以独立于核心业务流程进行管理和维护,从而提高了系统的灵活性和...
规则引擎是嵌入应用程序的组件,它负责从应用程序代码中分离业务规则,并允许业务规则通过特定的语法编写和管理。它接受数据输入,解释并执行业务规则,以此做出决策。规则引擎的使用使业务逻辑与业务规则分离,便于...
1. **匹配器(Context)**:这是规则引擎工作的上下文环境,负责将工作存储器中的数据对象与规则集容器中的规则进行匹配。匹配成功的规则将被传递到执行器中等待执行。 2. **工作存储器(Working Memory)**:存储...
规则引擎的核心功能在于将业务逻辑从应用程序代码中分离出来,使得业务规则的修改和维护变得更加便捷。在规则引擎中,"规则包"是组织和管理规则的基本单元,而"规则库"则是存储这些规则的地方。 "变量跟踪"是规则...
5. 应用场景:如金融风险评估、保险理赔审核、电商促销策略等,展示了规则引擎在实际业务中的广泛应用。 6. 实施与维护:如何将规则引擎集成到现有系统中,以及如何方便地管理和更新规则。 7. 与Java的关系:由于...
- **规则引擎的应用**:最后,将规则引擎集成到现有的应用程序中。应用程序只需要调用规则引擎接口,而具体的业务逻辑处理则由规则引擎内部完成。 ##### 2.4 实现案例 例如,在一个电子商务平台中,订单处理涉及到...
规则引擎的主要目的是为了应对企业级项目中不断变化的业务逻辑,使非技术人员(如业务分析师或策略管理者)能够直接修改规则,而不需依赖程序员进行代码修改。这提高了软件的灵活性和适应性。 JSR-94(Java ...