CIO信息化管理
按行业筛选
请选择行业
----------------------
-全部行业
------------------
-机床与金属加工设备
-刀具/量具/夹具/磨具
-模具设计与制造
-塑料机械/橡胶机械
-通用机械/化工机械
-工程机械/建材机械
-交通运输/海工装备
-农业机械
-食品机械/烟草机械
-包装机械
-印刷机械/广告设备
-纺织机械
-木工/造纸/环保/医疗设备
-物流设备
-智能楼宇/安防设备
-炉窑/热处理设备
-五金工具
------------------
-工业自动化
-佳工激光网
-仪器/仪表/衡器
-电力设备
-电子/通讯/办公文具
-家电/照明/健康设备
------------------
-基础件/通用件
-标准件
-工业原材料
-电子元器件及材料
-包装材料
------------------
-CAD/CAM/PDM/PLM
-ERP/制造业信息化
-管理咨询/认证
-服务/培训/工业设计
按产品筛选
----------------------
-本行业全部文章
--------------------
-企业资源计划ERP
-OA办公自动化
-CIO信息化管理
-电脑/软件/周边产
-网络/安全/存储产
机电信息化
查看本类全部文章
基于SOA和Ajax的智能报表工具的设计和开发
作者:陈晨 韩希 邢春晓 张小虎
1 引 言
Web应用发展迅速,涉及各个领域,如银行和金融、教育、电子商务、电子政务、娱乐等。Web不只使用传统的客户/服务技术,它还包括其他的Web技术,如Web浏览器和Web服务器特别是Web 2.0的提出,使得Web应用更加复杂多样,更加庞大。这样,开发新的Web应用及维护和升级已有的Web应用都面临新的挑战特别地,Web 2.0要求Web应用提供更多的桌面式用户休验,以达到易用性和交互性。
在商务智能(Business Intelligence,BI)领域,一个最重要目标,是在Web环境上实现报表功能,即提供一个可达的、易用的报表设计环境。但是,以往的工具通常昂贵且耗时,因而有相当的限制。这类Web应用的问题,主要集中在性能和交互性上。以Web上的报表为例,报表的布局、内容的展现是性能问题;而设计一个用户可定制、可扩展的报表是交互式问题。
许多当前发展的概念和技术推动着Web 2.0,使其更为成熟,这包括了SOA 和Ajax。通过在展示层和商务逻辑层之间增加一个新的层次,我们将SOA和Ajax结合在基于Web的应用中,以达到更高的可用性和效率。
2 相关研究
2.1 报表工具
企业收集和存储的数据以惊人的速度增长,各种各样的文档充斥着公司企业。信息的传输和管理就成为今天公司所面对的最关键的任务之一。报表旨在操作和管理,它包括一组事先定义好的静态或准动态的报表。这需要支持灵活多变操作查看数据,包括各种内部商业活动和外部需求。管理方面,要做到严密掌控关键的商业过程,在问题可能出现之前预先提出。这些需求很自然地要求将报表紧密整合到各个特殊的商业过程中随着Web技术的快速发展,报表工具也从原来的桌面程序扩展到了基于Web的应用。
为了适应广泛的企业用户,报表工具必须做到:1)用户驱动;2)与企业基础构架整合;3)可扩展性;4)实时性;5)快速;6)可用性;7)与企业数据源结合;8)可管理;9)安全。
2.2 面向服务的休系结构(Service-Oriented Architecture)
Web应用的体系结构也在不断的探索当中根据应用中数据和控制的复杂性不同,Web应用可以分成四类:书册网页应用(Brochure Web Applications);面向服务应用(Service oriented Applications);数据集中应用(Data intensive applications);信息系统应用(Information system applications)。
SOA是Web应用的一种软件系统的设计方法,通过发布或可发现的接口,给端用户程序或其他服务程序提供服务。实际上,SOA是服务的集合。这些服务相互通信,可以是简单数据的交互,也可以是两个或多个服务的协作。Web服务(Web Services)是描述一组操作的接口,这些操作可以通过标准的XML消息访问。一个Web服务执行一个或一组特定的任务。Web服务用一套标准的XML注释描述,称为服务描述。它说明了与服务交互所需的所有细节,包括消息格式,传输协议及位置。
2.3 胖客户端应用(Rich Internet Application)和Ajax
基于Web的UI要尽量缩小传给用户的数据。瘦客户端往往过分依赖浏览器的展示功能:信息以HTML格式从Server传给Client,并在屏幕上显示。这当然需要服务器动态地生成HTML代码。然而这往往并不能满足用户的要求。Ajar支持下,Gmail、Google Maps等应用相继出现,Web应用具有丰富的用户界面,以及可与PC相媲美的交互功能。
Ajax(Asynchrnnous JavaScript and XML)不是一项技术,它是几种技术各自发展的技术的强有力的结合。Ajax包括:1)使用XHTML和CSS的标准表现(standards-based presentalion);2)使用DOM(Document Object Model)进行动态显示与交互;3)使用XML和XSLT进行数据交换与操作;4)使用XML-HttpRequest进行异步数据传输;5)使用JavaScript将所有这些绑定起来。
Ajax可以在浏览器端实现两个强大的功能:向服务器发送请求,而无需重载页面;分析并使用XMI文件。这样不仅大大提高了用户体验,而且还在很大程度上缓解了服务器的数据处理压力。Ajax和服务器端的集成,在GIS、网站开发等领域已有探索。
3 基于SOA和Ajax的智能报表工具的设计实现
3.1 BIRT简介
Business Intelligence and Reporting Tnols(BIRT)是一个开放源的、基于Eclipse的报表系统,它能与应用程序整合在一起,制作出web和PDF格式的精美报表。在BIRT的子工程BIRT Viewer中结合了Web ServiceS和Ajax技术,使得Web应用更响应,更具交互性。
图1 BIRT组件及关系
BIRT项目针对典型lava应用程序巾广泛的报表需求。意欲提供在尽量大的范围提供协调和互补的功能,以满足广泛的需求。BIRT的初始版本着力于报表平台和商业图表平台。它包括桌面报表设计器和图表编辑器。实时运行库包括图表观察器(a report viewer)、图表引擎(a report engine)、图表模型(a report model)、数据引擎(data engine)、图表引擎(a chart engine),及一系列的核心框架组件(core infrastructure components)。图1描述了BIRT中不同的组件及他们的关系。图示中,实线框内的组件是BIRT的标准组件;虚线框中,是第二方或第兰方开发者可以添加到BIRT中的组件。
* 报表设计器(Report Designer)
设计器是一个设计工具。它使用报表设计引擎的API,生成基于ROM的报表设计文件。
* 报表设计引擎(Report Design Engine)
Engine能够产生基于报表对象模型(Report Object Model,ROM)的报表设计文件,其代码可以通过。port model API访问。API检验设计文件的元素和结构是否满足ROM描述。
* 报表生成器(Report Generator)
生成器包含2个引擎:数据引擎和报表引擎。它分析解释design并生成设计文件所描述的报表。报表引擎与数据引擎交互,将报表项对应内容。两者通过请求一响应机制交互。
* 报表浏览器Servlet(Report Viewer Servlet)
Viewe是一个servlet,它读入报表设计文件,产生HTML或FDF格式的报表。Desinger使用这个servlet和一个内置的Tomcat拷贝来实现报表预览功能。这个 servlet要调用报表生成器的API来构造报表。
3.2 基于Web Services和Ajax的BIRT Viewer的体系结构
BIRT Viewer的用户使用Web浏览器作为访问Web应用功能的接口:报表生成和展示。浏览器将用户的行为,通过HTTP协议的请求,传递给Web服务;如果用户希望从数据库取得数据并得到报表,服务器端的Viewer Servlet就被激发。
客户端的浏览器通过JSP网页向服务btroker发出一个请求,该请求接着通过预先准备好的client stub向Web Services发出一个请求。从Web Services返回的响应传递给broker,然后将结果显示在客户端的浏览器。在客户端,一个XMLHttpRequest对象被创建,并在HT7,调用中做过程报告。当一个URL准备完毕,JSP网页做为一个代理服务进行调用。在服务器端,Servlet类负责接收SOAP消息并做为响应请求的处理器。Servlet利用了做为服务代理的stub。之后,Servlet将响应从Web Services返回给用户界面,并由XMLHttpRequest捕获。这其中,XMLHttpRequest通过注册一个JavaScript响应处理函数来实现异步周期。
BIRT Viewe:在传统的C/S架构上集成了Web Services和Ajax。用户使用浏览器在Client端动作,Client端的UI组件构造Http的Request消息,并把它包装成Soap发送到Sever端处理,Server端返回Response,Client产生响应的可视化效果和数据转换。Viewer在Server端和Client端分别用Java和JavaScript实现。下面重点讨论在Client端如何基于JavaScript实现面向对象的Ajax。
3.3 客户端结构(Client Engine Structure)
客户端是用JavaScript实现的面向对象系统,可以分为三层,如图2:核心交流层、消息处理层和UI组件层。
* 核心交流层(Core Communication layer)
Core Communication Layer用来处理Client端与 Server端的xml通信。它通过使用异步的浏览器XML Http支持,在Client与Server之间建立一个同步的通信通道。
* 消息处理层(Message Handler Layer)
Message Handler Layer负责在响应(response)时处理预先定义好的XML消息原语。目前,我们定义了三类原语:init,update和query。所有的交互都由这些消息元语来表示。
* UI组件层(UI Component Layer)
UI组件层处理端用户的交互操作。它有一个全局的事件分配器来传递并处理用户事件。
3.4 prototype:Ajax的实现
prolotype.js是由Sam Stephenson写的JavaScript包,它可以创造Rich Client,高交互性的web应用程序,轻松加入Web2.0的特性。BIRT Viewer就借用了这个第三方的开源代码。
prototype的Ajax对象,专门用来封装和简化编写Ajax功能的代码。下面是从BirtCommunicationManager的connect方法中截取的一段代码:
connect:function(){
……
var myAjax=new Ajax.Request(biriSoapRequest.getURL(),
{method:'post',postBody:birtSoapRequest._xml_document,
onSuccess: this.responseHandler, onFailure: this.invalidResponseHandler,
requestHeaders:['Content-type','text/xml;charset=utf-8','SOAPAction','″″']();
birtSoapRequest.reset();
},
注意传给Ajax.Request的构造方法的第二个对象,是参数
{method:'post',postBody:birtSoapRequest._xml_document,
onSuccess: this.responseHandler, onFailure: this.invahdResponseHandler,
requestHeaders:['Content-type','text/xml;charset=utf-8','SOAPAction','″″']}
这是一个匿名对象。它表示传入的这个对象有一个名为method值为post的属性。XMLHttpRequest在Http请求期间将报告进度情况。这个进度这个进度被描述为四个不同阶段:Loading,Loaded,Interactive或Complete;Ajax.Requset对象可以在任何阶段调用自定义方法。就像我们的例子,Ajax.Request对象在完成接收响应的时候将调用this.responseHandler()方法。
4 结束语
基于Web的智能报表工具是一个非常重要的课题。本文作者的创新点是:(1)以Web上报表浏览器为例,提出了一种Web应用的基于SOA和Ajax的有效架构;(2)BIRT项目中,我们采用这种架构设计并实现了基于Web的智能报表工具。今后,将进一步研究报表工具的设计、开发,提高其性能。基于此,我们有志研究报表的搜索、数据挖掘等,拓展其应用。(end)
文章内容仅供参考
(投稿 )
(如果您是本文作者,请点击此处 )
(1/2/2009)
对 CIO信息化管理 有何见解?请到 CIO信息化管理论坛 畅所欲言吧!