Rete算法的缺陷

    目前的规则引擎厂家大量采用rete算法来作为规则引擎的核心技术,但是rete算法其出发点是为了人工智能的应用使用,并不适用于一般意义上理解的企业信息化系统中的商业规则管理。

    就规则引擎来说,主要涉及几块:

    1、数据对象:在采用rete算法的规则引擎中,数据对象就是需要采用规则处理的数据。因为rete算法只能对类对象进行匹配处理,因此在执行时,必须先为其准备好基础数据。必须已经汇总好的数据,或者已经统计好的一些数据。

    2、规则语言:一般规则语言都是采用一种类java语言来定义,其实相当于一种动态语言。

    3、解析运行:基于rete算法的规则引擎一般都会将采用规则语言编辑的规则,直接导入到内存中,然后通过内存的匹配来对数据对象进行。

     采用上述技术,面对几个问题:

    1、数据准备工作量大。在将一些数据进行处理时,需要准备大量的已经计算好的数据。这样的话,像数据过滤逻辑、预处理逻辑、数据转换逻辑、存取数据逻辑等就必须采用编写程序的方式来进行。工作量很大。

     2、数据结构变化时,不能像规则一样动态变化。规则引擎使用的目的是为了企业系统将来在修改业务规则时,不再需要去修改程序。但是采用rete算法,使得只有规则能够动态变化。而数据结构的变化却不能,因此这限制了规则引擎的应用。

    3、规则语言编写太多专业。规则语言其实比写java代码简化不了多少,工作量仍然很大。

    4、消耗资源多,性能较差:采用rete算法的规则引擎在处理共享的资源时,消耗资源太大。性能比较差。

你可能感兴趣的:(java,数据结构,算法,工作,语言,引擎)