`
benx
  • 浏览: 276266 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Drools 之 drl引擎 简单使用

    博客分类:
  • java
阅读更多

 

 

 

 

 

package benx;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.rule.Package;

public class DroolsTest {

	private RuleBase rules;

	/**
	 * @param args
	 * @throws IOException
	 * @throws DroolsParserException
	 */
	public static void main(String[] args) throws DroolsParserException,
			IOException {
		DroolsTest rule = new DroolsTest();
		rule.init("benx.drl");

		Person per = new Person("benx", "27");

		List<Object> list = new ArrayList<Object>();
		list.add(per);
		rule.executeRules(list, null);

		System.out.println(per.getName());

	}

	/**
	 * 初始化规则引擎
	 * 
	 * @param rulesFile
	 * @throws DroolsParserException
	 * @throws IOException
	 */
	public void init(String rulesFile) throws DroolsParserException,
			IOException {
		Reader source1 = new InputStreamReader(this.getClass()
				.getResourceAsStream("/" + rulesFile));

		PackageBuilder builder = new PackageBuilder();

		/**
		 * 可以加载多个drl,执行时会遍历多个drl 等同于一个drl包含了多个drl内容
		 */
		builder.addPackageFromDrl(source1);

		Package pkg = builder.getPackage();

		rules = RuleBaseFactory.newRuleBase();
		rules.addPackage(pkg);
	}

	/**
	 * 
	 * @param obs
	 */
	public void executeRules(List<Object> obs, Map<String, Object> map) {
		WorkingMemory workingMemory = rules.newStatefulSession();
		if (obs != null) {
			for (Object ob : obs) {
				workingMemory.insert(ob);
			}
		}

		if (map != null) {
			for (String key : map.keySet()) {
				workingMemory.setGlobal(key, map.get(key));
			}
		}

		workingMemory.fireAllRules();
	}

}

 

 

package benx;

public class Person {
	
	private String name;
	
	private String age;

	
	public Person() {
		super();
	}

	public Person(String name, String age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}
	
	

}
 

 

package demo;
 
import benx.Person;

//规则名称,一个drl里面的规则名称必须是唯一
rule "rule 1"
//salience为优先级,数字越大就越优先执行
salience 1
//当规则在推论中对fact进行修改后,可能会导致该规则的重新激活,引起递归。设置no-loop为true可以阻止该规则被再次激活
no-loop true
//在同名activation-group中的规则将以互斥的方式激发。这个意思时在这个组中第一条被
//激发的规则将取消其它规则的激发,即使它们已经在激发队列中。Activation-group属性
//可以是任何字符,只要所有你需要放在同一个组中的规则中的activation-group属性是相
//同的即可
activation-group "find person"


//执行的条件
when
	person : Person( name == "benx")

//条件达到后执行
then		
    System.out.println("rule 1");
    person.setName("xiongjinAAA");
end




rule "rule 2"
salience 2
no-loop true
activation-group "find person"
when
	person : Person( name == "benx")
then		
    System.out.println("rule 1");
    person.setName("xiongjinAAA");
end


 

分享到:
评论

相关推荐

    Drools规则引擎从入门到精通源码

    从基础讲起,结合应用场景,由浅到深细化讲解drools规则引擎的的相关知识,并结合具体实例,演示功能的使用和注意事项。后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括...

    Drools5规则引擎开发教程

    1. **规则语言与DSL**:讲解Drools的DRL(Drools Rule Language)以及如何使用领域特定语言(DSL)来编写更符合业务语境的规则。 2. **规则生命周期**:解释规则的加载、激活、执行和撤销过程,以及如何在运行时...

    Drools规则引擎使用demo

    在这个"Drools规则引擎使用demo"中,我们将深入探讨Drools的核心概念、工作原理以及如何通过实际操作来运用它。 1. **Drools核心概念**: - **规则(Rule)**:是Drools中的基本单位,包含条件(LHS,左侧)和行动...

    规则引擎Drools在J2EE项目开发中的应用

    为了更好地理解和应用Drools,你可以阅读“规则引擎Drools在J2EE项目开发中的应用.pdf”这份文档,它将详细讲解如何在实际项目中集成和使用Drools,包括规则的编写、引擎的配置、以及与J2EE环境的交互等内容。...

    Drools5规则引擎开发教程.rar

    通过阅读"Drools5规则引擎开发教程.pdf",你将了解如何配置和使用Drools5,以及如何利用其强大功能解决实际业务问题。学习Drools5不仅有助于提升你的业务逻辑处理能力,还能帮助你更好地实现业务规则的管理和维护。

    Drools_规则引擎详解

    Drools7 之 HelloWorld 主要介绍了 Drools7 的基本使用方法,包括规则文件、规则属性和定时器和日历等内容。 规则是 Drools 的核心概念,主要包括规则文件、规则属性和定时器和日历等内容。规则文件是 Drools 的...

    Drools5规则引擎学习研究

    《Drools5规则引擎学习研究》 Drools,原名JBoss Rules,是一个强大的开源业务规则管理系统,由JBoss公司开发,基于Charles Forgy的RTE算法,专为Java设计。它允许业务分析师和审核人员以直观的方式查看和验证业务...

    Drools5规则引擎开发教程.pdf.zip-最新-目录-完整

    - **灵活的规则语言**:使用Drools Expert的DRL(Drools Rule Language)编写规则,易于理解和编写。 - **工作记忆(Working Memory)**:存储规则执行过程中的事实对象,允许规则引擎与应用状态进行交互。 - **规则...

    Drools规则引擎介绍

    为了更好地理解和使用Drools,开发者需要学习Drools的API,掌握如何创建和管理知识库,以及如何与Drools交互。同时,熟悉DRL(Drools Rule Language)语法也是必不可少的,因为这是编写规则的主要方式。 总结来说,...

    drools规则引擎开发实例

    这个实例可能还包括了一个简单的Web应用程序,使用Servlet或Spring MVC等技术,接收用户提交的申请信息,然后调用drools服务进行审批。部署到Tomcat这样的应用服务器后,用户可以通过浏览器界面提交申请,后台drools...

    idea开发drools的设置文件

    Drools 提供了一个强大的规则语言(DRL - Drools Rule Language)来声明规则,并且集成了工作流引擎,使得业务流程管理成为可能。在 IT 领域,Drools 广泛应用于金融、保险、医疗等行业的决策自动化。 ** 在 IDEA ...

    Drools规则引擎及教程

    3. **规则语法**:掌握Drools的DRL(Drools Rule Language)语言,学习如何编写规则,包括条件语句(LHS,左侧)和动作语句(RHS,右侧)。 4. **规则的加载与执行**:学习如何使用KieSession加载规则,并通过...

    Drools 规则引擎的介绍及应用

    Drools不仅仅是一个简单的规则引擎,它还提供了完整的生命周期管理工具,帮助企业更好地管理和部署业务规则。 #### 三、Drools规则集文件语法 Drools规则通常使用Drools Rule Language (DRL)编写,这是一种简洁而...

    Drools5规则引擎开发文档

    ### Drools5规则引擎开发文档知识点详解 #### 一、Drools5规则引擎简介 Drools是一款基于Java的开源规则引擎,广泛应用于业务逻辑处理领域,它可以帮助开发者快速地构建灵活且复杂的业务规则系统。Drools支持多种...

    Drools5规则引擎开发教程(PDF版)

    1. **Drools语法**: 使用Drools规则语言(DRL)编写规则,DRL是一种类似SQL的语言,可以定义规则条件和行动。 2. **规则格式**: 每条规则由"when"部分(条件)和"then"部分(行动)组成。例如:`when $customer : ...

    drools5规则引擎开发教程

    这包括使用DRL(Drools Rule Language)编写规则,以及通过Guvnor(Drools的规则管理系统)进行规则的存储、版本管理和测试。DRL是一种声明式语言,类似于SQL,用于定义业务规则。 然后,教程会深入探讨Drools的...

    Drools开发最全中文版技术指南

    Drools提供了一个灵活的框架,包括规则语言(DRL)、工作内存、事实对象和执行引擎等关键组件,使得业务规则的管理变得简单且高效。 在Drools中,规则语言DRL(Drools Rule Language)是编写规则的主要工具。DRL...

    drools7.25中文文档+drools技术指南.zip

    2. **规则语言(DRL)**:Drools使用Domain Specific Language(领域特定语言)编写规则。DRL是一种声明性的编程语言,让非程序员也能理解业务规则。文档会详细介绍DRL的语法和结构,包括条件、动作、规则定义等。 ...

    drools6.5规则引擎封装实例

    drools是中国大数据技术领域中广泛使用的规则引擎之一,特别是在决策管理和业务逻辑自动化方面。Drools 6.5是该框架的一个稳定版本,提供了强大的规则处理能力,支持复杂的业务规则编写、执行和管理。本实例将详细...

    Drools开发教程、规则引擎.pdf

    Drools是一个基于Java的业务规则管理系统(BRMS),它提供了强大的业务...熟练掌握Drools的开发和使用,需要对规则引擎的基本原理、Drools的环境搭建、规则文件的编写、高级功能的运用以及性能优化等方面有深入的理解。

Global site tag (gtag.js) - Google Analytics