企业管理WebLogicPortal规则引擎_第1页
企业管理WebLogicPortal规则引擎_第2页
企业管理WebLogicPortal规则引擎_第3页
企业管理WebLogicPortal规则引擎_第4页
企业管理WebLogicPortal规则引擎_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、简介业务应用的需求总是随着业务环境的变化趋势而不断地改变。决策很少是一成不变的,并且竞争压力要求业务逻辑的设计和实现具有灵活性,以快速地适应不断变化的需求。通常,对业务逻辑的更改必须由开发人员来完成,然后进行多次彻底的测试,而这将是一个很耗时的过程。在应用程序的修改工作完成后,需要将其重新部署到服务器,需要留出预定的停机时间,以防应用程序对用户不可用。对于这个问题,更好的解决方案是通过应用程序之外的一组规则来实现某些业务决策。这些规则并没有被编译到应用程序中,而是在运行时读取并应用。通过这种方式,无需更改代码或者停止正在运行的应用程序就可以改变这些规则。WebLogic Portal包括一个基

2、本的规则引擎,用于使WebLogic Platform应用程序从规则获益。尽管该引擎不是功能完备的产品,但我们将展示如何将其与WebLogic Integration Business Processes (JPDs)一起使用来为业务逻辑提供一种灵活且动态的实现机制,从而无需只为了修改规则而重新部署应用程序。首先先我们来来看一下下将在全全文中使使用的示示例应用用程序,然后介介绍如何何将规则则引擎注注入到WWLI流流程中以以实现业业务逻辑辑。然后后,我们们将更仔仔细地研研究这些些规则本本身以及及如何为为业务逻逻辑定义义这些规规则,最最后将描描述在运运行中的的系统中中更改业业务规则则所使用用的机制

3、制。示例例应用程程序我们们将开发发一个示示例交易易应用程程序作为为在业务务流程中中使用规规则的例例子。该该交易应应用程序序是一个个金融交交易流程程的简化化版本,该流程程使用调调用规则则引擎的的JPDD业务流流程而构构建。该该示例应应用程序序采用了了不同的的有价证证券交易易集合,并根据据一组由由业务定定义的规规则将其其分组成成交易块块以便执执行,或或许是为为了减少少佣金。当然,这里给给出的应应用程序序并不完完整,但但它已经经足以展展示如何何在现实实世界应应用程序序中使用用规则引引擎。有有完整的的源代码码可供下下载,其其中的rreaddme文文件提供供了构建建和运行行该应用用程序的的说明。在解解释

4、如何何开发这这样的应应用程序序之前,我们先先通过对对门户规规则引擎擎的一些些特性的的简要概概括来了了解其工工作方式式。这里里假定读读者熟悉悉一般的的规则技技术。规则则引擎及及其工作作方式图11说明了了规则引引擎的基基本情况况。该引引擎根据据一组规规则来处处理初始始的事实实集,而而这些规规则由引引擎从外外部库中中获得。初始事事实用于于为该引引擎填充充工作内内存。由由规则来来对工作作内存中中的事实实进行评评估,如如果满足足某条规规则的条条件,则则将执行行对应的的动作。通常,一个规规则动作作将向工工作内存存中添加加一条新新的事实实,并重重复该流流程直到到应用完完所有的的规则。然后通通过可选选的过滤滤

5、器来选选择特定定类的对对象以返返回给调调用方。可以通通过Coontrrolss界面访访问规则则引擎,还可以以用它来来设置属属性(比比如规则则集文件件的位置置)。 图11:该规规则引擎擎是一个个由控件件包装的的EJBB。储存存库中的的规则反反复地应应用于工工作内存存中的事事实,以以获得新新的事实实。在无无法进行行继续推推理的情情况下,对工作作内存进进行过滤滤以返回回感兴趣趣的项目目。从WWLI流流程调用用规则引引擎让我我们从被被实现为为JPDD的交易易业务流流程开始始,来看看看如何何添加对对规则引引擎的调调用。要要在WLLI流程程中添加加规则,可以使使用作为为WebbLoggic Porrtal

6、l的一部部分而提提供的RRulees EExeccutoor CConttroll(规则则执行器器控件)。对于于本例,我们只只使用该该控件中中所提供供的方法法和特性性的一个个子集。关于规规则控件件的附加加说明文文档可以以在参考考资料部部分找到到。此处处假定开开发人员员使用WWebLLogiic WWorkkshoop集成成开发环环境来创创建新的的流程应应用程序序。然后后可在该该应用程程序中创创建一个个流程项项目。因因为默认认情况下下门户控控件在流流程项目目中不可可用,所所以需要要将这些些控件和和规则引引擎的EEJB导导入到应应用程序序。然后后,将控控件输入入和输出出插入到到JPDD中。在在WL

