规则流 <o:p></o:p>
作者: Kris Verlaenen <o:p></o:p>
<o:p> </o:p>
JBoss规则引擎中已经加入了一个新的特性,允许用户建立一个流程图来定义规则集进行评估的顺序。本文列举一些怎样使用规则流的例子。规则流将在Drools4.0版本中发布,对此特别期望的用户可以在最新的M2,M3版本中看到它。JBoss规则引擎已经提供了一些功能来定义规则的执行顺序,例如salience、activation 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>
分享到:
相关推荐
**Drools 规则流的使用介绍** Drools 是一个开源的业务规则管理系统(BRMS),它基于Java平台,提供了强大的规则引擎和规则流(Workflow)功能。这篇文章将深入探讨Drools如何实现规则流,以及如何在实际项目中有效...
**JBoss Drools 5.5 规则流完整代码详解** JBoss Drools 是一个开源的业务规则管理系统(BRMS),它允许开发者通过规则语言(如DRL)来定义和执行业务规则。在5.5版本中,Drools 提供了强大的规则流(Rule Flow)...
- 导入规则和规则流:将"rulee"压缩包中的.drf和.xml文件导入到项目中。 - 编写Java代码:实现规则引擎的初始化,加载规则流和规则,以及插入事实对象到工作内存中。 - 运行:执行Java代码,观察规则流的执行结果。 ...
### Drools规则流详解 #### 一、引言 Drools是一款开源的业务规则管理系统(BRMS),它提供了一套完整的解决方案,包括业务规则引擎、工作流引擎、以及业务资产管理和模拟工具等。其中,规则流是Drools的重要组成...
5. **规则流**:规则流(或称为流程图)是一种高级的规则组织方式,它可以控制规则执行的顺序。 ** Drools 的使用步骤 ** 1. **规则定义**:使用 DRL(Drools Rule Language)编写规则,或者使用 Guvnor(现在称为...
Drools 提供了规则流(Drools Flow)组件,允许开发者定义规则的执行流程。规则可以组织成工作流图,每个节点代表一个规则,通过控制流连接来决定执行顺序。 4. **并行执行与约束**:Drools 还支持并行执行规则,这...
《Drools5规则引擎开发教程》是一本深入解析Drools规则引擎的实用指南,旨在帮助开发者理解和掌握如何在实际项目中应用规则引擎技术。Drools是Java平台上的一个开源规则引擎,它允许开发者以声明式的方式编写业务...
在这个"Drools规则引擎使用demo"中,我们将深入探讨Drools的核心概念、工作原理以及如何通过实际操作来运用它。 1. **Drools核心概念**: - **规则(Rule)**:是Drools中的基本单位,包含条件(LHS,左侧)和行动...
4. DRL语言:Drools规则定义语言,类似于SQL,用于编写业务规则。 二、Drools工作流程 1. 加载规则:通过Runtime Engine加载DRL文件或GUVNOR中的规则库到Rule Base。 2. 创建工作内存:工作内存是规则执行的上...
`KnowledgeBase`则是一个知识库,可以存储各种类型的知识,如规则、规则流、函数定义和自定义对象。`StatefulKnowledgeSession`是常用的一种交互方式,它支持与规则引擎的持续交互,但需要注意在使用完毕后需要调用`...
1. **Drools语法**: 使用Drools规则语言(DRL)编写规则,DRL是一种类似SQL的语言,可以定义规则条件和行动。 2. **规则格式**: 每条规则由"when"部分(条件)和"then"部分(行动)组成。例如:`when $customer : ...
然后,创建一个Drools规则仓库,将规则以DRL(Drools Rule Language)文件的形式存储在MySQL的BLOB字段中。DRL是一种文本格式,用于编写Drools规则。当需要更新规则时,可以直接在数据库中编辑DRL内容,无需重新部署...
本书首先会介绍Drools5的基本概念,包括规则、事实、工作内存、 Agenda 和规则流等核心组件。规则是Drools5的核心,它是业务逻辑的具体表述,由条件和行动两部分构成。事实则是规则引擎处理的对象,它们代表了业务...
如果对drools还不是特别熟悉的,可以看下 《规则引擎Drools 之 初识drools》这篇文章; 本文源码,github 传送门:https://github.com/vincent9309/drools: 系统架构如下: 二、项目目录结构 三、...
- `DroolsDemo.java`:主程序,演示如何在Eclipse环境中运行Drools规则。 - `rules.drl`:规则文件,包含用Drools语法编写的业务规则。 - `pom.xml`:Maven项目配置文件,用于依赖管理和构建流程。 - `src/main/java...
3. **规则生命周期**:从创建到执行,Drools规则经历了加载、激活、执行和完成的过程。文档会详细解释这些阶段,以及如何控制规则的触发和执行。 4. **工作内存(Working Memory)**:Drools的工作内存是规则执行的...
#### 二、Drools规则引擎简介 Drools是一款开源的业务规则管理系统(BRMS),由JBoss开发并由Red Hat维护。Drools支持多种规则引擎标准,包括Rete算法和Drools Query Language (DRL),使得开发者能够轻松创建和管理...
例如,您可以创建一个简单的示例规则,然后通过Drools的工作流引擎运行该规则,以验证安装和配置是否正确。这样,您就完成了基于MyEclipse 8.6的JBoss Drools 6.0规则引擎的集成和设置,现在可以充分利用Drools的...
这个名为“可以调用流口水的示例业务规则任务”的项目,为我们提供了一个生动而有趣的例子,展示了如何利用jBPMN-Drools来构建和执行业务规则。 首先,我们来看jBPMN。它是基于BPMN 2.0标准的一个开源工作流引擎,...
4. **知识库(Knowledge Base)**:知识库是Drools中存放所有规则的地方,它可以包含多个规则流(RuleFlow)和规则集(RuleSet)。开发者可以通过加载和卸载知识库来管理规则。 5. **决策表(Decision Table)**:...