业务规则引擎

2024-12-06

业务规则引擎(精选8篇)

业务规则引擎 篇1

摘要:随着软件规模的日趋复杂化,迫切需要一个良好的框架或统一的方法开发业务逻辑层。在深入研究规则引擎的工作原理及Rete模式匹配算法的基础上,采用Web Service分布式计算技术具体构建了一个基于规则引擎的Web应用框架,该框架可使业务逻辑与应用程序代码高度解耦,可对业务规则进行单独的管理和维护。因此,可极大提高软件的柔韧性,降低软件的维护与升级成本。最后,利用该框架具体构建了一个实际的订单系统原型,并通过实验结果分析了在采用规则引擎后对系统性能的影响,在实际中具有一定的参考价值。

关键词:规则引擎,Web应用框架,业务逻辑,Rete算法

0 引言

在现今的Web系统架构中,大多数企业级应用一般均采用B/S/D三层Web架构。企业级Java应用也相应地分为三层:表现层、业务逻辑层和数据持久层。通常使用某种框架来开发和部署企业级应用,表现层常用的框架有Struts,JSF和Spring等,持久层常用的框架有Hibernate和EJB等。而在业务逻辑层中往往是大量随外部条件不断变化的业务规则。但到目前为止,对于业务逻辑层却没有一个标准的构建方法。像EJB和Spring等只能在高端实现业务逻辑的构建,但却不能组织代码。因此,商业决策者和应用开发者就非常迫切地需要能将商业决策逻辑和技术决策分离出来。这样,就可以在运行时动态地管理和修改业务规则,并且使用在可配置性、可读性和重用性等方面能够带给我们极大利益的框架来代替那些繁杂的条件判断语句,从而可提高系统的柔韧性和适应性。

另外,随着商业以及市场的迅猛发展,企业级应用的更新和升级变得越来越频繁。因为对业务逻辑层没有标准的框架和统一的开发方式,使得系统的维护和升级将花费更大的代价。这就更加迫切需要一个框架或统一的方法来开发业务逻辑层。很多的系统架构师已经注意到了这一点并且正在进一步研究与探讨。针对目前Web应用开发现状及存在的问题,本文通过对规则引擎及模式匹配算法的研究,给出一种较好的业务逻辑层的构建方案,以降低系统开发、升级与维护时花费的巨大代价。

1 Drools规则引擎

Drools是完全遵守JSR-94标准的规则引擎。而且是A-pache模式许可下的完全开源框架。它利用XML文件格式定义规则,大大简化了规则引擎的解析和执行过程[1]。Drools分为两个主要部分:构建和运行时[2,3]两个过程。

构建的过程涉及到.drl或.xml规则文件的创建。规则文件被读入规则文件解析器,并使用ANTLR 3语法进行解析。解析器对规则的语法进行正确性检查,然后产生一种中间结构“descr”,descr用AST来描述规则。然后,AST被传到包生成器,由包生成器来产生包对象。包生成器还承担着一些代码产生和编译的工作,这些对于产生包对象都是必需的。包对象是一个可以配置的、可序列化的,是由一个或多个规则组成的对象;运行时过程是指规则引擎在运行时,规则库(RuleBase是一个运行时组件,它包含了一个或多个包对象)可以在任何时刻将一个包对象加入或移出规则库。一个规则库对象可以在任意时刻实例化一个或多个工作记忆对象,并在它的内部保持对这些工作记忆的弱引用。当应用程序中的对象被断言(这里采用了Java的assert的概念,是指对象是否满足规则的LHS。如果满足则将该对象利用Java的assert函数添加到工作记忆中,否则继续检查下面的对象)进工作记忆后,可能会导致一个或多个激活过程的产生,然后由议程负责安排这些激活过程的执行。

2 Rete算法简介

规则引擎采用的规则匹配算法决定它的效率是否能满足需求[4],而Rete算法是目前效率最高的一个前向链推理算法[5],其核心思想是将分离的匹配项,根据内容动态构造匹配树,以达到显著降低计算量的效果。Rete模式匹配算法是在模式匹配中利用推理机的时间冗余性和规则结构的相似性,通过保存中间过程及模式共享来提高推理效率的一种模式匹配算法。在模式匹配过程中,规则的前提(LHS)中可能会有很多相同的模块,因此在匹配规则的前提时,将进行大量的重复运算,这样就带来时间冗余性问题。Rete模式匹配算法很好地解决了基于规则的系统所具有的时间冗余性。它的实现是通过存储不断循环中匹配过程的状态。并仅考虑在事实列表中发生了的且又反映到本次状态中的变化。也就是说,如果在一个执行周期中,一组模式找到三个所需事实中的两个,则在下一个执行周期中,就无需对已经找到的这两个事实进行检查。此时,只有第三个事实才是需要关注的。另外,许多规则通常包含了相似的模式或模式群。利用这一特性,Rete算法通过将公共部分放在一起来提高效率,因为公共部分不必多次计算。这便是模式共享的基本思想,推理引擎的推理步骤如下:

1)将初始事实输入工作记忆;

2)使用模式匹配器比较规则库中的规则和事实;

3)执行的规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集合;

4)冲突,将激活的规则按顺序放入议程;

5)执行引擎执行议程中的规则,重复步骤2)-5),直到执行完毕所有议程中的规则。

3 Web应用框架设计

3.1 总体框架设计

如前所述,大多企业级Java应用一般分为:表现层、业务逻辑层和数据持久层三层结构。其中,业务逻辑层无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求相关的系统设计。业务逻辑层在体系架构中处于数据访问层与表示层中间,起到了数据交换中承上启下的作用[6]。在传统的开发模式中,是将这些业务逻辑和代码逻辑混杂在一起。一旦业务规则发生变化,就得修改每个类中相应的代码,亦即业务规则的不断变化,就得不停地修改程序代码。特别是当越接近系统实现的后期时,这种修改就越加困难。因此,当系统越大、开发周期越长、成为“遗憾工程”的可能性也就越大。

为解决上述问题,本文在业务逻辑层中使用Web Service这种分布式计算技术,将这些复杂的业务逻辑单独部署到一个独立的服务器上,对系统中的业务规则进行单独的管理与维护,Web应用的总体框架结构如图1所示。这种框架结构可在极大的程度上降低了规则引擎服务同系统其它部分的耦合性,降低业务规则的变更对系统的影响,从而可极大地提高系统适应性和灵活性,减少系统的开发和维护成本。

3.2 业务逻辑层的设计

1) Web服务概念模型设计

如前所述,业务逻辑层采用Web Service分布式实现,该层定义了Web服务接口,这些接口用来描述Web服务。Web服务描述语言(WSDL)采用了xml语法,用于描述Web服务及其函数、参数和返回值,而服务的具体实现部分在规则引擎服务端。为了测试采用规则引擎后对系统性能的影响,系统中定义了两套Web服务的接口,分别是:IorderFormService (不采用规则引擎)和IOrderFormRulesService(采用规则引擎)。该Web服务的概念模型如图2所示。

