drools java规则引擎简单应用
MyDroolsTest
public class MyDroolsTest {
public static void main(String[] agrs ){
Order order = new Order();
order.setId("01020");
order.setName("京东订单");
order.setPrice(5001);
order.setArea("beijing");
User user = new User();
user.setUserId("guohui");
user.setUserName("guohui");
StatefulKnowledgeSession ksession = null;
try {
// load up the knowledge base
KnowledgeBase kbase = DroolsTools.readKnowledgeBase("OrderDrl.drl");
ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
// go !
ksession.insert(order);
ksession.insert(user);
ksession.fireAllRules();
// ksession.
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}finally{
//释放资源
ksession.dispose();
}
}
}
domain
Order:
public class Order {
private String id;
private String name;
private int price;
private String area;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
User:
public class User {
private String userId;
private String userName;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Droolstools
public class DroolsTools {
/**
* 读取解析DRL文件
* @param DrlName
* @return
* @throws Exception
*/
public static KnowledgeBase readKnowledgeBase(String DrlName) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(DrlName), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
}
orderDrl.drl
package com.sample
import com.sample.my.test.Order;
import com.sample.my.test.User;
rule "first"
when
Order(area == "beijing",price > 5000,str : name) and User(userId == "guohui",$name : userName)
then
System.out.println("操作人"+$name+"属于北京的订单大于5000经理审批====================="+str);
end
rule "second"
when
Order(area == "shanghai",price < 5000,str : name) and User(userId == "guohui",$name : userName)
then
System.out.println("操作人"+$name+"不属于北京的订单小于5000主管审批==========================="+str);
end
分享到:
相关推荐
Easy Rules,Drools,Aviator表达式求值引擎,Rule Book、Oracle Rules SDK、Blaze (fico)、IBM Decision Manager,DTRules,DSL规则引擎 规则引擎由三部分 事实(Fact):已知对象,比如以上刷卡的行为,即成事实...
在本文中,我们将深入探讨如何使用C#编程语言与Windows Workflow Foundation (WWF)来构建一个规则引擎。规则引擎是一种软件系统,它允许程序在运行时动态地执行和修改业务规则,无需更改代码基础结构。C#结合WWF提供...
规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 使用规则引擎的优势如下: 1、业务规则与系统代码分离,实现...
特色 风控系统, 规则引擎, 动态接口配置(低代码)Groovy DSL 动态规则(rule)执行引擎。DSL(特定领域语言): 开发 和 业务 共识的语言。方便业务表达需求, 方便开发理解业。一个业务需求(一般程序或一个接口)可以抽象...
Drools是一款强大的规则引擎,由Red Hat公司开发并维护,它主要用于实现业务规则的管理和执行。Drools提供了一种声明式的方式来定义业务规则,使得非技术人员也能理解和修改规则,从而降低了业务逻辑与代码的耦合度...
"java规则引擎说明" Java规则引擎是指使用Java语言开发的一种规则引擎,能够根据事实对象和规则文件计算规则结果。下面是Java规则引擎的详细说明: 一、规则引擎介绍 规则引擎是指能够根据事实对象和规则文件计算...
可视化规则引擎是一种图形化界面工具,允许用户通过拖拽组件和设定条件逻辑,直观地创建、编辑和管理复杂的业务规则和决策流程,而无需编码。有以下几个核心特点: 1. 图形化界面:提供用户友好的界面,用户可以直接...
【Drools规则引擎从入门到精通】 Drools是一个强大的业务规则管理系统,它提供了业务规则引擎、Web创作工具(Drools Workbench)以及决策模型符号(DMN)的支持。作为一个开源项目,Drools使用Java编写,遵循Apache...
规则引擎是一种软件系统,它允许业务规则以声明式的方式进行编码,从而使得非技术人员也能理解和修改这些规则。这种技术在处理复杂逻辑判断时特别有用,因为它可以将业务规则与核心应用程序逻辑分离,使得规则的更新...
**Aviator 规则引擎详解** Aviator 是一个开源的Java表达式执行引擎,它主要用于实现复杂的业务逻辑和规则计算。作为一个轻量级的规则引擎,Aviator 提供了一种简洁而强大的方式来处理动态计算和决策过程。本文将...
规则引擎-数据库访问操作 规则引擎是指一类可以根据预定义的规则对数据进行处理和分析的软件系统。这种系统通常具有强大的数据处理能力和灵活的规则配置能力。然而,传统的规则引擎产品通常不具备访问数据库的功能...
### 规则引擎的核心概念与应用 规则引擎作为一种先进的软件技术,其主要目的是将复杂的业务逻辑从应用程序的代码中解耦出来,实现业务规则的独立管理和动态调整。本文将深入探讨规则引擎的基本原理、关键算法、常见...
《规则引擎:规则测试与轨迹跟踪详解》 规则引擎作为一种强大的业务逻辑处理工具,它允许开发者以声明式的方式定义规则,使得复杂的业务决策能够被高效地执行和管理。本文将深入探讨规则引擎中的规则测试和轨迹跟踪...
**规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行...
规则引擎IlogJrules开发教程的知识点包括以下几个方面: 1. 规则引擎概念: 规则引擎是嵌入应用程序的组件,它负责从应用程序代码中分离业务规则,并允许业务规则通过特定的语法编写和管理。它接受数据输入,解释并...
URule Pro是一款强大的规则引擎,它分为设计器和执行引擎两大部分。设计器主要包含库文件设计器和规则文件设计器,用于构建和预览业务规则。库文件设计器由四个组件组成:变量库设计器、参数库设计器、常量库设计器...
Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。具有易于访问企业策略、易于...
Drools 规则引擎文档教程 Drools 规则引擎是一种基于 Java 的开源规则引擎,主要用来解决复杂的业务逻辑问题。下面是 Drools 规则引擎在在线申请信用卡业务场景中的应用。 问题引出现有一个在线申请信用卡的业务...
### 规则引擎Drools使用手册:4.0版更新要点详解 #### 一、Drools 4.0新特性概览 Drools 4.0是一次重要的更新,相较于之前的Drools 3.0.x系列,在语言表达、引擎性能以及工具实用性等方面都有显著提升。以下为此次...