Drools引擎学习
首先上一段话:
为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。
市场要求业务规则经常变化,系统必须依据业务规则的变化快速、低成本的更新。
为了快速、低成本的更新,业务人员应能直接管系统中的规则,不需要程序开发人员参与。
作为一名java程序员,我是这么理解的。在现代社会中,很多事情的处理都需要一个流程。哈哈,比如你户口本丢了,你得求爷爷,告奶奶,找这个签字,找那个盖章,最终把问题解决。这叫程序,也就是流程。
这是我昨天画的请假流程。如果通过引擎来做,就有个什么好处呢,就是自动流转,引擎驱动。本来我们需要考虑每一个任务task的执行人,执行数据,然后它的下一步,如果有可能的话,记录它的历史执行信息。现在我们activiti这个平台来实现这些基本的功能需求,对有个平台化的基本概念。
恩,这个思想很强大。
-------------------------------------------
引擎不是框架
框架本质上说还是一段一段的代码,没有一个驱动流转的概念。
为什么呢?
因为框架不连接数据库,而引擎需要数据库。往往自己也带有数据库中的表。
---------------------------------------------
接着上面说到,我们需要引擎来做自动化的工作,可是引擎只是实现了一个api结构。没有定义规则。
可是什么是规则呢,举个例子:工资的算法=f(税前,税率,五险一金)
一般就是这几个参数,但是算法 f 本身会变化的。f 就是规则。
---------------------------------------------
f怎么来做呢?
硬编码到activiti的xml代码中吗?改起来麻烦,而且部署以后比较麻烦。
至于写到其他的地方,然后读取-解析-配置的流程,则完全可以指定一个规则了。所以,drools属于一个规则标准。
---------------------------------------------
spring是用来取代 new关键字;
hibernate 是为了取代各种繁杂的jdbc代码;
struts是为了减少与httpservlet的交互。
流程引擎或者说规则引擎是用来干嘛的呢?
我们的业务逻辑从本质上说,还是if-else,各种各样的分支结构。而引擎的功能就是为了来管理业务逻辑。
--------------------------------------------
昨晚睡了一夜,回来看自己写的东西,都是狗屁。
没做过几个工作流,就在这里瞎比比,真是傻逼。
整个工作流体系是什么样子的,现在有哪些现成的、流行的工作流引擎,
牵涉到哪些标准+规范,我知道吗?
我还是多学学再说吧。
------------------------------------------
贴几本书:
----------------------------------------