7、II流程中中使用门门户规则则引擎的的基本步步骤如下下: 导入入规则引引擎到应应用程序序:在应用程程序中包包含规则则引擎。 将p133n_cconttrolls库添添加到应应用程序序。 处理理输入和和输出:为输入和和结果添添加变量量。 创建一个个Rulles Exeecuttor控控件。 在WLII流程中中添加一一个Coontrrol Sennd WWithh Reeturrn节点点。 为创建初初始数据据编写JJavaa代码。 添加一个个流程节节点以对对结果进进行迭代代。 创建规则则集。 后面面我们将将更详细细地讨论论其中的的每一个个步骤。在应应用程序序中包含含规则引引擎规则则引擎包包含在下下面

8、的文文件中:/wwebllogiic811/p113n/libb/p113n_ejbb.jaar要在在应用程程序中包包含该引引擎,请请右击WWorkkshoop集成成开发环环境中的的Moddulees文件件夹,并并选择AAdd Moddulee。导航航到该jjar文文件,并并选择OOpenn。将pp13nn_coontrrolss库添加加到应用用程序要使使得门户户规则控控件在应应用程序序中可用用,请右右击Woorksshopp集成开开发环境境中的LLibrrariies文文件夹,并选择择Addd Liibraary。该控件件位于: RRulees EExeccutoor。为为控件键键入名称称,

9、并按按下Crreatte按钮钮。在WWLI流流程中添添加一个个Conntrool SSendd Wiith Retturnn节点将刚刚刚创建建的控件件拖放到到流程中中以创建建一个控控件节点点来实际际调用规规则引擎擎。在示示例中,我们将将使用控控件的eevalluatteRuuleSSet()方法法。从SSendd Daata面面板中,选择前前面为方方法的输输入参数数而创建建的输入入变量。使用RReceeivee Daata面面板选择择返回变变量来获获取规则则执行的的结果。在Prropeertyy Edditoor窗口口中为控控件属性性键入相相应的值值。为创创建初始始数据编编写Jaava代代码在

10、创创建了输输入变量量后,我我们还没没有对它它赋值,所以需需要编写写代码来来完成该该任务。这个变变量是一一个Jaava对对象数组组,它提提供了输输入到规规则条件件中的初初始事实实。可以以创建一一个新的的Perrforrm节点点来初始始化该数数组,或或者通过过使用SSourrce Vieew在CConttroll Seend节节点中添添加代码码来设置置该变量量的值。添加加一个流流程节点点以对结结果进行行迭代Ruuless Exxecuutorr控件的的每一个个计算方方法都将将返回一一个结果果的迭代代器。编编写代码码,使用用该值实实现对规规则执行行结果的的迭代。如果没没有指定定过滤器器类,这这个迭代

11、代器将返返回规则则引擎工工作内存存中的所所有值。其中包包括原始始输入以以及任何何在执行行满足条条件的规规则的动动作时添添加到工工作内存存中的值值。对于于添加的的对象,迭代器器返回一一个Reesullt类的的对象,该类的的gettObjjectt()方方法可以以返回在在规则动动作中所所添加的的实际对对象。创建建规则集集使用用XMLL编辑器器,在/METTA-IINF/datta目录录中创建建一个扩扩展名为为.rlls的文文件。规规则通常常添加到到子目录录rulleseets中中。业务务逻辑规规则我们们刚刚展展示了如如何在业业务流程程中插入入规则引引擎。现现在让我我们来看看看如何何利用该该规则引引

12、擎以及及如何编编写映射射到业务务规则的的规则。规则则包括两两个部分分:应用用该规则则时必须须为真的的条件,以及当当条件满满足时将将执行的的动作。因此,要在应应用程序序中使用用规则,设计人人员必须须首先定定义哪些些对象和和属性在在测试规规则条件件时对规规则编写写者是可可见的。规则引引擎允许许在一个个条件中中调用任任意多个个方法。这种构构造方式式便于定定义JaavaBBeann作为组组成初始始事实集集合的对对象,规规则引擎擎使用这这些初始始事实来来进行推推理。可可以使用用beaan的 gett方法来来获得条条件测试试的值。规则则所引用用的Jaava对对象需要要从创建建它的WWLI流流程以及及从规则

13、则引擎本本身中都都可见。这就避避免了这这些对象象与流程程JPDD位于同同一包中中,更确确切地说说,它们们应该被被创建于于作为同同一应用用程序的的一部分分的Jaava项项目中。然后,这些对对象可以以通过ppackkagee.cllasss标记在在规则文文件(.rlss)和流流程JPPD中引引用。在我我们的交交易示例例中,将将把不同同的交易易分组以以便可以以成块执执行。为为实现该该目标,我们定定义两个个beaan来表表示相关关的对象象。第一一个是TTradde bbeann,它表表示单个个的交易易订单。这个bbeann的属性性表示交交易的份份额、股股份数目目以及所所期望的的价格等等。任何何对于决决

