Drools决策表+SpringBoot使用及语法详解

本文介绍了如何在SpringBoot项目中使用Drools决策表进行业务规则设计,详细阐述了决策表的关键字及其作用,并通过实例演示了Drools工具类KieHelper的使用,包括pom配置、决策表格式验证和执行效果测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

本人最近在研究SpringBoot使用Drools规则引擎实现自动流程审批功能,期间遇到过很多坑,最终选定Drools决策表的功能,决策表方便业务人员进行规则的添加就修改操作,清晰明了,以下纯属个人学习记录,欢迎学习交流。

Drools决策表

决策表是drl规则文件的变形,以excel 格式完成对规则的匹配,通俗的讲,决策表就是向电子表格输入特点的值,并加载到Drools规则库中,可以用特定的类对表格进行转换,转换为drl文件,从而用程序进行解析。废话不多说,先来一张做完的Drools决策表如下图,Drools决策表大体包含两部分,灰色部分是决策表部分,浅蓝色部分为规则部分,下面详细说明每个关键字的作用
最终效果图

决策表部分关键字

关键字 是否必填 说明
RuleSet String 在这个单元格右侧包含RuleSet的名称,与drl文件中的package一样的
Sequential true/false true则代表表格从上到下顺序执行,false 代表乱序执行
Import String 导入所需的引用的类或方法,多个类用逗号隔开
Functions String 功能与标准的drl 文件中函数相同,多个函数在每个函数后用逗号隔开,有无返回值都可以
Variables String 全局变量,多个变量用逗号隔开
Queries String 定义查询函数,多个用逗号隔开
RuleTable String 表示规则名称,在RuleTable 后面直接写规则名称,不要另起一列,规则名以逗号隔开

规则部分关键字

关键字 是否必填 说明
CONDITION String 指明该列为判断条件,相当于drl文件中的when 部分,每个规则至少有一个CONDITION
ACTION String 指明该列为结果,每行如果符合前面的所有CONDITION,既执行此行的ACTION,相当于drl文件中的then
PRIORITY int 指明该列的值将被设置为该规则的‘lalience’(规则执行先后顺序,值越大执行顺序越靠前),但注意,若在ruleSet 下设置了sequential 为true,则PRIORITY不生效,设置为false或不设置,则PRIORITY生效
NAME String 指明该列的值将会被设置为从那行产生的规则名称
NO-LOOP true/false 指明这个规则不允许循环,与drl文件中no-loop功能一样
ACTIOVATION-GROUP String 在这个列中单元格的值,指出该规则行属于特定的活动分组。一个活动分组以为这在命名组中的规则只有一条会被引用(首条规则触发哦,中止其他规则活动)与drl中含义一样
AGENDA-GROUP String 在这个列中单元格的值,指出该规则行属于特定的议程组,可以理解成获取焦点(这是一种在规则组之间控制流的方法),与drl文件中含义一样
RULEFLOW-GROUP String 在这个列中单元格的值,指出该规则行属于特定的规则流组

总结

决策表必不可少的俩部分RuleSetRuleTable,RuleSet 后面填写转换为drl 文件的包名,一般和实体类包名一致,Import需要注意的是,在Java开发中,String,Boolean这些类型是不需要在类中Import,但是在决策表中需要Import,否则会找不到类;股则RuleTable部分主要是CONDITIONACTION两个关键字,相当于 when … then … 当条件CONDITION满足时就执行ACTION后的动作。

SpringBoot 项目中决策表的使用

我目前使用的是通过Drools工具类KieHelper来调用决策表;大体分为以下几步:
1.pom引入所需Drools Mvn库
2.验证决策表转换drl文件是否正确
3.利用KieHelper执行drl文件

pom配置

引入drools版本配置,我使用的是7.5.0Final,引入以下6个基本上满足开发需求了

	<properties>
        <drools.version>7.5.0.Final</drools.version>
	</properties>
   <dependencies>
		<!-- drools -->
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
            <version>${
   drools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值