其中:IOrderFormService和IOrderFormRulesService这两个接口的参数是相同的,但这两个接口并不是同时使用,在服务运行时,可以通过配置文件的配置来选择采用哪一个接口。系统两端还定义了两个视图对象ItemVO和DoSumVO,这两个视图对象主要是定义了传输数据时的数据格式,可以看作是通信的协议。相应地,系统中还定义了两个业务对象ItemBO和DoSumBO,这两个业务对象的具体实现和其对应的视图对象的实现是完全相同的,只是为了强调业务逻辑执行时操作的参数是业务逻辑相关的。这里只列出视图对象的具体实现:

2) Web服务的描述

根据视图对象的定义,在WSDL中需要对这些数据类型进行描述。同时,在WSDL中还要对Web服务进行描述,即描述服务端提供什么样的服务,以及调用该服务的URL信息等。Web服务描述如下所示:

4 订单系统的实现

4.1 订单系统概述

该系统框架结构采用Struts+Drools+Hibernate来实现。前端表现层采用Struts框架,后台数据持久层采用Hibernate框架,业务逻辑层应用开源的规则引擎一Drools框架。同时,利用传统方式再构建该系统的业务逻辑层,其目的是为了分析采用规则引擎与不采用规则引擎开发模式对系统性能的影响。系统的开发环境是:Eclipse+MyEclipse+Tomcat+DroolsIDE+MySQL,Web总体架构见图1。由于本文研究的核心是业务逻辑层,因此只给出业务逻辑层部分的实现。

4.2 规则引擎服务的实现

IOrderFormService接口调用服务的方法为doSum;IOrderFormRulesService接口调用服务的方法为doRulesSum。其中,函数doSum是不采用规则引擎时的Web服务函数;函数doRulesSum是采用规则引擎时的Web服务函数。下面分别给出doSum和doRulesSum的具体实现:

其中,doVipSum得到的是vip客户的订单核算结果;doSum1得到的是普通客户的订单核算结果。这个函数是由纯Java代码实现的。

4.3 规则库的定义

在程序清单7中可以看到,首先需要创建一个规则库,然后利用该规则库生成一个工作记忆,并将对象断言进该工作记忆,最后激发规则并得到规则匹配的结果,也就是订单的核算结果。下面针对该系统的客户,定义了如下的订单核算规则:

程序清单8订单核算规则

(1)如果客户不是VIP

1)所有item先按折扣分别计算单个item的花费之和;

2)如果单个item数量超过10个,在其花费基础上乘以95%:

3)求出所有单个item的花费和;

4)如果item种类超过5个,在总花费基础上乘以95%

;5)如果最终花费大于10000,在总花费基础上乘以85%。

(2)如果客户是VIP

1)所有item先按折扣分别计算单个item的花费之和;

2)如果单个item数量超过8个,在其花费基础上乘以90%;

3)求出所有单个item的花费和;

4)如果item种类超过3个,在总花费基础上乘以90%;

5)如果最终花费大于8000,在总花费基础上乘以80%。

要满足上述所有的规则,根据排列组合的规律,应该需要23×2=16种规则组合。但由于最后两条规则不需要任何计算,所以至少应该有14种规则组合。下面给出规则文件中客户是VIP时规则2)的规则语言描述(其它规则的描述略):

5 性能测试及结果分析

性能测试是任何分布式或Web应用程序测试计划的重要组成部分。本文中所说的性能测试主要是对两种方式(使用规则引擎和不使用规则引擎)实现的系统之间的性能比较。该测试主要采用Apache的JMeter[7]进行。在JMeter的性能测试中,主要的测试内容有:平均值、偏离值、吞吐量和中值。该测试的核心内容就是系统平均响应时间(平均值)。测试分为两组,第一组测试采用100个样本,每个样本循环发送8次请求,一共800次请求。第二组测试采用10000个样本,即10000个请求同时并发。其测试结果如表1所示(曲线图略)。

通过上面两组实际测试的结果可知,采用规则引擎实现方式的响应时间比不采用规则引擎实现方式的响应时间略长,第一组测试平均响应时间相差0.181秒,第二组测试平均响应时间相差0.351秒,且这个时间差是在人们的忍受范围之内。因此,采用规则引擎框架来实现业务逻辑层是完全行之有效的。

6 结论

规则引擎技术为管理复杂、多变的业务逻辑提供了一种有效的解决方案,使用规则引擎开发的应用系统,虽然使系统的性能略有降低,但是却极大地降低了开发和维护的难度和代价。由于规则是写入到规则文件的,而规则文件又是满足规则语言要求的,所以可读性要远比将逻辑写入代码中的可读性要好得多。现今,规则引擎的框架及工作越来越多,正说明了规则引擎的应用越来越广泛。同时,在企业级Web应用中,越来越多的应用规则引擎也是企业级Web应用的一个发展趋势。

参考文献

[1]闫欢,张宜生,李德群.规则引擎在制造企业MES中的研究与应用[J].计算机工程,2007,33(7):210-224.

[2]Ricardo Olivieri.Implement business logic with the Drools rules engine [EB/OL].http://www-128.ibm.com/developerworks/cn/java/j- drools/.2006,06,19.

[3]张彪.基于Rete算法的数据库通知引擎技术研究[D].上海海事大学硕士学位论文,2004.

[4]尤俊欣,饶若楠,詹晓峰.基于规则引擎的Web框架[J].计算机应用与软件,2007,24(2):2-22.

[5]JBoss Rules User Guide[EB/OL].http://labs.jboss.com/file-ac- cess/default/members/jbossrules/freezone/docs/3.0.5/html/index. html.

[6]PetShop之业务逻辑层设计[EB/OL].http://www.cnblogs.com/ wayfarer/archive/2006/11/05/550723.html.

[7]肖菁.使用JMeter进行性能测试[EB/OL].http://www-128.ibm. com/developerworks/cn/java/l-jmeter/.2004,2,13.

业务规则引擎 篇2

中国纺织品网门户发布时间:2012年04月08日

再根据本人这些年在网络推广公司查看过很多网站的资讯和网站搜索引擎优化方法,混过的经验总结出网站搜索引擎优化七规则。首先你的了解每一个搜索引擎的规则,合理的SEO可以有效提高网站的排名,从而使得营销更加的容易和简单。掌握搜索引擎的算法更新技术是进行SEO的重要方法。

1、网页优化的重要的部分就是title部分,这个地方应该是你每次优化的重点。标题与关键字的符合度越高越好。网站建设前一定要认真的分析百度的相关关键字策略,对网站进行详细的关键字筛选。长尾关键词更有利于提高网站流量。

