`
hxpwork
  • 浏览: 109912 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Drools:规则流简介

阅读更多
 

规则流 <o:p></o:p>

作者: Kris Verlaenen <o:p></o:p>

<o:p> </o:p>

JBoss规则引擎中已经加入了一个新的特性,允许用户建立一个流程图来定义规则集进行评估的顺序。本文列举一些怎样使用规则流的例子。规则流将在Drools4.0版本中发布,对此特别期望的用户可以在最新的M2M3版本中看到它。JBoss规则引擎已经提供了一些功能来定义规则的执行顺序,例如salienceactivation groups等等。当处理海量的规则时,管理规则激发的顺序会变得很复杂。规则流允许你指定一个规则评估的流程。这允许你指定哪些规则应该按照先后顺序或并发的评估,指定规则评估的先决条件等等。这里有规则流的两个例子:<o:p></o:p>

<o:p> </o:p>

<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p>

1: 图中的规则流显示了一个两个规则组简单的先后顺序执行流程,确认在处理订单之前要先对订单进行检查。<o:p></o:p>

 
<o:p></o:p>

2: 更高级的规则流显示了并发、条件控制(例如处理订单的规则集只有在订单检查没有发现问题后才会执行)和循环的概念<o:p></o:p>


JBoss
规则引擎IDE已经扩展以支持建立这些规则流:<o:p></o:p>

* 有一个新的编辑器用来建立规则流文件(*.rf,如下图所示。当你保存rf文件时,一个关联的模型文件(*.rfm)文件也同时建立,它包含了规则流的定义信息。Rf文件包含了图形信息。<o:p></o:p>

* 有一个新的建立规则流文件的向导

 

规则流定义可以被加入到RuleBase,与规则加入的方式几乎一样<o:p></o:p>


//
建立Package包含所有规则
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader(
getClass().getResourceAsStream( "rules.drl" ) ) );
final Package pkg = builder.getPackage();

//
建立一个包含规则流的过程
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.addProcessFromFile(new InputStreamReader(
getClass().getResourceAsStream( "ruleflow.rfm" ) ) );

//
将包与过程加入RuleBase
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );
ruleBase.addProcess( processBuilder.getProcesses()[0]);

//
RuleBase建立一个新的working memory
final WorkingMemory workingMemory = ruleBase.newWorkingMemory();<o:p></o:p>


//
规则流可以通过startProcess开始执行<o:p></o:p>


//
在这里增加需要设置到working memory 中的元素, 然后开始
//
规则流开始执行最初的规则集
workingMemory.startProcess(1);<o:p></o:p>


使用规则流的更多细节会在不久被加入。<o:p></o:p>

<o:p> </o:p>

分享到:
评论

相关推荐

    drools5.1 规则流示例

    - 导入规则和规则流:将"rulee"压缩包中的.drf和.xml文件导入到项目中。 - 编写Java代码:实现规则引擎的初始化,加载规则流和规则,以及插入事实对象到工作内存中。 - 运行:执行Java代码,观察规则流的执行结果。 ...

    jboss drools5.5 规则流完整代码

    jboss drools5.5 案例 规则流完整代码

    Drools 规则流的使用介绍

    NULL 博文链接:https://wangmengbk.iteye.com/blog/2120259

    Drools规则流

    针对Drools6版本规则流部分的整理,翻译,希望能给大家些微末帮助。

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

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

    基于Drools的规则引擎实例(完整、可运行eclipse工程)

    - `DroolsDemo.java`:主程序,演示如何在Eclipse环境中运行Drools规则。 - `rules.drl`:规则文件,包含用Drools语法编写的业务规则。 - `pom.xml`:Maven项目配置文件,用于依赖管理和构建流程。 - `src/main/java...

    规则引擎Drools 之 springboot 集成、热加载

     如果对drools还不是特别熟悉的,可以看下 《规则引擎Drools 之 初识drools》这篇文章;  本文源码,github 传送门:https://github.com/vincent9309/drools:  系统架构如下: 二、项目目录结构 三、...

    myeclipse8.6安装jboss drools 6.0规则引擎插件

    例如,您可以创建一个简单的示例规则,然后通过Drools的工作流引擎运行该规则,以验证安装和配置是否正确。这样,您就完成了基于MyEclipse 8.6的JBoss Drools 6.0规则引擎的集成和设置,现在可以充分利用Drools的...

    规则引擎Drools.NET移植版

    **规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行...

    Drools5规则引擎开发教程

    7. **工作流集成**:讲解如何将Drools规则引擎与工作流系统如JBPM结合,实现业务流程中的决策自动化。 8. **性能优化**:分享Drools性能调优的最佳实践,包括规则的组织方式、内存管理策略以及并行执行等。 9. **...

    jBPMN-Drools:可以调用流口水的示例业务规则任务

    jBPMN-Drools 可以调用流口水的示例业务规则任务

    java规则引擎Drools基础

    Drools还提供了工作流引擎(Guvnor)和决策表(Decision Table)等功能,使得非技术人员也能通过图形化界面进行规则管理和编辑。决策表允许用户用Excel或CSV格式定义规则,简化了规则的维护。 在实际应用中,Drools...

    规则引擎drools实例

    通常,这些例子会涵盖各种场景,如决策表、规则流、以及如何集成Drools到实际应用中。 5. **LICENSE-ASL-2.0.txt**:这是一个开源许可协议文件,表明Drools遵循Apache Software License 2.0,这意味着用户可以免费...

    Drools 规则语言和域语言实例

    1. **规则定义**:创建.drl文件,用Drools规则语言或DSL编写规则。 2. **KieSession**:创建一个KieSession,这是Drools执行规则的核心接口,它负责管理事实和规则的生命周期。 3. **事实插入**:将业务对象(事实)...

    Drools规则引擎介绍

    总结来说,Drools规则引擎是一个强大的工具,它能够帮助企业和开发者将复杂的业务逻辑转化为易于管理的规则,通过灵活的规则执行和流程控制,提升业务系统的智能化水平。通过深入学习和实践,我们可以充分利用Drools...

    drools 语法教程

    KnowledgeBase 是 Drools 提供的用来收集应用中知识(knowledge)定义的知识库对象,在一个 KnowledgeBase 中可以包含普通的规则(rule)、规则流(rule flow)、函数定义(function)、用户自定义对象(type model...

    drools规则引擎例子

    在这个"drools规则引擎例子"中,我们可以深入理解Drools的核心功能和用法。 首先,`LICENSE-ASL-2.0.txt`文件表明该例子遵循Apache Software License 2.0开源协议,允许用户自由使用、修改和分发代码,但需保留原有...

    流口水:使用drools实现规则模板引擎

    流口水:使用drools实现规则模板引擎

    Drools

    Drools的核心功能包括规则语言(DRL)、规则执行引擎以及工作流引擎。DRL是Drools特有的规则定义语言,它类似于SQL,但用于描述业务规则,使得非程序员也能理解和编辑规则。DRL支持条件、动作和逻辑运算,可以处理IF...

    drools-springboot:规则引擎drools与springboot的使用,Drools动态规则与决策表

    规则引擎Drools与SpringBoot的使用 SpringBoot与Drools SpringBoot项目 略 流口水 依赖 &lt;drools&gt;6.5.0.Final&lt;/drools&gt; &lt;!--Drools--&gt; &lt;groupId&gt;org.kie &lt;artifactId&gt;kie-api ${drools.version} ...

Global site tag (gtag.js) - Google Analytics