首先上一段话:

为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。
市场要求业务规则经常变化,系统必须依据业务规则的变化快速、低成本的更新。
为了快速、低成本的更新,业务人员应能直接管系统中的规则,不需要程序开发人员参与。

作为一名java程序员,我是这么理解的。在现代社会中,很多事情的处理都需要一个流程。哈哈,比如你户口本丢了,你得求爷爷,告奶奶,找这个签字,找那个盖章,最终把问题解决。这叫程序,也就是流程。

这是我昨天画的请假流程。如果通过引擎来做,就有个什么好处呢,就是自动流转,引擎驱动。本来我们需要考虑每一个任务task的执行人,执行数据,然后它的下一步,如果有可能的话,记录它的历史执行信息。现在我们activiti这个平台来实现这些基本的功能需求,对有个平台化的基本概念。

恩,这个思想很强大。

-------------------------------------------

引擎不是框架

框架本质上说还是一段一段的代码,没有一个驱动流转的概念。

为什么呢?

因为框架不连接数据库,而引擎需要数据库。往往自己也带有数据库中的表。

---------------------------------------------

接着上面说到,我们需要引擎来做自动化的工作,可是引擎只是实现了一个api结构。没有定义规则。

可是什么是规则呢,举个例子:工资的算法=f(税前,税率,五险一金)

一般就是这几个参数,但是算法 f 本身会变化的。f 就是规则。

---------------------------------------------

f怎么来做呢?

硬编码到activiti的xml代码中吗?改起来麻烦,而且部署以后比较麻烦。

至于写到其他的地方,然后读取-解析-配置的流程,则完全可以指定一个规则了。所以,drools属于一个规则标准。

---------------------------------------------

spring是用来取代 new关键字;

hibernate 是为了取代各种繁杂的jdbc代码;

struts是为了减少与httpservlet的交互。

流程引擎或者说规则引擎是用来干嘛的呢?

我们的业务逻辑从本质上说,还是if-else,各种各样的分支结构。而引擎的功能就是为了来管理业务逻辑。

--------------------------------------------

昨晚睡了一夜,回来看自己写的东西,都是狗屁。

没做过几个工作流,就在这里瞎比比,真是傻逼。

整个工作流体系是什么样子的,现在有哪些现成的、流行的工作流引擎,

牵涉到哪些标准+规范,我知道吗?

我还是多学学再说吧。

------------------------------------------

贴几本书:

----------------------------------------

Drools引擎学习的更多相关文章

  1. Drools 函数学习

    Drools 函数学习 函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的业务操作封装起来,实现业务代码的复用,减少规则编写的工作量.函数的编写位置可以是规则文件当中 pac ...

  2. Drools 查询学习

    Drools 查询学习查询以 query 关键字开始,以 end 关键字结束,在 package 当中一个查询要有唯一的名称,查询的内容就是查询的条件部分,条件部分内容的写法与规则的 LHS 部分写法 ...

  3. NVelocity模板引擎学习笔记

    NVelocity模板引擎学习笔记 学习模板引擎有一段时间现在做一些总结

  4. artTemplate模板引擎学习实战

    在我的一篇关于智能搜索框异步加载数据的文章中,有博友给我留言,认为我手写字符串拼接效率过低,容易出错.在经过一段时间的摸索和学习之后,发现现在拼接字符串的方法都不在是自己去书写了,而是使用Javasc ...

  5. jade模板引擎学习笔记(WebsStorm9.0.3+ nodejs+express+jade)

    jade环境搭建 jade标签写法 jade注释 jade添加类名.id.属性 jade添加脚本,css jade变量 jade多行文本显示 jade流程代码:for,each,while jade流 ...

  6. Away3D引擎学习笔记,持续更新

    (1). 准备工作,一些必须知道的东西 (创建时间:2014-06-05) A.必要的开发语言基础.至少要懂点ActionScript 3.0语法(ActionScript 3.0语法及API参考), ...

  7. [Firefly引擎][学习笔记一][已完结]带用户验证的聊天室

    原地址:http://bbs.9miao.com/thread-44571-1-1.html 前言:早在群里看到大鸡蛋分享他们团队的Firefly引擎,但一直没有时间去仔细看看,恰好最近需要开发一个棋 ...

  8. p2.js物理引擎学习

    P2简介 P2是一款基于Javascript编写的HTML5 2D物理引擎,和Box2D.Nape等2D物理引擎一样,P2集成了各种复杂的物理公式和算法,可以帮助我们轻松的实现碰撞.反弹等物理现象的模 ...

  9. Away3D引擎学习入门笔记

    (1). 准备工作,一些必须知道的东西 (创建时间:2014-06-05) A.必要的开发语言基础.至少要懂点ActionScript 3.0语法(ActionScript 3.0语法及API参考), ...

随机推荐

  1. Bootstrap 样式定制-lessc编译源码

    1.github上下载源码:解压:如目录bootstrap 2.新建同级目录custom-bootstrap ,在该目录下新建 如下三个文件:其实就是bootstrap下面的bootstrap.les ...

  2. Java-struts2 通过MODEL接收表单数据的方法

    接收数据的时候经常会出问题: 1.记住action = “”到的路径,最好用全路径 <a href="../Struts/user/hello?user.name=xxzzzzzzzz ...

  3. 数据库ACID、隔离级别与MVCC

    首先需要明确事务的概念:一组原子性的SQL查询,如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组语句,否则所有语句都不执行. 事务有ACID四个特性,即: 原子性:一个事务是一个 ...

  4. AndroidStudio1.4 manifest 中注册Activity时的错误提示解决办法

    问题截图如下: 解决办法截图如下: 1: File->setting->Editor->Language Injections到如下界面 2:双击右侧选中的Item进入编辑界面 3: ...

  5. sql sever怎样替换把表中数据。

    怎样替换把表中“舞台桁架厂”替换为“舞台桁架厂家” 表数据结构为: id                name                    key                addre ...

  6. 在.Net框架中 C# 实现多线程的同步方法详解

    本文主要描述在C#中线程同步的方法.线程的基本概念网上资料也很多就不再赘述了.直接接入主题,在多线程开发的应用中,线程同步是不可避免的.在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在M ...

  7. JavaScript获取网页属性包括宽、高等

    function getWindowInfo() {var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidt ...

  8. javascript 浏览器执行断点

    在javascript代码里面有个语句可以让浏览器执行到这里的时候触发断点,这个命令就是 debugger 很好用

  9. jQuery的延迟对象

    之前看别人的demo,发现在延迟对象被resolve时要执行的代码,有时会写在deferred.then方法里执行,有时会写在deferred.done方法里执行. 这让对延迟对象一知半解的我非常困惑 ...

  10. thinkphp3.2 namespace及use用法

    PHP 5.3中的namespace其实是个不错的东西,可以简化编程,下面介绍三类在代码中 访问namespace中类的方法 1 引用namespace和类   假设namespace的程序为name ...