2、网页的头部和底部是很重要的,对于搜索引擎来说,尽量的将关键字加到里面。不要去在乎所谓的关键词密度,只要你的密度不超过50%,只要你提供的内容是符合的,只要你的内容对于你的用户来说是重要的,不可缺少的,适当的加入些关键词在页面里,只是更好的提醒搜索引擎。

3、外链是非常重要的,外链决定了网站在索索引擎中的排名,但是并不是说外链多,排名一定就高,毕竟决定网站排名的因素还有很多,外链只不过是其中的一个重要部分。记住永远不要进行群发,群发的结果是有一天你发现你的网站突然在搜索引擎中消失了。

4、内容是网站优化的灵魂。只有有好的内容才会吸引搜索引擎的到来,而且要保持天天更新你的网站,以便蜘蛛来访时候有东西可吃。最好的方法是定时更新网站,每天保持下去。内容最好是原创的,因为搜索引擎是非常的喜欢原创的。网上的千篇一律的东西它是不会去也不喜欢去看的。

5、其实,最终的一个部分应该是服务器和域名的选择。首先,必须选择一个好的域名,最好选择.com的,.cn的个人感觉权重没有.com好,确保域名容易记住,而且没有被搜索引擎惩罚过。

还要选择一个好的服务器,如果你的网站所在的服务器经常的出现问题,导致网站频繁出现不能浏览的问题。那么你的网站就会受到很大的影响。排名会很难提升的。所以服务器的选择是非常重要的一个部分。就像我的这个网站uusee366.cn初期为了便宜在朋友那找了个空间,但是不到一周,服务器被攻击了,我的网站两天打不开,这不就完了吗。后来只好又重新购买了一个好一点的空间。

6、只把网站的首页进行SEO是远远不够的,网站优化最好是全站同时进行,每个内容页都必须有您想优化的关键字,尤其是相关相关关键字,内容页尽量不要采集,尤其是文章开头的100个字最好不要与其它站的页面相同。

基于构件技术的规则引擎研究 篇3

关键词:规则引擎,构件,业务规则

0 引言

面向构件技术是把传统工业标准化、模块化和分工协同的思想应用于软件开发领域, 同时继承和发扬了很多相关软件技术的成果, 在改善人与计算机的沟通, 提高软件的复用程度, 以及如何提高开发效率快速反映变化等方面取得了突出的发展。

对于复杂企业级项目开发, 在业务应用层面, 我们需要面向业务性的构件具有灵活性, 同时还要解决“业务逻辑相关”构件的可复用性, 可维护性以及可扩展性。

而目前大多数的平台厂商专注于在构件架构的技术上, 目的是使开发人员能够开发出粒度非常高的可复用的构件。但是“多变”的业务逻辑使得我们只能提供低粒度的构件和接口, 开发出的业务构件数量庞大, 但很难复用和维护。所以我们必须将“多变”的业务逻辑与程序代码分离, 让它们能在运行时可以动态地管理和修改从而提供软件系统的柔性和适应性。从而实现管理和复用业务逻辑, 并且业务逻辑的变更也不会影响引起构件本身的变更。规则引擎正是应用于上述动态环境中的一种解决方法。由此, 我们在深入理解规则引擎技术的基础上, 同时将规则引擎引入面向构件技术。

1 规则引擎

一个业务规则包含一组条件和在此条件下执行的操作, 它们表示业务规则应用程序的一段业务逻辑。业务规则的理论基础是:设置一个或多个条件, 当满足这些条件时会触发一个或多个操作。

规则引擎的推理步骤如下:

(1) 将初始数据 (fact) 输入至工作内存 (Working Memory) 。 (2) 使用Pattern Matcher将规则库 (Rules repository) 中的规则 (rule) 和数据 (fact) 比较。 (3) 如果执行规则存在冲突 (conflict) , 即同时激活了多个规则, 将冲突的规则放入冲突集合。 (4) 解决冲突, 将激活的规则按顺序放入Agenda。 (5) 执行Agenda中的规则。重复步骤2至5, 直到执行完毕Agenda中的所有规则。

任何一个规则引擎都需要很好地解决规则的推理机制和规则条件匹配的效率问题。

当引擎执行时, 会根据规则执行队列中的优先顺序逐条执行规则执行实例, 由于规则的执行部分可能会改变工作区的数据对象, 从而会使队列中的某些规则执行实例因为条件改变而失效, 必须从队列中撤销, 也可能会激活原来不满足条件的规则, 生成新的规则执行实例进入队列。于是就产生了一种“动态”的规则执行链, 形成规则的推理机制。这种规则的“链式”反应完全是由工作区中的数据驱动的。

2 基于构件技术的规则引擎

2.1 面向构件技术

面向构件作为将软件系统分解与隔离的一种方法, 是一个非常通用的概念。它解决了企业应用的结构问题。通过面向构件技术, 一个系统是按照个性化的需求, 从一个比较完善、比较成熟的组件库组装而成, 大大提高了系统的成功率、稳定性、适应性和逐步发展性。通过面向构件对业务的封装和积累能够保护现有投资, 有助于高效的表达业务, 提高软件的复用程度, 进而表现其内在的组织敏捷性。

2.2 构件技术中引入规则引擎

使用面向构件技术我们需要:应用系统的核心业务逻辑提炼成的构件具有高可复用率;制作构件时应使其尽量覆盖涉及的主题, 并考虑潜在的用户需求及将来的变化;应尽量将复杂的功能封装为构件。

但是由于业务逻辑的复杂性以及多变性, 现在大多数的构件平台仅能提供较低粒度的构件, 使得开发人员需要花大量尽力来定制开发业务逻辑层面的构件, 而且很难复用和维护。

因此要使构件能够面向业务层面就要通过规则引擎把“可变化”的业务逻辑与程序代码分离开来。

2.3 实施方案

在构件技术的基础上, 规则引擎的实现方式是分布型的。也就是说, 规则调用和规则的执行是分布式的。

首先, 规则执行以服务的形式存在。规则服务的实现如下:

(1) 以规则作为参数, 创建规则引擎; (2) 为规则引擎添加数据; (3) 执行规则, 获得返回。

其次, 构件中只嵌入调用规则服务的代码, 没有直接嵌入规则引擎。规则服务的调用如下:

(1) 准备规则集需要的数据; (2) 指定被使用的规则集名称; (3) 调用规则服务、执行规则并获得返回; (4) 处理返回结果。

最后, 规则是在业务模型之上定义的, 利用可视化规则开发工具, Web规则编辑器定义规则, 从而简化规则的编写过程。可视化规则开发工具定义好的规则最终形成规则库存储在构件之外, 可以存储在数据库或文件系统中。

其中, 将规则存储在构件之外的另一个好处就是能够实现规则的复用。

3 结束语

在构件技术的基础上实现的规则引擎不但可以避免业务逻辑组件的复杂性, 而且使业务逻辑的开发不再完全依赖程序开发员, 减少构件的开发数目, 从而降低构件的维护成本。另外, 通过将业务规则剥离出程序之外, 可以实现规则本身的管理性, 形成业务规则管理和执行的集成系统, 方便了与宿主系统的集成。

