企业信息门户中信息内容的定制

2005-4-11 16:17:30【作者】 AMTeam.org 【进入论坛】
在这篇文章中,我们提出了一种基于浏览器的进行用户信息定制的方法。用户可以在一定的权限许可下,自由定义查看数据的方式。
本文关键字 理论探讨 协同商务
广告

王海波    耿晖 姜吉发 白硕       祝明发

       Wang Haibo    Geng Hui       Jiang Jifa       Bai Shuo         Zhu Mingfa

(中国科学院计算技术研究所    100080

(Institute of Computing Technology Chinese Academy of Sciences    Beigjing 100080)

E-mail: koala@ncic.ac.cn

 

AbstractWith the development of Intranet, EIP (Enterprise Information Portal) provides a powerful means for enterprise to promote its productivity. In the common way the EIP is used, EIP provides a uniform interface to every user, which doesn’t distinguish advanced user and ommon user. This paper presents a method to customize the user interface through the browser. User can define the way to view the data under some permission. The EIP will presents different interface for different user, which provides a more flexible means.

Key words     EIP,database view, ASP, ADO

摘要              在信息社会,企业竞争力的提高越依赖于对信息的获取和利用。随着Internet/Intranet技术的迅速发展,通过统一的Web界面,提供企业的信息、业务、组织结构以及相应授权的统一入口、整体形象和集成平台,也就是企业信息门户(Enterprise Information Portal)”,是企业信息化建设的大趋势。在企业信息平台的建设中,用户查看数据的方式受到系统开发时所预先设定的方式的限制。在这篇文章中,我们提出了一种基于浏览器的进行用户信息定制的方法。用户可以在一定的权限许可下,自由定义查看数据的方式。

 

关键词   企业信息门户 数据库视图 ASP ADO

 

一、引言

 

在现代信息社会里,信息是企业(也包括政府机关和教育科研等事业单位)运作的灵魂。在过去,企业的各种信息以及具有信息属性的业务是分散在一个个互不兼容、自成一体的MIS系统或OA系统里面的,好似一个个的信息“孤岛”。随着Internet/Intranet技术的迅速发展,通过统一的Web界面,提供企业的信息、业务、组织结构以及相应授权的统一入口、整体形象和集成平台,也就是企业信息门户(Enterprise Information Portal)”,是企业信息化建设的大趋势。

 

在企业信息门户建立好之后,用户可以在已定义好的企业信息门户信息结构中进行浏览、检索等操作。用户所能查看到的数据是由系统管理员所定制的。不同的用户所能看到的数据受到用户权限的限制。高级用户能够看到低极用户看不到的信息。但是,用户查看数据的方式都是不能改变的,即在系统建设期间已经由系统管理员定制好了。如果要增加一种查看数据的方式,需要通知系统管理员,由系统管理员来进行有关的操作。这就给系统的维护带来了一定的负担。

 

在这篇文章中,我们介绍了一种通过数据库视图的方式来进行数据管理的方法。具有一定权限的用户可以通过浏览器自由建立查看数据的视图。不同的用户能以不同的方式看待同一数据。一旦建立好之后,用户就可以反复使用。

 

二、技术背景

 

基于浏览器的数据库视图的建立过程中,主要涉及到以下三方面的技术:

 

2.1 Active Server Page

 

Active Server PagesASP)是服务器端脚本编写 环境,使用它可以创建和运行动态、交互的 Web 服务器应用程序。使用 ASP 可以组合 HTML 页、脚本命令和 ActiveX 组件以创建交互的 Web 页和基于 Web 的功能强大的应用程序。

浏览器从 Web 服务器上请求 .asp 文件时,ASP 脚本开始运行。然后 Web 服务器调用 ASPASP 全面读取请求的文件,执行所有脚本命令,并将 Web 页传送给浏览器。由于脚本在服务器上而不是在客户端运行,传送到浏览器上的 Web 页是在 Web 服务器上生成的。所以不必担心浏览器能否处理脚本:Web 服务器已经完成了所有脚本的处理,并将标准的 HTML 传输到浏览器。由于只有脚本的结果返回到浏览器,所以服务器端脚本不易复制。用户看不到创建他们正在浏览的页的脚本命令。

 

ASP页面中,服务器端脚本使用VBScript来进行编程。它提供一些内置的对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息。另外,还可以在脚本中创建ActiveX对象来扩充服务器端的功能。

 

 2.2 Activex Database Object

 

对数据库的操作主要是通过Activex Database Object(ADO)来实现的。ADO对象模型为开发者提供了一种访问数据源的快速且功能强大的方法。它包括以下几种对象:

 

Connection(连接对象):提供与数据源的连接

Parameter(参数对象):用于存储将被传递给内驻程序的参数。

Command(命令对象):针对数据源的特定的执行命令,它返回一个记录集合。

Error(错误集合和错误对象):当数据源产生并返回了错误时,就会生成错误集合放在错误对象中。

