当前位置: 代码迷 >> JBoss >> 规则引擎与工作流的区别在于?该怎么解决
  详细解决方案

规则引擎与工作流的区别在于?该怎么解决

热度:1642   发布时间:2013-02-26 00:00:00.0
规则引擎与工作流的区别在于?
小弟想请教一下各位达人,规则引擎与工作流的区别在于什么地方?权限?角色?还是其它什么地方?
还有一些问题如下:
1、规则引擎到底是一个什么?除了“关注点分离”将业务规则独立于源程序以外,它的本质到底是一种什么样的东西?
2、在哪里可以找到近年来规则引擎研究现状方面的文章?小弟找资料的能力实在是太弱了,在IEEE,GOOGLE,CNKI上面都没有找到相关的文章,实在需要各位达人出手相救啊!相似的问题还存在于RETE算法的研究现状和规则语言方面。

十分感谢各位,由于小弟刚刚接触,问题方面可能提的太幼稚了些,还请各位达人谅解。
再次感谢各位!

------解决方案--------------------------------------------------------
我试着回答回答:
1、工作流引擎和规则引擎都属于中间件的范畴,都是将企业应用中常见的关注点进行分离。工作流引擎是将企业应用中“什么人/系统、什么时间、完成什么工作/任务”进行分离,业务规则引擎则是将企业应用中的业务规则的处理进行分离。
2、找资料就更不好说了,建议去国家图书馆看看
------解决方案--------------------------------------------------------
你可以去jboss的官方网站上看看drools,这是一个规则引擎框架,在电信行业中应用比较广泛
他的相关文档http://downloads.jboss.com/drools/docs/4.0.2.15666.GA/html/index
------解决方案--------------------------------------------------------
就JBoss旗下的两个产品来说...
drools就像是一个数据处理的东西...给一堆数据进黑箱,然后返回结果
jbpm关键就是有一个“不连续”的流程的概念,还有就是task中的人的参与

一些肤浅的想法,欢迎拍砖
------解决方案--------------------------------------------------------
1.工作流引擎:其实是类似于在我们生活中处理一些事情的流程,即使在过程中不会出现更换人员的情况,只要是办理流程的转移或变化,都可以将它纳入到这个范畴!例子:当你去办理事情,首先是A君和你交涉,当处理完成后,又有B君和你洽谈,这就是一个典型的流程。每个流程都可以拆分为小的子流程,它代表了一种数据或信息的流向;JBPM用全对象化的方式,模拟了这种形态。通过提供的ProcessDefine,Take,Token,Action,Event等持久化地对象,来推动流程在计算机里的实现;

2.规则引擎:首先规则是指的是办理事情的一些符合自身的条件。是万物生存的根本。规则可以促使形成工作流程,同时是支配流程的最要因素。没了规则,就没有流程;规则引擎就是通过提供的多种方式,来解释调用者设定这些规则后,需要完成的事情;

比较

工作引擎:JBPM和WF:JBPM设计精辟(我曾单步跟进过JBPM的源码),但是有一致命的缺陷:由于采用对象间的关系设定,对象设计过于追求完美,造成提取一些信息组合时显得很繁琐。同时也会造成多并发状态中产生数据表的死锁。(Sql server 下尤为明显) 对于JBPM的评价,可能是我只懂了些皮毛,扭曲了一些东西吧。
 Wf:MS在fx3.0推出的后时代的3剑客之一。经过一些使用,我更觉得它适合于代码间的逻辑流程。希望他愈来愈好;
Drool:这个东西好!

以上只是个人见解,请各位达人拍砖
------解决方案--------------------------------------------------------
两者各有侧重:

JBPM包括其他工作流引擎,最大的特点是实现了业务流程状态的等待。

Drools等规则引擎专注于提供方面化的业务规则定义接口。

两者联系:

drools在尝试更丰富的规则语言定义之外,正尝试rule flow方向,并有统一业务规则与流程作为一个平台存在的想法。详细见这里。

至于Eric所说的 ">没了规则,就没有流程",我觉得有待商榷。流程或者其他应用可以主动使用规则,但是可能没有必然联系。

论文方面可以试图查找scholar或者cite,我觉得挺多相关的paper和patent。

------解决方案--------------------------------------------------------
这两个引擎的重要作用之一是模块分离。
JBPM把工作流程分离出来,比如一个请假流程,从员工申请->经理批准->提交人事部备案,这个流程就可以用xml来描述,其中每一步都可以用java class或者页面实现。在协同开发的时候就很有好处,因为不懂IT的人也可以描述流程,而具体操作的步骤就由IT人员来实现。
drools把规则分离出来,比如在“经理审批”这一步,定义一个规则,普通员工由基层经理审批而基层经理由总经理审批,这个规则就可以独立出来,和其它规则一起独立维护。
  相关解决方案