参考文献

[1]黄柳青, 王满红.构件中国——面向构件的方法与实践[M].北京:清华大学出版社, 2006.

[2]何仁杰, 梁冰.用规则引擎替换代码[DB/OL].http://blog.csdn.net/cs-dnloading/archive/2005/02/02/277276.aspx.2004.

[3]李国乐.Java规则引擎与其API[DB/OL].http://www-128.ibm.com/de-veloperworks/cn/java/j-java-riles/#IDACCWOB.07/2005.

[4]庞伟正, 金瑞琪, 王成武.一种规则引擎的实现方法[J].哈尔滨工程大学学报, 2005.

[5]陶晓俊, 朱敏.基于规则引擎的企业服务开发模式[J].计算机技术与发展, 2008.2.

业务规则引擎 篇4

规则引擎是目前Java应用的一个热点, 当我们的系统存在大量商业规则时, 比如金融、保险、电信计费以及机场管理等系统, 我们可以使用规则引擎。规则引擎可以让系统变得更简单, 因为无需在代码中编写商务逻辑。规则引擎是一种嵌入在应用程序中的组件, 实现了将业务决策与应用程序代码分离, 并使用比较简单的语义模块编写业务决策。

1 规则引擎运行原理

规则引擎起源于专家系统, 规则引擎分为规则库、工作内存、推理引擎3部分。推理引擎细分为模式匹配器、议程、执行引擎3部分。规则引擎运行机制如下:

规则引擎通过快速检索工作内存的对象与加载到其中的规则库中的各项规则前提进行匹配, 激活符合条件的规则, 放入冲突集中。冲突集中的规则通过规则优先权等因素的制定, 排序生成议程, 从而使优先级高的规则被第一个触发。规则执行后, 规则的后件执行部分会改变加载到工作内存中的事实对象信息, 使议程中一些激活的规则的前提条件不再得到满足, 必须从议程中撤销, 反之又有新的规则被激活加入议程中。

2 基于Java规则引擎的系统结构设计

三层结构是目前Web程序常用的结构, “三层”是指表现层、中间业务层、数据访问层。 (1) 表现层:位于最外层 (最上层) , 离用户最近。用于显示数据和接收用户输入的数据, 为用户提供一种交互式操作的界面。简单的可以用HTML语言实现, 复杂的可以用ASP.NET、Ajax等实现; (2) 中间业务层:负责处理用户输入的信息, 或者将这些信息发送给数据访问层进行保存, 或者调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对“商业逻辑”描述代码在里面。“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来, 形成一种业务规则; (3) 数据访问层:仅实现对数据的保存和读取操作。数据访问, 可以访问数据库系统、二进制文件、文本文档或是XML文档。可以用ODBC、JDBC来访问数据库。如果在系统的中间业务层, 用到了大量的形如if-then的规则, 当需要在大量的数据上应用复杂的规则时, 规则引擎技术特别有用, 在保险业和金融服务业都广泛地使用了基于规则的编程技术。所以, 在中间业务层适于采用规则引擎来实现。

3 JBoss Rules规则引擎的描述

JBoss Rules是一种开源的商业规则引擎, 它的前身是一个名为Drools的开源项目, Drools是为Java量身定制的基于Rete算法的规则引擎。JBoss Rules可以作为插件的形式集成到当前最流行的Java开源开发环境Eclipse下, 免费且开发界面友好。Drools被设计为允许使用编程语言来进行逻辑规则的描述, 当前, 可以使用Java、Python和Groovy语言来实现业务规则。

JBoss Rules规则引擎中规则可以被定义到后缀名称为dr类型的文件中, 也可以保存为表格 (Excel文件) 或规则流形式。

在一个drl文件中, 可以有多条rules, functions, 等等。尽管如此, 也可以将规则分布在多个文件中, 这有利于管理大量的规则。一个DRL文件是一个简单的文本文件。一个规则结构大致如下:

可以看到, 规则是非常简单的。通常的标点符号都是不需要的, 甚至连“name”的双引号都是不需要的。ATTRIBUTES是简单的, 也是可选的, 来提示规则的行为方式。LHS是规则的条件部分, 需要按照一定的语法来写。Right Hand Side (RHS) 就是规则的结果 (consequence) 或者动作 (action) 部分。RHS的目的是retract或add facts到Working Memory中, 还有针对application的动作。实际上, RHS是当规则激发 (fire) 时执行的代码块。

在RHS中, 可以使用几个方便的method来改变WorkingMemory: (1) “modify (obj) ”:告诉引擎一个对象已经发生变化, 规则必须重新匹配 (obj对象必须是出现在LHS中的对象) ; (2) “assert (new Something () ) ”:将一个新的Something对象加入Working Memory; (3) “assert Logical (new Something () ) ”:与asser方法类似。但是, 当没有fact支持当前激发规则的真实性的时候, 这个新对象会自动被retract; (4) “retract (obj) ”:从Working Memory中移除一个对象。

Rule结构是最重要的结构。Rule使用了形如“IF”something, “THEN”action (当然, 关键字是“when”和“then”) 的形式。规则举例如下:

决策树 (Excel文件) 的使用:JBoss Rules首先读取Excel文件, 把每一行决策作为一个Rule, 然后把Excel文件转换成dr格式的文本, 再调用drl规则的API构建规则。并且, 在Excel文件中定义的Rule是有执行顺序的。它会按照行数由上自下执行。

4 JBoss Rules规则引擎的运行

JBoss Rules分为两个主要部分:构建 (Authoring) 和运行 (Runtime) 。

构建的过程涉及到.drl或.xml规则文件的创建, 它们被读入一个解析器, 使用ANTLR 3语法进行解析。解析器对语法进行正确性的检查, 然后产生一种中间结构“descr”, descr用AST来描述规则。AST被传到Package Builder, 由PackagBuilder来产生Packaged对象。Package Builder还承担着一些代码产生和编译的工作, 这些对于产生Package对象都是必需的。Package对象是一个可以配置的、可序列化的、由一个或多个规则组成的对象。

Rule Base是一个运行时组件, 它包含了一个或多个Package对象。可以在任何时刻将一个Package对象加入或移出Rule Base对象。一个Rule Base对象可以在任意时刻实例化一个或多个Working Memory对象。当应用程序中的对象被assert进Working Memory, 可能会导致一个或多个Activation的产生, 然后由Agenda负责安排这些Activation的执行。

一次JBoss Rules的规则运算通常如下: (1) 从Drl规则文件编译得到Rule Base——编译后的规则集; (2) 从Rule Base生成本次规则运算的场地——Working Memory; (3) 将规则运算用到的事实放入Working Memory; (4) Fire All Rules, 对事实进行规则运算。

集成了JBoss Rules的Eclipse IDE应用程序中导入规则包的部分源代码如下:

