分享
 
 
 

使用WEBLOGICPORTAL规则引擎中实现动态业务逻辑

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

简介

业务应用的需求总是随着业务环境的变化趋势而不断地改变。决策很少是一成不变的,并且竞争压力要求业务逻辑的设计和实现具有灵活性,以快速地适应不断变化的需求。通常,对业务逻辑的更改必须由开发人员来完成,然后进行多次彻底的测试,而这将是一个很耗时的过程。在应用程序的修改工作完成后,需要将其重新部署到服务器,需要留出预定的停机时间,以防应用程序对用户不可用。

对于这个问题,更好的解决方案是通过应用程序之外的一组规则来实现某些业务决策。这些规则并没有被编译到应用程序中,而是在运行时读取并应用。通过这种方式,无需更改代码或者停止正在运行的应用程序就可以改变这些规则。

WebLogic Portal包括一个基本的规则引擎,用于使WebLogic Platform应用程序从规则获益。尽管该引擎不是功能完备的产品,但我们将展示如何将其与WebLogic Integration Business PRocesses (JPDs)一起使用来为业务逻辑提供一种灵活且动态的实现机制,从而无需只为了修改规则而重新部署应用程序。

首先我们来看一下将在全文中使用的示例应用程序,然后介绍如何将规则引擎注入到WLI流程中以实现业务逻辑。然后,我们将更仔细地研究这些规则本身以及如何为业务逻辑定义这些规则,最后将描述在运行中的系统中更改业务规则所使用的机制。

示例应用程序

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

在解释如何开发这样的应用程序之前,我们先通过对门户规则引擎的一些特性的简要概括来了解其工作方式。这里假定读者熟悉一般的规则技术。

规则引擎及其工作方式

图1说明了规则引擎的基本情况。该引擎根据一组规则来处理初始的事实集,而这些规则由引擎从外部库中获得。初始事实用于为该引擎填充工作内存。由规则来对工作内存中的事实进行评估,假如满足某条规则的条件,则将执行对应的动作。通常,一个规则动作将向工作内存中添加一条新的事实,并重复该流程直到应用完所有的规则。然后通过可选的过滤器来选择特定类的对象以返回给调用方。可以通过Controls界面访问规则引擎,还可以用它来设置属性(比如规则集文件的位置)。

图1:该规则引擎是一个由控件包装的EJB。储存库中的规则反复地应用于工作内存中的事实,以获得新的事实。在无法进行继续推理的情况下,对工作内存进行过滤以返回感爱好的项目。

从WLI流程调用规则引擎

让我们从被实现为JPD的交易业务流程开始,来看看如何添加对规则引擎的调用。要在WLI流程中添加规则,可以使用作为WebLogic Portal的一部分而提供的Rules Executor Control(规则执行器控件)。对于本例,我们只使用该控件中所提供的方法和特性的一个子集。关于规则控件的附加说明文档可以在参考资料部分找到。

此处假定开发人员使用WebLogic Workshop集成开发环境来创建新的流程应用程序。然后可在该应用程序中创建一个流程项目。因为默认情况下门户控件在流程项目中不可用,所以需要将这些控件和规则引擎的EJB导入到应用程序。然后,将控件输入和输出插入到JPD中。在WLI流程中使用门户规则引擎的基本步骤如下:

导入规则引擎到应用程序:

在应用程序中包含规则引擎。

将p13n_controls库添加到应用程序。

处理输入和输出:

为输入和结果添加变量。

创建一个Rules Executor控件。

在WLI流程中添加一个Control Send With Return节点。

为创建初始数据编写java代码。

添加一个流程节点以对结果进行迭代。

创建规则集。

后面我们将更具体地讨论其中的每一个步骤。

在应用程序中包含规则引擎

规则引擎包含在下面的文件中:

/weblogic81/p13n/lib/p13n_ejb.jar

要在应用程序中包含该引擎,请右击Workshop集成开发环境中的Modules文件夹,并选择Add Module。导航到该jar文件,并选择Open。

将p13n_controls库添加到应用程序

要使得门户规则控件在应用程序中可用,请右击Workshop集成开发环境中的Libraries文件夹,并选择Add Library。该控件位于:

</weblogic81/p13n/lib/p13n_controls.jar

导航到此文件,单击 Open 按钮。

为输入和结果添加变量

这里使用的Rules Executor控件方法需要一个对象数组作为输入并返回一个结果的迭代器。在Workshop集成开发环境中为这些值创建变量,这样我们就可以在下一步中通过图形用户界面来创建控件。要完成该任务,请为Data Palette中的变量单击Add按钮,键入输入变量的名称,并键入Java类型java.lang.Object[]。使用同样的方式创建Java类型为java.util.Iterator的输出变量。

创建一个Rules Executor控件

要创建规则控件,请单击Data Palette中控件的Add按钮。从菜单中选择Portal Controls -> Rules Executor。为控件键入名称,并按下Create按钮。

在WLI流程中添加一个Control Send With Return节点

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有