RecordSet(记录集对象):使用记录集对象的字段集合,可以访问记录集合中的单个字段,并可进行修改、删除、更新。

Field(字段对象):用来访问当前记录中指定的字段。

 

下面我们主要详细讲一下在数据库视图的建立过程要用到的Connection对象、RecordSet对象以及Error对象。

1Connection对象

 

Connection对象代表一个与数据源的连接并且允许你执行命令。要执行任何种类的命令,你可以使用Connection对象的Execute方法。如果命令行返回,一个缺省的Recordset对象就被创建并返回。

 

2RecordSet对象

 

如果执行了一个从数据库表中返回数据行的语句,则会返回一个RecordSet对象,来表示返回的数据行。

 

3.Error集合和Error对象

 

错误集合属于连接对象。它由许多错误对象组成,一个错误对象对应一个错误。在错误集合中捕获并存储的错误,是由数据提供者发送出来的。

 

2.3 Document Object Model (DOM)

 

文档对象模型(Document Object Model)是一套对象层次,包含了网页里所有的对象,这些对象包括段落、图像、标题等等。而这个对象模型则提供了一个层次,使作者可以找到任何一个对象。例如,文档对象包括历史记录、地址以及浏览器等。历史记录是指用户所访问过的网页的集合,地址则是指用户所访问的网页地址URL,浏览器则是指用户所用的浏览器。历史记录、地址和浏览器都是文档所含的对象,而他们也可能包含其他的对象。这样的一个包含层次就是文档对象模型。文档对象模型是由W3C制定的。Internet ExplorerNetscaper Navigator都对它进行了各自不同的实现。文档对象模型可以用来指向网页中的任何元素,这样网页作者就可以根据用户的操作而随意改变任何元素的属性,甚至内容。

 

三、系统实现

 

3.1 与数据库建立连接

 

文本框: Set 
   
 Session  ("sysconn")     =server.CreateObject ("ADODB.Connection")
Session (“sysconn”).open “File Name=d:\Asp Project\dataconn.udl”


可以在每次用户要于数据库交互的时候与数据库建立连接。但是打开一个数据库连接要花费服务器很多时间和资源,如果频繁地进行打开数据库和关闭数据库操作,会使服务器的负担过重。因此在这里,我们使用ASP的内置Session对象(会话对象)来管理数据库连接。即在用户登录时建立与数据库的连接,在这之后数据库连接一直为打开状态,直到用户离开此站点。使用的代码如下:

 

32数据字典的获取

 

1 数据库中表和视图的获取

文本框: 1	querytype=adSchemaTables
2	criteria=Array("EIP_database",Empty,Empty,"TABLE")
3	Set 
   
 viewRS			  	   	  	 	 	=Session ("sysconn").OpenSchema(querytype,criteria)
4	While			 NOT viewRS.	 Eof
5	Response.write viewRS(2) 
6		 	viewRS. MoveNext
7	Wend


数据库中表和视图的获取是通过ADO对象的OpenSchema方法获得的。OpenSchema需要两个参数,分别是querytypecriteria

 

在上面的程序中,将常量adSchemaTables赋给querytype变量。AdSchemaTables是在adovbs.inc中定义的ADO常量。当用这种查询类型调用OpenSchema方法时,返回的结果集中包含有用户创建的表、系统表以及视图。criteria变量用来限制查询结果。它有一个包含4个元素的数组。其中最后一个元素用来指定返回的表的类型。用来返回用户创建的表或视图所对应的值分别是“TABLE”和“VIEW”。在执行语句3后,数据库EIP_database中的所有用户创建的表的信息就可以通过记录集viewRS来访问了。其中viewRS(2)表示取得记录集viewRS0开始的第2个字段的值,即表的名称。取得视图的操作同样如此,只是把语句2中的“TABLE”替换为“VIEW”。

 

2 每一个表中字段名的获取

 

文本框: 1	sqlstr="select 
   
 *	 from	 " & RS("table_name")
2	Set 	 RS	 	 = Session("sysconn").execute(sqlstr)
3	For	 i    		  	 = 0 to RS.Fields.Count - 1 %
4		Reponse.write		 RS (i).Name%	 >
5	Next I


数据库表的字段名称是通过结果记录集RS的“Name”属性获得的。数据库表的字段总的个数可以通过RS.Fields.Count来获得。

 

3. 操作界面的设计

 

这一部分的功能是提供给用户一个的透明的建立数据库视图的界面。用户不需要掌握建立数据库视图所需要使用的SQL语言,只需要在操作界面上进行选择,由脚本自动生成对应的SQL语言来对数据库进行操作。

 

数据库中的视图是从一个或几个基本表导出的表。通过点击页面上的“增加表”和“减少表”,用户可以动态地定义此次数据库视图的建立需要涉及到几个表。为了记录当前的表的个数,我们在页面中插入了一个“隐藏表单”。它对用户是不可见的,其中保存当前表的个数。在服务器的脚本的执行过程中,根据这一数值来循环产生相应的表。在每一个表中,都包含一个列出数据库中所有表的下拉列表以及当前表中的所有字段名称。在每一个字段名称前有一个“检查框”供用户选择在视图中是否包含此字段。用户可以随时改变所要使用的表,字段名称也随之更新。

 