5 结束语

JBoss Rules作为一种Java环境的规则引擎, 其规则描述语言丰富, 且集成Eclipse开发环境, 与Java实现无缝对接, 目前已得到广泛地应用。

参考文献

[1]曲守宁, 朱强, 林泊翰, 等.规则引擎在机场资源管理系统中的研究与应用[J].江西师范大学学报 (自然科学版) , 2008 (2) .

基于规则引擎的工作流系统设计 篇5

工作流管理通过对企业业务过程中的内在逻辑关系进行建模,并提供相关的运行环境,实现企业业务过程重组、过程管理与过程自动化。由于现实生活中企业业务规则在时间、因果等关系上的灵活性和不确定性,实现有效工作流管理的一个关键问题是提高工作流管理系统的适应性。如今,在许多基于Web的应用领域中,都存在着对推理引擎的需求,如基于Web的专家系统、联机分析系统、数据挖掘系统、智能搜索引擎等。如果能够开发一个开放的、对象化的、基于Web的推理引擎,势必会节省大量的重复开发工作,从而促进基于Web的智能软件开发及发展。这里设计一种基于Java规则引擎(Rules Engine)的工作流框架。

1 基于规则的专家系统(RBES)

规则引擎则是基于规则的专家系统的一部分。为了更深入地了解Java规则引擎,下面简要地介绍基于规则的专家系统(RBES)[1]。RBES包括3部分:Rule Base(Knowledge Base),Working Memory(Fact Base)和Rule Engine(推理引擎),其结构如图1所示。

图1中,推理引擎包括3部分:模式匹配器(Pattern Matcher),议程(Agenda)和执行引擎(Execution Engine)。推理引擎通过决定哪些规则满足事实或目标,并授予规则优先级,满足事实或目标的规则被加入议程。模式匹配器决定选择执行哪个规则,何时执行规则;议程管理模式匹配器挑选规则的执行次序;执行引擎负责执行规则和其他动作。与人类的思维相对应,规则引擎存在两种推理方式:演绎法(Forward-Chaining)和归纳法(Backward-Chaining)。演绎法从一个初始的事实出发,不断地应用规则得出结论(或执行指定的动作);归纳法从假设出发,不断寻找符合假设的事实。

Rete算法[2]是目前效率最高的一个Forward-Chaining推理算法,绝大多数Java的推理引擎都采用这一算法。规则引擎的推理步骤:

(1) 将初始数据(Fact)输入工作内存;

(2) 使用模式匹配器比较规则(Rule)和数据(Fact);

(3) 如果执行规则存在冲突(Conflict),即同时激活多个规则,将冲突的规则放入冲突集合;

(4) 解决冲突,将激活的规则按顺序放入议程;

(5) 使用规则引擎执行议程中的规则。重复步骤(2)~(5),直到执行完所有议程中的规则。

2 Java Rule Engine API规范(JSR-94)

2003年11月,Java社区通过了Java Rule Engine API规范(JSR-94)的最后草案。它是由javax.rules包定义,是访问规则引擎的标准企业级API。Java规则引擎API允许客户程序使用统一的方式和不同厂商的规则引擎产品交互,就像使用JDBC编写独立于厂商访问不同的数据库产品一样。Java规则引擎API包括创建和管理规则集合的机制,在Working Memory中添加、删除和修改对象的机制,以及初始化、重置和执行规则引擎的机制[3]。图2给出基于规则引擎 的工作流管理系统。

3 基于Java规则推理的工作流应用框架

3.1 工作流应用框架

按照WFMC的定义[4],工作流的概念被概括为“业务过程的部分或全部在计算机应用环境下的自动化”,它所要解决的主要问题是“在多个参与者之间按照某种预定义的规则传递文档、信息或使任务的过程自动进行”, 从而实现某个预期的业务目标,或者是促使该目标实现。该工作流应用框架采用面向对象的方法和组件化的架构设计,系统采用组件模型和Java编程技术,并完全基于J2EE平台的规范设计和构建。该工作流平台的核心模块是工作流引擎。工作流引擎包括3个核心组件:工作流对象、工作流路由器和规则引擎。1个工作流实例由一组相关的工作流对象代表。工作流对象中封装了工作流的相关数据,每一个工作流对象都有1个关联的应用对象,应用对象中封装了相关的应用数据[5]。

工作流路由器是工作流引擎的心脏,其功能是推进工作流实例执行。工作流路由器把每个工作流对象在合适的时间传递到合适的队列中。规则引擎是工作流引擎的大脑,其功能是根据已经定义好的工作流规则,一个工作流对象以及与它关联的应用对象当前所处的状态,决定这个工作流对象的下一个队列[6],该规则引擎引入了一个基于Rete算法的Java规则引擎。

图3所示是工作流对象、工作流路由器、规则引擎、应用对象和应用程序之间的关系。应用对象与工作流对象之间的关联是在创建工作流对象时动态建立的。工作流路由器仅传递工作流对象,不涉及与工作流对象关联的应用对象。应用程序只是对应用对象进行操作,与工作流对象无关。这是该工作流引擎保持其通用性的关键,规则引擎提供的动态绑定功能,进一步增加了工作流引擎的灵活性[7]。

3.2 Drools开源项目

目前,支持JSR-94规范的产品中最为成熟且又免费的是Drools[8]。Drools是一个Bob McWhirter开发的开源项目。Rete算法可实现一个增强的Java语言。Drools利用XML和Java就可以实现规则引擎的强大功能,具有很好的应用前景,目前已发表了2.0-beata-14版。Drools提供了3种语义模块——Python模块、Java模块和Groovy模块。Drools项目的规则文件为自定义格式,由一个XML语言定义的基本语义模块加上Java(Groovy或Phython)语义模块组成。开发者也可以根据需要定制自己专用的语义模块。每一个规则文件包括一个惟一的规则集,规则集包括一个或多个规则,每个规则包括一个或多个参数。这些参数用于在规则的条件中进行判断和执行相应的操作,参数对应的是一个Java类,Drools会在创建工作内存的时候把它自动实例化,每个规则包括一或多个条件以及一个最后的操作。

下面通过一个简化的电信资费优惠处理模型,说明Drools在实际中的应用。电信公司为了吸引顾客,经常会推出各种资费优惠套餐计划,这些优惠措施包括打折、固定折扣(消费满一定额度返还一部分固定费用)等。现假设存在以下优惠规则:

(1) 长话费超过200元的用户,超出部分长话费优惠20%;

(2) 上网费超过200元的用户,市话费减免50%,但最多减免50元。

即使就这么2条简单的规则,如果直接编程实现也将是一大堆if语句,既不容易实现,更难以维护,利用Drools可实现这些规则。相应的规则文件charge.java.drl具体内容如下[9]:

<!--费用优惠规则集,导入规则集需要的类--->

<rule-set name="charge discount">

<java:import>Charge</java:import>

