进入新公司新项目, 新公司更变态很多网站都没有办法用,youdao note 就是其一。 唯一的好处就是现在上网不需要翻那堵墙, 在看某些技术博客的时候爽些。 闲话少说,目前项目需要用到Drools and JBPM. 所以从现在开始学习Drools and jBPM.
我们在项目里用到的 Drools and jBPM 其实可以分为两部分: Drools Expert 它是一个rule engine, 我们根据Drools 的drl 语法来定义N 多的rules, 然后 这个rule engine 来 驱动这些rules。
另外一块就是jBPM 其实它可以看成Workflow , 在项目里面每一个use case 可以看成是我rkflow 的 一个step。最主要的是工作流引擎(在项目中用作Execution Controller ) 来决定下一个step。
现在还没有自己的机器,也就没有开发环境,只有纸上谈兵了,到官方网站瞅瞅Drools Expert。从最基本的dlr 语法看起吧, 一个drl 文件由下面部分组成:
package package-name
imports
globals
functions
queries
rules
其中每一部分都是optional 的。顺序的话除了package 必须要在第一位, 其它部分都不重要的。
1, Rule 。 每一个rule 的组成部分又是:
rule "name"
attributes
when
LHS
then
RHS
end
其中LHS 又叫条件, RHS 又叫Action 可以由具体的方言组成的。比如我们的dialect 是Java, 这Action 部分我们就可以写Java语法的语句。
2, Drools 5 的关键字 分为 :soft 和 hard 关键字。
hard 关键字是保留的, 不能用它们来命名我们自己的domain object 。hard 关键字只有3个:
true
false
null
soft 关键字 是在上下文中被识别出来的。 建议是避免混淆不要用它们来命名自己的domain object。 soft 关键字 就比较多聊:
-
lock-on-active
-
date-effective
-
date-expires
-
no-loop
-
auto-focus
-
activation-group
-
agenda-group
-
ruleflow-group
-
entry-point
-
duration
-
package
-
import
-
dialect
-
salience
-
enabled
-
attributes
-
rule
-
extend
-
when
-
then
-
template
-
query
-
declare
-
function
-
global
-
eval
-
not
-
in
-
or
-
and
-
exists
-
forall
-
accumulate
-
collect
-
from
-
action
-
reverse
-
result
-
end
-
over
-
init
3, Drools 的 注释分为 single line (由 # 或 // 开始)和 multi line ( /* */ )
4, Drools 的 Error message 的 格式 比较严格:
由左至右分为 5 部分:
1st Block: This area identifies the error code.
2nd Block: Line and column information.
3rd Block: Some text describing the problem.
4th Block: This is the first context. Usually indicates the rule, function, template or query where the error occurred. This block is not mandatory.
5th Block: Identifies the pattern where the error occurred. This block is not mandatory.
5, Drools 的 function 定义:
function String hello(String name) {
return "Hello "+name+"!";
}
function 返回类型 function name 参数 {
body
}
定义好了function, 我们可以在其它地方来 import function . 比如:
import function my.package.Foo.hello
6, 定义新类型
6.1 Drools 天生支持Java 类型, 我们也可以在Drools 自己来定义新的类型。比如:
import java.util.Date
declare Person
name : String
dateOfBirth : Date
address : Address
end
一旦定义 我们就可以在rule 中来使用它们:
rule "Using a declared Type"
when
$p : Person( name == "Bob" )
then
// Insert Mark, who is Bob's mate.
Person mark = new Person();
mark.setName("Mark");
insert( mark );
end
7, rule 的 属性: salience
这个rule 最重要的属性是用来表示rule 的优先级, 值越大优先级越高。
8, Timers and Calendars
Drools 现在支持基于cron 的 timer
timer ( int: <initial delay> <repeat interval>? )
timer ( int: 30s )
timer ( int: 30s 5m )
timer ( cron: <cron expression> )
timer ( cron:* 0/15 * * * ? )
9, Pattern
Pattern 是最重要的 condition 元素,它用来匹配工作内存中的所有fact。
$pattern Binding : pattern type ( contraints )
rule ...
when
$p : Person(age < 18)
then
System.out.println( "Person " + $p );
end
简单的就这么多, 剩下的就是 rule 里面的条件的一些 复杂的用法了。 可以参见 http://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html/ch05.html#d0e3719
分享到:
相关推荐
droolsjbpm-integration, Drools和jBPM与 seam,spring,camel的集成. . 开发口水和 jBPM如果你想要构建或者贡献到一个项目,则阅读这里文档 。 我们将通过正确设置开发环境来节省你和我们大量的时间。 它解决了所有...
总的来说,这个教程包提供了从基础到进阶的kie workbench、Drools和jBPM学习资源。通过学习,你将能够利用kie workbench有效地创建和管理业务规则,设计和执行复杂的业务流程,从而提升业务决策的智能化和自动化水平...
开发Drools和jBPM 如果要构建或参与kiegroup项目,请。 通过正确设置您的开发环境,它将为您和我们节省大量时间。 它解决了可能会破坏您的开发的所有已知陷阱。 它还描述了所有准则,技巧和窍门。 如果您希望将拉取...
This book will also cover the relationship between Drools and jBPM, which allows you to enrich your applications by using Business Processes. You will be briefly introduced to the concept of complex ...
【JBPM学习视频11~14】是一系列关于企业级业务流程管理(Business Process Management,简称BPM)系统的教程,特别聚焦在JBoss提供的开源工具JBPM4.4版本。这一系列视频教程旨在帮助学习者深入理解并掌握JBPM框架,...
Business Process Model and Notation(BPMN)2.0是一种图形化表示工作流程的规范,JBPM4支持该标准,使得开发者能够用直观的方式设计复杂的业务流程。 ### 4. JBPM与Spring集成 JBPM4可以无缝集成到Spring应用中,...
【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...
jbpm学习文档是一份全面了解和掌握jbpm的宝贵资料,它可以帮助你深入理解业务流程管理(Business Process Management,简称BPM)的概念和技术。jbpm是一个开源的工作流管理系统,它提供了一整套工具来设计、执行、...
2. **流程建模**:学习BPMN(Business Process Model and Notation)语言,用于绘制和描述业务流程。 3. **部署与运行**:学会如何在项目中引入jBPM,配置数据库,以及部署和运行流程实例。 4. **任务管理**:理解...
2. **规则集成**:jBpm 集成了规则引擎,如 Drools,使业务流程能够根据预定义的规则进行动态决策。 3. **事件处理**:支持各种事件处理,如定时器事件、信号事件等,增强了流程的灵活性。 4. **持久化**:通过 ...
这些JAR文件可能包含Drools的核心库、Guava等依赖,或者特定版本的KIE(Knowledge and Information Systems)框架,它为Drools和jBPM(Java Business Process Management)提供基础。 "操作手册.txt"是用户指南或...
2. **流程定义(Process Definition)**:使用jbpm提供的建模语言BPMN2.0(Business Process Model and Notation),可以创建直观的流程图,定义任务、决策点、分支和汇合等元素。 3. **实体(Entities)**:包括...
为了方便开发,Drools提供了Eclipse插件,可以从官方下载页面安装"Drools and jBPM Tools"。插件允许创建Drools项目,但建议直接创建Maven项目,因为这样可以更好地管理和控制依赖。尽管Drools项目向导创建的工程...
Eclipse是一种广泛使用的Java集成开发环境,通过安装Drools相关的插件,如Drools and jBPM Integration Developer插件,可以在Eclipse中直接创建、编辑和测试Drools规则。这种方式适合于小型项目或者个人开发,可以...
1. **业务流程建模**:JBPM基于BPMN(Business Process Model and Notation)标准,允许用户使用图形化方式设计流程模型,包括开始事件、结束事件、任务、网关等元素,使得非技术背景的业务人员也能理解流程设计。...
1. **工作流引擎**:jbpm-engine.jar是jbpm的核心,它实现了BPMN(Business Process Model and Notation)2.0标准,允许开发者定义、执行和管理业务流程。它包含了流程实例的创建、执行、挂起、恢复和结束等功能。 ...
- Drools and jBPM Integration:提供了jbPM和Drools的图形化设计工具。 7. **配置Eclipse插件**:在Eclipse中配置jbPM服务器和数据库连接,导入jbPM项目模板,即可开始业务流程的设计和开发。 8. **创建第一个...
这个压缩包中的“JBPM范例”旨在帮助用户快速理解并上手JBPM,通过实际运行的示例,使得学习过程更加直观且易懂。 JBPM的核心功能包括: 1. **流程建模**:JBPM使用BPMN 2.0(Business Process Model and Notation...
jbpm学习资料可能包含以下内容: 1. **入门教程**:介绍jbpm的基本概念、安装和环境配置,以及如何创建第一个流程实例。 2. **API文档**:详述jbpm的各类API,包括流程定义、任务服务、执行服务等,帮助开发者实现...
jBPM基于Business Process Model and Notation(BPMN)2.0标准,这是一种图形化的流程建模语言,它为业务分析师和开发者提供了一种直观的方式来描述业务流程。BPMN符号丰富,包括开始事件、结束事件、任务、网关、...