14、定交易易所属的的块来说说可能有有用的值值,都应应该作为为这个具具有公有有gett方法的的beaan的属属性,以以便能够够在规则则中使用用它。第第二个bbeann是Bllockk beean,通过它它可以存存储所有有根据某某个属性性集聚合合在一起起的不同同交易。这个bbeann的属性性包括规规则中任任何可用用于判定定块大得得足以执执行订单单的的信信息。这这些属性性可以是是平均价价格、交交易的总总美元数数或总的的份额数数等等。为了了在我们们的应用用程序中中实现块块功能,首先使使用规则则来定义义某项交交易是否否只需要要执行其其自身就就足够了了(也就就是说,它是仅仅包含单单个交易易的块),或者者如果不

15、不是这样样的话,那么应应该使用用什么属属性将其其与其他他交易聚聚集以形形成一个个块。在在一项交交易聚集集到适当当的块中中后,就就会第二二次调用用规则引引擎来判判断该块块是否完完成。例例如,假假设我们们想要得得到这样样的规则则:规则1:任何55,0000股及及以上的的单项交交易应该该作为一一个块并并予以执执行。 规则2:由同一一个投资资管理者者定购的的具有相相同标记记的交易易应该聚聚集在一一起。 规则3:总价值值超过,0000的块应应该予以以执行。 调用用与规则则条件中中的对象象相关联联的方法法很容易易,如下下面的示示例所示示,这是是规则11的条件件: Beeanss.Trradee ggetQ

16、Quanntitty !- geetQuuanttityy (aand anyy ottherr beean prooperrty) taakess noo arrgummentts. Iff itt diid, theey woouldd goo heere . - 550000 在这这个示例例中,如如果在我我们的事事实中有有一个TTradde对象象,那么么规则引引擎就会会调用它它的geetQuuanttityy()方方法并且且将结果果与整型型50000进行行比较。如果它它大于或或等于550000,则该该条件为为真。规则则的第二二部分是是条件满满足时执执行的动动作的列列表。最最常见的的动作是

17、是:创建建一个新新对象,把它添添加到规规则引擎擎用来评评估条件件的事实实集中。规则引引擎继续续对规则则进行迭迭代,直直到无法法从事实实中得出出更多的的推理;向动作作添加新新对象会会导致另另一轮的的条件评评估循环环。正如如我们将将要看到到的那样样,可以以创建任任意类型型的对象象,并定定义对应应用程序序具有特特定意义义的各种种类型。这里的的技巧是是,应用用程序设设计者可可以定义义一组足足够丰富富的动作作,以包包含那些些可由规规则编写写者调用用以满足足各种业业务需求求的任务务。在我我们的交交易应用用程序示示例中,所有动动作都会会创建将将添加到到由规则则引擎使使用的工工作集中中的新对对象。有有些规则则

18、向该集集合中添添加简单单的Sttrinng对象象。这些些对象表表示了从从原始事事实中演演绎出来来的中间间事实,它们可可以在规规则引擎擎中得到到进一步步的推理理,但流流程JPPD不会会以任何何形式解解释它们们。其他他的规则则将创建建Beaans.Acttionn类的对对象。这这些对象象包括当当规则条条件满足足时流程程将执行行的实际际命令。流程JJPD和和支持类类将实施施已知的的动作命命令来聚聚集交易易并执行行块交易易。在这这个简单单的示例例中,实实际上只只有两个个已知的的命令:创建(并执行行)订单单、使用用指定的的属性聚聚集一项项交易。前面规规则2的的动作是是使用属属性syymbool和mman

19、aagerr来进行行聚集,该动作作如下: Beaans.Acttionn symmboll, mmanaagerr 响应应该动作作,流程程JPDD及其支支持类为为当前交交易查询询symmboll和投资资mannageer,找找出具有有相同的的symmboll和投资资mannageer的未未执行交交易,并并将这些些交易聚聚集到相相同的块块。在完完成一项项交易的的聚集后后,将从从第二个个Rulles Exeecuttor控控件再次次调用规规则引擎擎,以评评估规则则,决定定是否应应该执行行产生的的块交易易。根据据业务规规则3,该规则则如下: Beeanss.Bllockk ggetAAmouunt

20、5500000.000 Beaans.Acttionn creeatee 这一一次,我我们分析析Beaans.Bloock对对象,获获取ammounnt属性性并与阈阈值进行行比较。如果该该条件满满足,则则使用ccreaate命命令向工工作集中中添加一一个Beeanss.Acctioon对象象,这是是通知流流程执行行该块订订单的信信号。让我我们仔细细分析一一下流程程JPDD。下面面有用于于调用规规则引擎擎的Coontrrol Sennd节点点的代码码。正如如我们可可以看到到的,该该节点使使用一个个Rulles Exeecuttor控控件来评评估规则则集,该该控件返返回一个个迭代器器。通过过其属性