<java:import>java.lang.Integer</java:import>

<!--优惠规则1,优惠条件:长话费超过200元的用户-->

<rule name="rule1">

<parameter identifier="a">

<class>Charge</class>

</parameter>

<java:condition>a.getPrimCharge("chf")>200</java:condition>

<java:consequence>

Integerdis=newInteger((a.getPrimCharge("chf")-200)*(-0.2));

a.addDisc("discount1",dis);

</java:consequence>

<!--优惠规则2,优惠条件:上网费超过200元的用户-->

<rule name="rule2">

<parameter identifier="a">

<class>Charge</class>

</parameter>

<java:condition>a.getPrimCharge("swf")>200</java:condition>

<java:consequence>

Int idis=a.getPrimCharge("shf")*0.5;

if(idis>50)idis=-50;

else idis=-idis;

a.addDisc("discount2",new Integer(idis));

</java:consequence>

</rule-set>[10]

最后调用这些规则,生成的代码非常简单。

4 结 语

从前面的讨论可看出,采用开源项目——Drools 规则引擎,能够有效地分离业务规则与基本技术,对业务规则的改变只需改变XML文件而不需要修改工作流引擎,从而为工作流管理系统处理商业复杂多变的业务规则提供了一种解决方案。可以预见,随着Java规则引擎工具的不断成熟,这一技术必将被越来越广泛的应用,成为解决实际工程中复杂业务规则问题的有力工具。

参考文献

[1]N.Alex Rupp.A Intruduction to The Drools Project[A].http://www.theserverside.com/tt/articles/article.tss?l=Drools,2004.

[2]郭芳,白建军.基于Rete算法的规则引擎JBoss Rules[J].计算机时代,2008(1):12-14.

[3]张宇,陈德礼.Drools规则引擎应用分析[J].福建电脑,2007(10):15-16.

[4]范玉顺.工作流管理技术基础——实现企业业务重组、过程管理与过程自动化的核心技术[M].北京:清华大学出版社,2001.

[5]邬少飞.Service-based Flexible Workflow System for VirtualEnterprise[J].Journal of Chongqing University:English E-dition,2008,3:73-76.

[6]Zhang Ye,Zhe Jiang.A Technical Support to Integrated Lo-gistics Strategytr Ansform:Distributed Workflow Manage-ment System[A].第十四届工业工程与工程管理国际会议[C].2007.

[7]Wil.工作流管理——模型、方法和系统[M].王建民,译.北京:清华大学出版社,2004.

[8]朱先飞.Drools在电信网络开通系统中的应用及其改造[J].广东通信技术,2007(11):10-12.

[9]任忠保,张艳晶,李立亚.基于Drools的策略体系设计[J].计算机安全,2007(8):64-66.

业务规则引擎 篇6

一、规则引擎的概念

规则引擎是基于规则的专家系统的推理引擎发展而来的。它可以作为一种组件嵌入到程序中运行,实现将业务决策从应用程序代码中分离出来的功能,并使用预定义的语义模块编写业务决策。它的处理过程是接受数据输入,解释业务规则,并根据规则做出相应的动作。

二、房屋权属登记系统引入规则引擎的必要性

在房屋权属登记业务系统中,基于业务种类的多样性、复杂性和数据的交叉重复性考虑,过去那种随机嵌入的业务控制模型,已经不能适应多业务并发、数据交叉复用等特殊情况的处理要求,因此,需要引入和构建更高层次的业务和数据流程模型控制技术,用以专门对各种不同的业务流、数据流进行必要的规范和管控。

三、基于规则引擎的房屋权属登记系统架构及其应用模型

1. 解决方案的形成

由于规则引擎所具有的一系列的特征,能够为规范房屋权属登记业务的操作、流程和成果提供适时的规则引导和控制基础。在这样的前提下,将房屋权属登记业务的各种业务规则从业务逻辑中分离出来,在进行各种尽可能的分类组合后,交由规则引擎管理,同时把规则引擎技术与系统中工作流模型进行必要的糅合处理,从而形成一个具有典型行业应用特色的业务智能化引擎模型技术。

2. 基于规则引擎及工作流技术的房屋权属登记系统应用模型

在房屋权属登记应用系统模型中,采用了规则引擎与工作流引擎的糅合技术,通过定向整合开发,把两种引擎机制有机集合起来,使它们融会贯通,共同发挥各自的作用。规则引擎负责各种业务规则的定义、管理(增加、删除、修改)和计算,为工作流引擎提供规则服务,为业务人员提供规则定义操作界面。规则服务的功能是对流程当前执行上下文中的隐含事实和规则库的规则进行计算,并返回计算结果。工作流引擎负责纯业务逻辑的处理,必要时调用规则服务进行业务决策。当业务规则发生变化时,不再涉及到开发人员对代码的更改,只需由业务人员在规则编辑界面中对规则库进行简单、快捷的规则更新。

四、规则引擎在房屋权属登记中应用解析

在实际的应用模型中,针对房屋权属登记的业务特殊性和数据复杂性,市场既有规则产品在应对行业特色需求方面的能力明显不足,因此需要专门针对房屋权属登记的特殊需求研制的一种基于规则引擎的工作流模型,以形成一种标准化、智能化的业务支撑平台。

为此,在基于规则引擎与工作流模型组合房屋权属登记系统中,设计提供了从元数据预定义到业务生成模式、业务流程模型、流程控制模型直至数据成果合成模型全过程的规则与工作流合成,并基于此形成了一种特有的房屋权属登记智能业务引擎模型。

在这个业务系统模型中,规则引擎主要提供了三种核心机制:流程管理、任务管理和时间服务,对工作流模块和整个系统提供相应的服务与支持,它们分别负责流程路由规则、任务分派规则和时间约束规则的定义和管理。整个业务系统以及其中的工作流系统与规则引擎的结合优势主要体现在这三个模块的功能发挥上。

1. 运用流程路由规则规范业务流向

系统中的流程模块实际上是各种业务门类的生成控制器,主要负责各种登记业务流程实例的生命周期管理、提供各个流程实例相关信息(业务类型、收件、收费、证书类型、建档方式等),并负责实现各个业务流程实例的活动实例之间的路由功能。在当前业务活动执行完毕后,由流程管理模块调用规则服务计算出当前业务下一个或多个活动,并交由活动管理模块负责执行。活动管理模块则根据各个预先设定的活动对象规则指标,对当前提交的业务活动可行性进行检查,不符合活动规则的按照预定义规则挂起或自动回退上一任务环节;符合活动规则的则自动生成新的业务任务,并流向下一个业务环节。

2. 运用任务分派规则强化操作