数据库视图的建立需要定义各个数据库表字段之间的关联关系或者是某个字段所需要符合的条件。用户可以在页面上通过选择,建立起这满足两方面要求的SQL语句。

文本框: 1	for 
   
 i	 =0 to	 		document.viewform.length-1
2		elementname					  			  				=document.viewform.elements(i).name	
3		position=InStr(elementname,"option")
4		if				 position 		 			 		 		=1							 then
5			if document.viewform.elements(i).Checked						 then
6				str		 					 =mid(elementname,7)
7				selectsql				 =selectsql +str+ ","
8			end			 if
9		end		 if
10		position		=InStr(elementname,"tablename")
11		if		 position=1 then
12			fromsql			 =fromsql+document.viewform.elements(i).value+","
13		end		 if
14	next


当用户选择好之后,就可以通过“提交”操作来创建数据库视图。页面上的脚本在进行“提交”操作之前自动生成用户的选择所对应的 SQL语句。下面以“Select”语句和“from”语句的生成为例:

 

由于页面中的表单中的元素是动态生成的,所以不能直接通过表单元素名称来获得对它的控制。因此,在语句1中,通过遍历文档对象模型中的元素来获得每一个元素。在动态生成元素的时候,我们对元素的命名进行了统一的规定,表示字段是否被选中的“检查框”元素都以“option”开始,表示当前被选择表的元素都以“tablename”开始。在语句310中分别判断当前的元素是否是这两种因素。如果是的话,就分别添加在“selectsql”字符串和“fromsql 字符串后面。

 

文本框:

  1	sql="Create View

 "+viewname+"		 as "+expression
2	Session("sysconn").execute(sql)

 

 

 

 

4、对数据字典的操作
1
)创建视图

 

在接收到有脚本生成的SQL语句后,语句2会对数据库进行操作,创建相应的视图。

 

2)删除视图

文本框:

  1	sql="Drop view

 "+viewname
2	Session("sysconn").		 execute(sql)

 

 

 

语句2会对数据库进行操作,删除名称为“viewname”的视图

 

5.对错误的处理

 

为了处理数据库连接中或是建立数据库视图的过程中可能产生的错误,使用如下的代码段来捕获产生的错误。

文本框: If Session("sysconn").Errors.Count>0 Then
     For Each er In Session("sysconn").Errors
	    Response.Write("Number:"&er.Number)
		Response.Write("<p>")
		response.Write("Source:"&er.Source)
		Response.Write("<p >")
		Response.Write("Text:"&er.Description)
end If

 

 

 

 

 

 

 

 

    

四、总结

 

在我们承担的企业信息平台的建设中,我们采用此方法实现了基于浏览器的用户信息内容的定制。经过实践证明,此方法是切实可行的,并且在企业信息平台中达到了预定的效果。

 

参考文献:

[1] Stephen Walther Active Server Pages 揭密” 北京希望出版社 20001月出版

[2] Greg Buczek, MCSD.MCT ASP应用开发指南”科学出版社20009月出版

[3]萨师煊 王珊 数据库系统概论高等教育出版社 19914月出版

[4] Mark R. Brown, Jerry Honeycutt HTML3.2开发使用手册”机械工业出版社 199712月出版

 

王海波:Wang Haibo26岁,男,博士生,当前研究领域为Internet应用软件,现在中国科学院计算技术研究所软件研究室。通信地址:北京2704信箱软件研究室, 邮政编码100080,电话010-62587953

耿晖:Geng Hui27岁,男,博士生,当前研究领域为数字图书馆和XML引擎,现在中国科学院计算技术研究所软件研究室。通信地址:北京2704信箱软件研究室, 邮政编码100080,电话010-62587953

 

来源:中国科学院计算技术研究所

 

如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系
蓝凌知味堂总裁视线:知识管理是一种处事..

知识管理并非某些领先企业的专利,当然也并非某些精英们所垄断,知识管理就是让他们养成“烂笔头”的习惯

夏敬华的KM专栏如何评估业务领域的知识管理实..

KM准备度模型如同温度计,使得我们能够很清楚地测量出组织的“体温”,为发现企业在知识管理方面存在的问题提供依据。

KM八爪鱼-萧秋水的专栏[原创]大禹治水,堵不如疏:如..

对于价值员工,要关心,也要委以重任,并在项目过程中,使其知识自然地“流”出来,比如完善项目文档归档制度。

机遇与挑战并存 协同软件大比拼

2007年,中国协同软件市场份额达到了16.21 亿元人民币,较2006年13亿增长了24.7%。2008年的协同软件,呈现出鲜明的“进、转、合”并举的态势。协……