- 浏览: 55478 次
文章分类
最新评论
-
蒙奇君杰:
煎蛋就是幸福 写道我想说,lz你英语水平真不咋的,错误信息提示 ...
tomcat在Debug模式下无法启动解决办法 -
煎蛋就是幸福:
我想说,lz你英语水平真不咋的,错误信息提示的是在45秒内启动 ...
tomcat在Debug模式下无法启动解决办法
VisualRules的组成及执行原理
在前几篇博客中,做了一些实例的讲解,下面来做一下简单的总结:
一、VisualRulesSolution组成
VisualRulesSolution产品包括规则引擎、规则服务、规则配置器、数据库配置器、界面配置器、界面模板编辑器、web框架、规则库管理系统等
1.规则引擎
规则引擎是外部程序调用通过规则配置器定义的规则包的接口,规则引擎是最底层的调用规则包的接口,目前实现的规则引擎是java语言的接口。规则服务是对其他语言或者系统提供调用规则包的接口。
规则引擎目前采用java语言进行实现,实现的接口包括以下一些:
RuleEngineFactory接口
RuleEngineFactory接口用于实例化RuleEngine接口,从而调用执行规则包。RuleEngineFactory接口主要具有以下方法:
(1)public static RuleEngineFactory newInstance()
此方法用于实现一个缺省的RuleEngineFactory实例
(2)public static RuleEngineFactory getInstance(String name)
此方法用于实现一个命名的RuleEngineFactory实例,因为RuleEngineFactory实例是区分ClassLoader的,也就是说可以在不同的RuleEngineFactory来加载不同目录下的规则包
(3)public RuleEngineClassLoader getClassLoader()
取得不同的ClassLoader,ClassLoader指定了不同的指定地址。
RuleEngine接口
RuleEngine接口,用于执行规则包。主要具有以下方法:
(1)public abstract int excute(String ruleName)
根据规则包名称,执行规则包。返回值为执行情况。
(2)public abstract void put(String name, Object value)
将规则包执行需要的参数,传递给规则包。
(3)public abstract Object get(String name)
规则包执行完毕后,取得规则包执行后返回的值,另外在规则引擎中还实现了数据库连接类,数据库表类、查询结果集等。
2.规则服务
规则服务是提供给其他的语言比如C#等可以调用规则包的接口。因此规则服务会提供多种协议来满足规则包的调用。目前规则服务提供以下协议的服务:
(1)Soap服务
VisualRulesSolution基于AXIS1.4实现了规则包的Soap服务,此服务对外提供了名为getRule的服务,其中包括一个字符串参数,以及返回字符串的值。
字符串参数是一个包含了调用规则包的信息的XML结构文本。返回的字符串是一个包含了返回信息的XML结构文本。
要调用此规则服务,需要能够打包和解析XML结构的参数和返回值。因此VisualRulesSolution为C#语言和Java语言分别提供了规则服务调用的客户端代码。该代码实现了自动打包和解析XML文本。
(2)Socket通讯
为了能够更快速的访问规则包,规则服务开放了1508端口,用于其他程序调用规则包。在通过1508端口时,是提供一个execute方法,此方法具有一个字符串参数和字符串返回值。参数是包含规则包调用信息的XML文本,返回值是包含返回值信息的XML文本。
因此VisualRuels也为C#和Java语言,单独开发了打包和解析XML文本的客户端类,只需要通过提供的客户端,调用相应的规则包即可。
(3)Servlet服务
Servlet服务提供了简便的调用服务端的规则包的方式。调用时,通过post,传递调用规则包所需的各类信息,返回的结果是通过一个XML结构的文本进行返回。
3.数据库配置器
(1)数据库配置器用于实现读取数据库结构信息,包括测试数据库连接信息,读取数据库的表结构、视图结构、存储过程结构。也可以测试SQL语句的执行情况。
(2)数据库配置器用于生成数据库连接的配置文件。
(3)读取了数据库表信息后,用户可以取得表中所有的字段的信息,包括字段名、类型、对应那个java类型、是否主键、是否外键、长度、是否为空、缺省值等信息,同时还可以设置描述等信息。
(4)另外还可以取得表之间的外键信息,索引信息等。
(5)取得存储过程的参数以及返回结果的结构信息。
(6)可以定义模板,根据表结构信息,生成对应的代码。
4.页面模板编辑器
页面模板编辑器用于生成调用规则包的程序代码。页面模板语言是采用java语言的模板语言,其语言和java语法是一致的,并且可以读取类库中可以取到的java类。同时还有些特定的对象,是模板语言特有的。
其中exportModel变量,表示此用例的信息。包括用例名称、自定义属性、规则包名等。其中的variables变量是包含了用例中所有的字段信息。
页面模板语言还可以通过CALL、INCLUDE等关键字实现共享模板。
5.页面配置器
目前VisualRulesSolution将页面配置器的功能集成到了规则配置器中,根据规则配置的字段信息以及页面模板,生成对应的web页面代码。
页面配置包括模板编辑、代码生成、web框架。
(1)模板编辑
支持嵌入式java语言
支持配置信息的读取
支持出错检查、错误定位
支持模板的导入、编辑、存储
支持模板之间的相互调用
(2)代码生成器
支持多个模板导入,生成不同的代码
支持自定义配置属性的编辑
支持生成不同的语言
支持模板语言的调试
(3)web框架
多种提供各种界面操作所需的JS构件
窗体显示的框架结构
菜单显示和管理
用户管理,包括用户登录、权限分配、信息维护等。
权限管理,包括权限定义、角色定义、权限分配等。
日志管理,包括用户操作页面的记录。
6.规则配置器
规则配置器是VisualRulesSolution的核心功能,目前提供的规则配置器采用C/S的程序运行。通过规则配置器可以开发规则包。同时可以测试规则包运行等。规则配置器还可以连接规则服务器,打开服务器中的规则包进行修改等。
规则配置器支持的功能主要包括:
规则包对象库支持定义传入传出变量、临时变量、类对象、常量、静态方法、自定义方法。
自定义方法支持嵌入java语言。
支持直接导入数据库结构,并自动生成调用数据库的方法。
规则包支持规则集和规则的定制。
支持嵌套规则、公共规则、互斥规则、循环规则。
支持异常处理。
支持表达式、方法调用、判断语句等语法。
支持测试用例的定制,自动测试。
支持导出可执行规则包。
7.规则库管理系统
规则包的存储可以放在文件系统中,也可以放在数据库中。基于数据库存储的规则系统,称之为规则库管理系统。
规则库管理系统主要有以下功能:
(1)存储规则库的表结构
规则库是有一批表组成的,外部程序可以通过接口或者服务,将规则存取到服务器中。这些表结构,可以建立在SQL Server,Oracle,MySQL等数据库中。
(2)访问规则库的服务程序
外部程序需要读取并访问规则库中的规则包,比如规则编辑器需要打开规则库中的规则包,需要根据服务程序来进行读取。服务程序包括两种方式,一种是直接在客户端通过访问数据库连接来读取。一种是通过规则库管理系统提供的Servlet服务来提供的。
(3)在线管理规则
通过管理系统来管理规则,具体功能包括,用户管理、权限管理、菜单管理、日志管理、规则管理等功能。其中规则管理功能包括:查阅规则、审核规则、发布规则等功能。
二、规则包执行原理
规则包是通过规则配置器定义的包含所有逻辑处理的执行单位。究竟规则引擎是如何执行规则包的,调用时需要注意哪些问题,这是程序员最关心的。
规则包在通过规则配置器编辑之后,在实际执行时,是全部对应生成了java类,并且编译成了可执行代码。外部程序通过规则引擎调用规则包时,做的工作只有两件事情,一是将规则包对应的可执行类实例化,二是将数据缓冲区作为参数传递给规则包对应的方法执行。
以jsp页面通过规则引擎调用规则包为例,如下图所示:
jsp服务端代码从页面提交中取得数据之后,首先通过规则引擎取得RuleEngine实例类,RuleEngine实例类中,有一个Map类型的属性,这个属性值就是用于和规则包交互的数据缓冲区。Jsp服务端代码将提交的数据以key/value的方式将其放到RuleEngine的缓冲区中。然后RuleEngine将规则包实例化,并且将缓冲区直接传递给规则包的实例类,规则包执行后,会更新缓冲区的数据。Jsp服务端从缓冲区中取得需要返回的数据,传递到前端页面。
规则包在执行时,其执行原理是首先从缓冲区中取得数据,将其赋值到对象库中的各个变量中,然后依次调用每个规则来执行,执行完毕后,将对象库中变量的值,按照key/value的方式更新到缓冲区中。
发表评论
-
规则引擎Visual Rules Solution开发基础教程【连载24】-- 使用VisualRules规则引擎实现业务逻辑
2016-04-29 09:33 911使用VisualRules规则引擎实现业务逻辑 ... -
规则引擎Visual Rules Solution开发基础教程【连载23】--规则协同管理之系统管理
2016-04-22 15:44 1000规则协同管理之系统管 ... -
规则引擎Visual Rules Solution开发基础教程【连载22】--规则协同管理之信息维护
2016-01-25 09:12 1015规则协同管理之信息维护 信息维护只有两个部分 ... -
规则引擎Visual Rules Solution开发基础教程【连载21】--规则协同管理之权限管理
2016-01-18 09:47 1325规则协同管理之权限管理 权限管理由三部分组成 ... -
规则引擎Visual Rules Solution开发基础教程【连载20】--规则协同管理之规则管理
2016-01-11 09:48 1476规则协同管理之规则管理 一、规则上传 我们 ... -
规则引擎Visual Rules Solution开发基础教程【连载19】--规则协同管理介绍
2016-01-07 09:20 670规则协同管理介绍 一、简介 在团队开发项目 ... -
规则引擎Visual Rules Solution开发基础教程【连载18】-- Linux环境 安装配置说明
2015-12-21 10:15 1267Linux环境 安装配置说明 一、安装配置测试环境及版本 ... -
规则引擎Visual Rules Solution开发基础教程【连载17】--VisualRules接口调用(六)
2015-12-16 11:28 1023VisualRules接口调用(六) ——Java类中含类 ... -
规则引擎Visual Rules Solution开发基础教程【连载16】--VisualRules接口调用(五)
2015-12-07 09:09 1387VisualRules接口调用(五) Java类中的List ... -
规则引擎Visual Rules Solution开发基础教程【连载15】--VisualRules接口调用(四)
2015-11-30 09:11 1050VisualRules接口调用(四) 一、Java类调用服务 ... -
规则引擎Visual Rules Solution开发基础教程【连载14】--VisualRules接口调用(三)
2015-11-23 09:23 948VisualRules接口调用(三 ... -
规则引擎Visual Rules Solution开发基础教程【连载13】--VisualRules接口调用(二)
2015-11-16 10:31 930VisualRules接口调用(二) 接上一篇,下面介绍一下 ... -
规则引擎Visual Rules Solution开发基础教程【连载12】--VisualRules接口调用(一)
2015-11-09 10:25 1768VisualRules接口调用(一 ... -
规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用
2015-11-02 10:15 1315WebService 搭建及调用 webs ... -
规则引擎Visual Rules Solution开发基础教程【连载9】--VisualRules实例二(下)
2015-10-19 10:46 886VisualRules实例二(下) 书接上 ... -
规则引擎Visual Rules Solution开发基础教程【连载8】--VisualRules实例二(中)
2015-10-12 10:11 1047VisualRules实例二(中) 上一篇 ... -
规则引擎Visual Rules Solution开发基础教程【连载7】--VisualRules实例二(上)
2015-10-08 11:45 990VisualRules实例二(上) ... -
规则引擎Visual Rules Solution开发基础教程【连载6】--VisualRules实例一
2015-09-28 11:22 670VisualRules实例一 以下通过一个 ... -
规则引擎Visual Rules Solution开发基础教程【连载5】--VisualRules深入了解
2015-09-21 10:02 1732VisualRules深入了解 通过前两篇的 ... -
规则引擎Visual Rules Solution开发基础教程【连载4】--VRS相关调用篇
2015-09-14 10:10 990VRS相关调用 一、Java类 ...
相关推荐
Visual Basic 6.0程序设计基础教程---李锦--大连理工大学出版社--2007.8.pdf
在描述中提到的Visual Rules Solution旗正规则引擎中,决策池扮演了这样的角色。 1. **决策池功能介绍** 决策池的设计目标是提高规则的复用性和效率。在规则开发中,如果某些规则被频繁使用,将这些规则放入决策池...
《Visual Rules规则引擎产品详解》 Visual Rules是一款由旗正信息公司自主研发的规则引擎产品,拥有完全独立的知识产权,专为中国市场打造。该产品旨在帮助企业高效管理业务规则,实现业务规则的快速更新和优化,...
本文将详细介绍基于VisualRules的电信业务支撑系统的开发过程,重点讨论规则管理系统的创建、系统建模、规则编写及与应用系统的集成等内容。 #### 二、创建规则库 创建规则库是构建规则管理系统的第一步。在这个...
Visual Basic 6.0程序设计教程---曾强聪--中国水利水电出版社--2003.7.pdf
以Visual Rules Solution为例,开发者可以直观地创建并命名规则包,如“测试与轨迹”。 - 变量定义:规则包中通常需要定义变量来存储和操作数据。变量定义清晰且适应性强,是确保规则正确运行的基础。 - 逻辑编写...
创建规则包的步骤简单明了,例如创建“基础规则”可以通过在Visual Rules Solution界面中选择新建规则包,并为其指定名称来完成。 2.1.2 变量定义 在规则包中,我们需要定义业务逻辑所需的变量。在“基础规则”中...
Microsoft Visual FoxPro 6.0是一款经典的数据库开发工具,它基于FoxBase的Xbase语言,由微软公司开发。本教程是专为初学者设计的,旨在帮助用户掌握Visual FoxPro的基础知识和操作技能。 在开始学习之前,了解基础...
《Visual C++程序设计案例教程》是张荣梅教授编著的一本面向实践的编程教材,旨在帮助读者深入理解和掌握Visual C++编程技术。这本书涵盖了从基础到高级的各种主题,结合丰富的实例,使得学习者能够从实践中理解理论...
在本文中,我们将深入探讨如何利用规则引擎,特别是Visual Rules Solution的旗正规则引擎,来访问和管理数据库中的部门信息,包括添加、修改、删除和查询部门等操作。 首先,我们要理解什么是数据库对象。在规则...
在Visual Rules Solution这款规则引擎中,变量跟踪功能能够帮助用户深入了解规则执行的细节,尤其是在处理复杂的业务逻辑时。当我们在规则包测试中启用变量跟踪,可以观察到变量在每个规则执行前后以及规则集内的值...
下面将详细讨论规则引擎的版本控制以及如何在Visual Rules Solution的旗正规则引擎中实现这一功能。 首先,版本控制是规则引擎的一个重要特性。当业务规则不断迭代和更新时,传统的做法是直接修改代码,这可能导致...
*************************************************************...Microsoft Visual C++ 2013 Redistributable(X64) - 12.0.40660 需先安装这个才行 *************************************************************
《Visual C++6.0实例教程》是一份专为初学者设计的教程,旨在通过具体的实例来教授如何在Microsoft Visual C++ 6.0(简称VC++6.0)环境中进行C++编程。Visual C++6.0是微软公司发布的一款强大的集成开发环境,它不仅...
[Visual.C.权威剖析--MFC的原理、机制与开发实例].辛长安.王颜国.扫描版~~~~~好不好大家知道~ 下载完整后解压,谢谢~~
Visual_C#.NET原理与实务课件--夏敏捷主编 通俗易懂实用性强
"WRK Visual Studio Solution" 是一个专为Windows Research Kernel (WRK) 1.2设计的Visual Studio 2008项目文件。WRK是一个微软提供的教学和研究平台,它是一个简化版的Windows内核,旨在帮助用户深入理解操作系统的...
ST Visual Programmer STM32(en.stvp-stm32)最新4.0
《Visualstate状态机基础教程》是一本专注于使用Visualstate工具进行状态机建模的教育资料,旨在提升嵌入式系统开发的效率。本教程不仅适用于初学者,也适合那些希望在建模技能上更进一步的开发者。教程内容涵盖理论...