房屋权属登记的业务类型比较繁杂,存在多业务并发需求的业务程序运作格局,且并发业务流程走向又有着不同的环节和控制要求。这就要求在系统架构中任务管理模块不仅要负责对人工任务进行管理,包括任务的创建、分派、启动、终止及任务的提交等,任务管理模块根据规则库定义好的任务生成模式,自动监视各项业务任务在各个流程的状态;还要根据业务任务的并发状态按照并发规则的要求进行多位向的分排、引导和管理。在实际登记业务实务运作过程中,由于任务的分派经常随着人员的在位状态、组织结构的变动和分派规则的改变而经常变化,因此在进行任务分派时,任务管理模块将根据规则库的定义要求进行必要的干预和引导,调用规则服务重新分派相应的任务执行者,这样不仅能保证业务流动的有序性,还能有效杜绝各种越权操作。

3. 运用时间规则控制业务节奏和权力属性

房屋权属登记业务作为一种行政登记行为,因为登记对象的特殊性,对时间的要求具有多重性的特点。根据《房屋登记办法》等一系列相关规定的要求,一是需要对各种不同的业务类型制定不同的时间响应和约束规则,实现对各个经过分解的任务节点提供约束机制;二是在一些特殊的登记类型中(比如:预告登记、异议登记、他项权登记),对业务运作的登记对象的权力具有不同的时间规则要求。因此,在实际的流程实例运行时,不仅需要对流程、活动和任务的实例在执行时间上加以约束,如某业务节点的执行时间不超过多长时间,或某个特定的时间将触发某个动作的执行。在不同的业务流程中,或者同一业务流程的不同业务阶段,都需要应用不同的时间约束信息,在这里,主要采用定时器模式提供时间约束服务,如果出现定时器超时,则执行预定义的超时操作。并且,针对上述房屋登记业务的那些具有时间控制的权属属性特征,时间服务模块还能根据某些业务的特性提供自动定时服务和日历功能,以时间机制实现对相关权力属性的保障。

五、实践与效应

业务规则引擎 篇7

基于上述情况, 专业计费软件必须对各项业务进行分析, 抽象出其本质属性, 使用通用的算法和基于事件驱动的模式, 才能实现支撑全业务融合计费的目标, 更有力地支撑、推动业务发展。规则引擎算法可以满足这一要求。

1 规则引擎算法的通用性

规则引擎算法, 是根据输入对象的属性, 依次将属性值与预期结果进行比较, 通过则进行下一个属性的判断, 不通过则比较另一个预期结果, 如此形成一个递归, 直至能确定一个唯一的输出对象。根据上述思路, 由属性来驱动下一步判断, 算法可以不对输入对象和输出对象做限定;并且是递归处理, 不限制属性间是“且”还是“或”的关系, 属性和预期结果都是在数据库配置, 对象的属性和个数不必固定。至此, 其实现了不区分业务的通用性。

比如在新增3G可视电话业务时, 配置完相应的参数后, 可以使用规则引擎算法确定一张详单的使用事件类型。

如图1所示, 首先从详单文件中取出一条话单, 判断该话单的交换机属性 (即字段) 的值:若等于1则表示为固网交换机产生的话单, 若等于2则为2G语音交换机产生的话单, 若等于3则为3G语音交换机产生的话单。假设此值等于3, 说明该话单为3G语音通话, 接下来判断其中的可视标识属性:若该属性值为0, 表示该话单是3G语音非可视通话;为1, 则为3G语音可视通话。接下来判断呼叫类型。根据详单中的各属性值可最终确定此详单是3G可视主叫通话还是3G可视被叫通话事件。通过上图的简单说明, 可以发现规则引擎算法易用、通用, 不但适用于判断事件类型, 而且只要是这种复杂的业务流程判断, 配置一下参数即可使用。

2 规则引擎算法采用事件驱动机制

全业务运营情况下, 业务复杂多样, 新业务层出不穷。下面介绍一下计费系统使用规则引擎算法、采用事件驱动技术来解决这类问题。采用事件驱动机制, 可以有效解决各业务的处理逻辑变更和新增业务流程的情况。比如同样是交通工具, 公共汽车主要是流程驱动的, 其路线已预先设定;出租车主要是事件驱动的, 其路线是由随机搭载的乘客所决定的。很显然出租车更加灵活。同时, 事件驱动极大提高了事件处理效率, 减少了不必要的步骤。

规则引擎算法采用了类似于windows操作系统的事件驱动机制, 利用动态链接库技术, 可为不同的输入事件配置不同的处理步骤。事件类型决定了此业务的后续处理流程, 不同业务的事件类型不一样, 所走的批价路径也就不同。即事件类型相当于乘客, 规则引擎相当于出租车, 批价路径相当于出租车行驶路线, 这样就实现了事件驱动的功能。如果按照公共汽车模式, 使用一个批价路径, 即该批价路径需要处理所有的业务, 势必所有的业务都必须经过一些不必要的步骤, 既浪费时间且不具扩展性, 容易出现无法支撑业务的情况。

将规则引擎算法应用在批价向导中, 流程如图2所示。

如图2所示, 根据输入的使用事件, 对使用事件属性进行有效性规则检查。然后根据事件属性, 找出使用事件的类型、业务、号段归属、用户资料等信息。未能通过有效性检查和信息查找及标准化的使用事件被抛出, 成为异常事件。通过检查后, 根据用户的号码归属信息进行判断:如果不是本省用户, 则进入漫游用户使用事件处理流程;对本省用户进行查找, 有用户资料的进入本省用户使用事件处理流程, 无用户资料的进入无主使用事件处理流程。当然, 具体实现比图2复杂得多。若将上述各步骤配置在规则引擎算法里, 则能大大降低流程变更及新增流程的风险, 使批价向导的处理流程更加灵活。

3 规则引擎算法的性能

规则引擎算法是通过属性判断以决定下一步的动作, 因此, 影响其性能的关键点在于属性值和预期值的比较上。如何才能快速地找到与属性匹配的预期值?经过试验, 哈希算法和二分法是比较有效的两种方式。

在所有属性的预期值都较少的情况下, 比如每个都不超过5个, 程序通过遍历的方式来匹配预期值也可达到理想效果。但若一个属性的预期值有几十个或上百成千个, 遍历的性能则非常低。使用哈希算法, 程序动态地根据每个属性的预期值的个数, 分别选择合适的哈希值, 可有效降低比较次数, 根据属性值快速定位预期值。根据预期值的规律选择合适的哈希算法, 和根据预期值的个数选择合适的哈希值, 其时间复杂度是O (1) , 可见性能较高。当属性预期值数据量很大时, 适宜采用二分法。采用二分法查找时, 数据需是排好序的。因此, 程序运行时会将预期值进行排序, 之后可使用二分法比较。其时间复杂度为O (nlog2n) , 最大的查找次数是O (log2n!) , 最小的次数为1。

规则引擎算法支持上述算法, 可根据不同情况 (预期值的个数) 选择遍历、二分法或哈希算法来定位预期值。

4 结束语

