`
bruce008
  • 浏览: 172163 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Drools and Jbpm 学习

阅读更多

进入新公司新项目, 新公司更变态很多网站都没有办法用,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

分享到:
评论
2 楼 qizhongfei 2014-09-25  
JBPM 和 drools 怎么结合使用的?
1 楼 qizhongfei 2014-09-25  

哥们,有些问题需要咨询,请加QQ:894596225 谢谢了。

相关推荐

    droolsjbpm-integration, Drools和jBPM与 seam,spring,camel的集成. ..zip

    droolsjbpm-integration, Drools和jBPM与 seam,spring,camel的集成. . 开发口水和 jBPM如果你想要构建或者贡献到一个项目,则阅读这里文档 。 我们将通过正确设置开发环境来节省你和我们大量的时间。 它解决了所有...

    kie workbench使用视频教程(Drools,jBPM)

    总的来说,这个教程包提供了从基础到进阶的kie workbench、Drools和jBPM学习资源。通过学习,你将能够利用kie workbench有效地创建和管理业务规则,设计和执行复杂的业务流程,从而提升业务决策的智能化和自动化水平...

    Mastering JBoss Drools 6 for Developers_And_SourceCode.zip

    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

    【JBPM学习视频11~14】是一系列关于企业级业务流程管理(Business Process Management,简称BPM)系统的教程,特别聚焦在JBoss提供的开源工具JBPM4.4版本。这一系列视频教程旨在帮助学习者深入理解并掌握JBPM框架,...

    Jbpm4学习文档chm

    Business Process Model and Notation(BPMN)2.0是一种图形化表示工作流程的规范,JBPM4支持该标准,使得开发者能够用直观的方式设计复杂的业务流程。 ### 4. JBPM与Spring集成 JBPM4可以无缝集成到Spring应用中,...

    jbpm学习文档

    jbpm学习文档是一份全面了解和掌握jbpm的宝贵资料,它可以帮助你深入理解业务流程管理(Business Process Management,简称BPM)的概念和技术。jbpm是一个开源的工作流管理系统,它提供了一整套工具来设计、执行、...

    jbpm 入门及帮助文档

    2. **流程建模**:学习BPMN(Business Process Model and Notation)语言,用于绘制和描述业务流程。 3. **部署与运行**:学会如何在项目中引入jBPM,配置数据库,以及部署和运行流程实例。 4. **任务管理**:理解...

    jbpm-3.1.2.zip_jbpm_jbpm 3.1.2_jbpm-3.1.2.rar_jbpm3.1.2_工作流

    2. **规则集成**:jBpm 集成了规则引擎,如 Drools,使业务流程能够根据预定义的规则进行动态决策。 3. **事件处理**:支持各种事件处理,如定时器事件、信号事件等,增强了流程的灵活性。 4. **持久化**:通过 ...

    Drools7.7.0-安装文件.rar

    这些JAR文件可能包含Drools的核心库、Guava等依赖,或者特定版本的KIE(Knowledge and Information Systems)框架,它为Drools和jBPM(Java Business Process Management)提供基础。 "操作手册.txt"是用户指南或...

    jbpm5.1学习资源整合

    2. **流程定义(Process Definition)**:使用jbpm提供的建模语言BPMN2.0(Business Process Model and Notation),可以创建直观的流程图,定义任务、决策点、分支和汇合等元素。 3. **实体(Entities)**:包括...

    Drools开发手册.doc

    Eclipse是一种广泛使用的Java集成开发环境,通过安装Drools相关的插件,如Drools and jBPM Integration Developer插件,可以在Eclipse中直接创建、编辑和测试Drools规则。这种方式适合于小型项目或者个人开发,可以...

    JBPM相关学习资料

    1. **业务流程建模**:JBPM基于BPMN(Business Process Model and Notation)标准,允许用户使用图形化方式设计流程模型,包括开始事件、结束事件、任务、网关等元素,使得非技术背景的业务人员也能理解流程设计。...

    jbpm的jar包(不含jbpm.jar)

    1. **工作流引擎**:jbpm-engine.jar是jbpm的核心,它实现了BPMN(Business Process Model and Notation)2.0标准,允许开发者定义、执行和管理业务流程。它包含了流程实例的创建、执行、挂起、恢复和结束等功能。 ...

    jBPM4.x使用前的准备工作

    - Drools and jBPM Integration:提供了jbPM和Drools的图形化设计工具。 7. **配置Eclipse插件**:在Eclipse中配置jbPM服务器和数据库连接,导入jbPM项目模板,即可开始业务流程的设计和开发。 8. **创建第一个...

    JBPM范例 可以运行 简单易懂 快速掌握JBPM

    这个压缩包中的“JBPM范例”旨在帮助用户快速理解并上手JBPM,通过实际运行的示例,使得学习过程更加直观且易懂。 JBPM的核心功能包括: 1. **流程建模**:JBPM使用BPMN 2.0(Business Process Model and Notation...

    jbpm工作流学习资料大全

    jbpm学习资料可能包含以下内容: 1. **入门教程**:介绍jbpm的基本概念、安装和环境配置,以及如何创建第一个流程实例。 2. **API文档**:详述jbpm的各类API,包括流程定义、任务服务、执行服务等,帮助开发者实现...

    jBPM工作流详解

    jBPM基于Business Process Model and Notation(BPMN)2.0标准,这是一种图形化的流程建模语言,它为业务分析师和开发者提供了一种直观的方式来描述业务流程。BPMN符号丰富,包括开始事件、结束事件、任务、网关、...

    jbpm实例(带jar)

    1. **流程建模**:jbpm支持使用Business Process Model and Notation (BPMN) 2.0标准进行流程建模,这是一种直观且广泛接受的流程表示方法。 2. **持久化**:jbpm利用JPA(Java Persistence API)或Hibernate进行...

Global site tag (gtag.js) - Google Analytics