21、性(没有有给出),控件件将过滤滤结果,仅返回回Beaans.Acttionn类的对对象。通通过这些些对象,代码将将提取动动作命令令并执行行所请求求的动作作。正如如前面所所提到的的,如果果动作是是聚集该该交易,则流程程将使用用更新后后的块作作为输入入,对规规则引擎擎开始第第二次调调用。通通过执行行适当的的动作,对结果果进行第第二次迭迭代循环环。publlic voiid rruleesExxecuutorrConntroolEvvaluuateeRulleSeet() thrrowss Exxcepptioon / Exeecutte tthe Rulles usiing faccts as t

22、hee innputt /#STAART: COODE GENNERAATEDD - PROOTECCTEDD SEECTIION - yyou cann saafelly / AAdd codde aabovve tthiss coommeent in thiis mmethhod. #/ / Inpput traansfformm / Retturnn meethood ccalll thiis.rresuultss = ruulessExeecuttorCConttroll.evvaluuateeRulleSeet(tthiss.faactss); / Outtputt trranssf

23、orrm / Outtputt asssiggnmeentss /#ENDD : COODE GENNERAATEDD - PROOTECCTEDD SEECTIION - yyou cann saafelly / AAdd codde bbeloow tthiss coommeent in thiis mmethhod. #/ /* Iteeratte ooverr thhe rresuultss off ruuless exxecuutioon. Thiis aassuumess thhat ressultts aare fillterred to retturnn onnly iteem

24、s of thee Beeanss.Acctioon cclasss. Thee coommaand prooperrty froom tthe Acttionn iss exxpecctedd too bee eiitheer tthe strringg ccreaate, iin wwhicch ccasee a Bloock traade cann bee exxecuutedd frrom thee siinglle ddisccrette TTradde, or it is exppectted to be a llistt off atttribbutees ddesccribbi

25、ngg thhe BBlocck tthatt thhis Traade shoouldd bee inccorpporaatedd innto. */ whiile (reesullts.hassNexxt() Sttrinng aactiion = (Acctioon)rresuultss.neext().gettCommmannd(); iff (aactiion.equualss(ccreaate) (neww Bllockk(trradee).exeecutte(); / sinnglee-trradee ellse / AAggrregaate traade intto aan i

26、inteermeediaate Bloock ttradde.aaggrregaate(bloockSStorragee, aactiion); /* Calll tthe rulles engginee a seccondd tiime, thhis timme uusinng thee reesulltinng BBlocck aas tthe onlly iinpuut. Thhis is to dettermminee iff thhe rresuultiing Bloock noww meeetss thhe ccritteriia to exeecutte tthe ordder.

27、 Aggainn, rresuultss arre aassuumedd too bee fillterred by thee coontrrol to retturnn onnly thee Acctioons. */ BBlocck bblocck = trradee.geetBllockk(); OObjeect bloockFFactts = neww Obbjecct11; bblocckFaactss0 = bloock; IIterratoor bblocckReesullts = bloockRRuleesCnntl.evaaluaateRRuleeSett(bllockkFa

28、ccts); wwhille (bloockRResuultss.haasNeext() acctioon = (AActiion)bloockRResuultss.neext().gettCommmannd(); iff (aactiion.equualss(ccreaate) bblocck.eexeccutee(); 动态态规则WeebLoogicc Poortaal的特特性之一一是Daatassyncc功能,通过它它可以将将修改后后的数据据重新部部署到集集群中的的门户应应用程序序中。因因为门户户规则引引擎从DDataasynnc存储储区中获获得其规规则文件件,所以以应用程程序的业业务规

29、则则可以在在运行的的系统中中进行更更改,而而无需停停止应用用程序。关于DDataasynnc以及及用于更更新数据据的Daatassyncc Weeb应用用程序的的其他信信息,请请参阅WWebLLogiic PPorttal文文档。默认认情况下下,Daatassyncc Weeb应用用程序将将部署在在常规门门户应用用程序中中。然而而,我们们的示例例应用程程序是一一个WLLI流程程应用程程序,因因此必须须在其中中手动地地包含DDataasynnc。要要在Woorksshopp集成开开发环境境中完成成这些工工作,请请右击MModuuless文件夹夹,并选选择Addd MModuule。然后,选择下下面的文文件:/wwebllogiic811/p113n/libb/daatassyncc.waar在集集群中,Dattasyync应应用程序序应该仅仅部署到到管理服服务器。为了了阐明如如何在运运行中的的应用程程序中更更改规则则,示例例应用程程序中包包括了两两个不同同的规则则文件,这两个个文件中中包括了了用于将将交易聚聚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论