规则引擎算法简化了复杂的流程判断, 增强了程序扩展性和易维护性, 极大地减少了全业务配置、新增业务、新增流程所产生的工作量。算法思路简单, 容易使用, 适用性广, 且效率高, 可广泛应用于通信专业计费软件中, 灵活判断、高效处理, 能更好地支撑业务发展。

摘要:随着新竞争格局的形成, 电信运营商之间的竞争日趋激烈。如何有效改善客户体验、增强客户感知、提高服务质量, 是运营商在竞争中的成败关键。目前运营商的网络建设技术已基本成熟, 硬件的升级空间趋缓, 竞争的热点逐渐聚焦在业务创新、软件支撑方面。在全业务运营背景下, 计费系统需要采用通用、灵活的算法, 以解决业务种类多样、新业务层出不穷的问题。规则引擎算法可以满足这一要求。

业务规则引擎 篇8

随着视频业务如IPTV、HDTV、VoD等高带宽需求的业务的快速发展, 特别是基于Internet的视频应用和P2P应用的迅猛发展, Internet流量正以一种不可思议的速度迅速增长。相关报告预测到2012年, 全球的IP业务流量将超过40exabytes (1018Bytes) 。许多运营商预计网络业务流量年平均增长率达到50%以上, 按此计算, 六年后的网络带宽需求将是当前网络的10倍以上。

为了满足不断增长的需求, 运营商一直在寻找既可以有效保证业务提供又能减少单位比特成本的方案。高速以太网就是其中一个方案。很多运营商已经在网络中部署了多个10GE链接, 随着10GE捆绑的大量部署, 用更高速的链路减少链路数量, 克服链路捆绑 (LAG) 局限性, 同时简化路由处理和简化MPLS部署已经成为一种趋势, 运营商对于部署100GE显得非常迫切。

虽然在骨干网上部署100GE是必由之路, 但是这对于运营商降低单位比特成本的目标来说远远不够, 毕竟网络边缘的业务是驱动带宽迅速增正的根本原因, 因此在网络边缘的高速以太网显得更加重要, 它不仅可以帮助运营商达到单位比特传输的成本, 同时还可以很好地处理高价值业务如IPTV、企业VPN和移动LTE业务。与核心路由器只需要简单地把流量快速地转发出去不同, 在网络边缘的路由器需要转发速度与多业务支持能力兼顾。只有这样, 才能充分挖掘每比特的价值, 成为流量的经营者, 而不只是作为流量的转发者。

阿尔卡特朗讯的100GE方案

早在2008年底, 阿尔卡特朗讯的100G芯片组FP2已经商用, 用于构建50G IOM3线卡。100GE的标准在2010年定标后不到一个月, 我们即发布了基于FP2芯片组并符合规范的单端口100GE线卡。在业务路由领域的持续创新, 是核心竞争力的体现—与业内一些其他厂商不同, 我们在主要的数据产品线上 (包括7750SR和7450ESS等) , 一直采用自有的网络处理器, 从FP1到FP2, 通过架构与工艺的优化, 不断提升网络处理器的性能, 成为网络边缘提高业务控制能力的坚实基础。

FP2芯片组的出现, 使得城域边缘提前进入到100G的时代, 但随着光进铜退的不断推进, 以及流媒体业务的爆炸性增长, 城域边缘面临的压力急剧增加。在FTTH的场景中, 单个OLT的上行动辄达到几十个G, 占用大量的10GE端口, 城域BNG设备要具备提供高密度的10GE端口的能力。相应的BNG上行带宽也成倍增长, 因此, 100GE端口的数量也要增加。

FP3:高性能业务路由平台的核心

基于上述需求的驱动, 阿尔卡特朗讯在2011年6月再次推出新一代的网络处理器FP3, 突破性的将目前最快速的IP网络性能提升4倍。FP3处理器能够支持400Gb/s的处理能力, 为宽带密集型业务、应用和内容带来新的契机, 并同时降低能耗达50%。

作为新一代IP路由技术的首款产品, FP3处理器可以满足未来对公共和专用的超高性能IP网络的需求。例如, 单个FP3处理器能同时处理70000个高清视频流请求或840万个云会话请求。

FP3网络处理器将在阿尔卡特朗讯的高效能网络 (HLN) 架构中发挥重要作用, 可确保运营商增加容量、降低成本并拓展新的营收渠道。传统的业务路由平台受限于网络处理器的能力, 运营商不得不在性能、功耗、和业务控制颗粒度间做出选择, 通常需要在某些方面做出妥协, 然而上述三个因素对于网络边缘都至关重要, 在FP3的支持下, 网络性能在提升高达4倍的情况下, 仍然能确保对用户和业务进行精细化的控制, 使运营商能够在自有网络上交付新型宽带业务、内容和应用, 并实现更高的可靠及可持续性。未来, FP3处理器将应用在阿尔卡特朗讯高性能IP业务路由系列产品中, 支持城域网、边缘网络及高效能网络的核心架构。

目前100G线卡的构建有多种方式, 可以采用多个10G、20G或者40G芯片组合, 也可以直接使用100G芯片。采用多个芯片构建100G线卡与单芯片100G线卡有很多区别, 采用单芯片构建的100G线卡可以在多个端口之间动态共享资源, 开发单口100GE接口比较容易, 但是采用多个芯片构建的100G线卡就很难提供单口100GE接口, 在各个端口之间要非常细致的进行负载均衡以避免由于资源未能共享而造成的数据处理问题。上海贝尔的100G线卡使用FP2或FP3芯片组构建, 避免了多芯片组合的问题。在即将发布的基于FP3的新的线卡系列中, 将出现单槽位2x100GE的线卡, 和20x10GE的超高密度业务线卡。即在一个标准19英寸机架中, 可提供多达60个100GE端口或600个10GE端口, 不仅如此, FP3的超高性能还将加速400G网络接口的出现, 这表明, 随着阿尔卡特朗讯的持续创新, 运营商将从容面对城域边缘的流量激增和精细化控制的需求。

FP3的突出性能得益于其专为业务路由机制所优化的体系架构—不同于市场上独立芯片厂商所提供的通用型网络处理器, FP系列芯片组来自于内部的处理器设计团队, 从第一代芯片组至今, 该团队一直负责规划处理器路线图, 设计处理器内部的体系架构, 选择处理器制程, 测试性能等一系列工作, 因此, 我们能够完全将业务路由的需求, 贯穿于处理器的设计中。而通用型的网络处理器不得不以牺牲性能为代价来拓展其应用场合, 从而获得更广泛的目标市场。

阿尔卡特朗讯全新100GE接口模块得益于FP系列芯片组的技术创新, 而且在热效率方面进行了优化, 上一代的FP2已经将每GB数据传输的能耗降低到4瓦左右, 与目前广泛部署的10G和40G设备相比有明显改善。而即将部署的FP3芯片组将进一步降低7750SR路由器产品本已非常低的能耗水平, 每GB的功耗降低至2W左右

上一篇:文学学科论文下一篇:排除对策