从上世纪八十年代起,随着个人计算机(PC)的发展,企事业单位逐步建立起计算机应用系统来处理传统事务。从简单的单机应用逐步发展到局域网系统,进而建立跨地区垮国家的广域网系统。从单纯的以科学计算和数据管理为主的系统逐步发展成综合的信息处理系统和办公自动化系统。从九十年代起随着互联网的普及,企事业单位的计算机应用系统也进入了互联网时代,以Web网站为核心的面向全球的信息系统正在广泛建立。
在企事业单位内部的各种信息系统逐步发展完备的情形下,新的问题新的需求逐步浮现出来:各种信息系统自成一体,使用和维护成本增大;信息资源不能共享,数据一致性维护的成本太高;用户需要多次重复登录进入不同系统,操作繁琐,工作效率受限;用户不能按需获取信息定制内容;现有系统缺少用户之间的协作支持等等。因此,如何将各阶段建立起来的各式各样的信息系统资源重新整合,即把一个个的信息孤岛有效地联结起来,通过一个“港口”简便进出,正在成为信息系统深化发展的首要问题。
Protal (门户)技术的出现,带来了解决这些问题的良方。Portal以用户为中心,提供统一的用户登录,实现信息的集中访问,集成了办公商务一体的工作流环境。利用Portal技术,可以方便地将员工所需要的,来源于各种渠道的信息资料集成在一个统一的桌面视窗之内。根据Portal提供的定制功能,部门主管可以为本部门人员量身定制一套特有的信息门户,将部门共同所需信息有效地组织在统一的Web浏览器之中,并可根据人员级别和职能来设定相应的访问操作权限。
早在九十年代中期就有人提出了Portal的概念。最初出现的是像Yahoo这类的互联网服务商的Portal网站,后来出现了一些行业性Portal网站。早期由于没有相关的标准规范,Portal网站技术五花八门,产品功能和品质参差不齐,因而难以获得人们的认可,Portal技术的应用,Portal网站的发展出现过短暂的停滞。
随着Web技术的广泛应用和Web相关标准的逐步完善,特别是在2003年获得业界通过的两个标准——JSR-168和WSRP为Portal的发展确立了方向,更是随着SOA理念的实际化使得Portal愈加火热起来。
一、Portal架构
(一)Portal和Portlet概念
“Portal”一词在英语中解释为“入口,大门”,中文翻译为“门户”。在Sun的Portlet技术规范JSR-168(Java Specification Request 168)中定义为:Portal是基于Web的应用,通常提供个性化,单点登录,整合不同资源的综合信息展示平台。
Portal展现在最终用户面前的是类似于Web网页的Portal页面,也许有些Portal主页制作的更像是一个桌面系统的界面,更能获得用户的认可。
构成Portal页面的是能够建立和展现不同内容的一系列Portlet。Portal使用Portlet作为可插拔用户接口组件,提供信息系统的表示层。
Portlet是部署在特定容器内用来生成动态内容的可重用Web组件。Portlet处理从Portal传递来的用户请求,动态生成输出内容的一个片段,展现在Portal页面的某个位置上。
Portlet的主要特点:
Portlet 是基于Java技术的Web 组件。
由专门的容器管理 Portlet 。
Portlet用于生成动态内容。
Portlet只生成标记片段,并不产生完整的Web页面。由Portal负责将Portlet片段整合成完整的Portal页面。
Portlet不直接捆绑到URL。
Web用户通过Portal同Portlet进行交互。
Portlet具有预定义的模版和视窗状态。
Portlet容器是Portlet的运行环境,它负责管理Portlet的生命周期,保存Portlet的定制信息。通俗的讲,Portlet容器就是Portlet组件工作的管理器,这一点类似于Servlet容器和Servlet之间的关系。
(二)Portal结构
Portal是一个Web页面,它由一个或若干个Portal页面组织而成。而每个Portal页面又是由一个或若干个Portlet窗口构成的——Portlet是以窗口的形式出现在Portal页面里。如图1所示是一个Portal页面结构的示例,有四个Portlet窗口。
Portlet窗口由两部分构成:其一是外观,包含有标题条、窗口控制和边框样式;其二是内容,即Portlet片段。
图2显示了Portal服务器、Portlet容器以及Portlet之间的关系。
(三)Portal组成架构
Portal系统一般由Portal服务器、支持Servlet的Java应用服务器或Web服务器、数据库服务器、LDAP服务器组成,此外还可以加上身份认证和访问控制服务器(Identity Server或Access Manager)等。前面所说的Portlet容器通常是打包在Portal服务器中的。
有的Portal系统可以工作在具有Servlet容器的Web服务器上,但多数Portal要求在Java应用服务器上运行。如Liferay Portal既能在Tomcat(Servlet容器+Web服务器)上使用,也可以在JBossAS(Java应用服务器+Web服务器)上运行,而JBoss Portal只支持JBossAS的Java应用服务器。
通常,Portal的定制信息是保存在数据库中的,几乎所有的Portal系统产品需要数据库管理系统的支持。
LDAP服务器主要用在用户管理、身份认证和权限管理上。有些Portal系统也支持使用数据库来管理用户身份和权限。
为了解决用户单点登录和访问控制问题,也许还要增加这方面的专业服务软件,如Idengtity Manager或Access Manager等。
此外,Portal服务器也支持其它应用服务系统的协同工作,比如同电子邮件(Email),网络交谈(Chat),网络会议(Web Conference),以及基于Lotus Domino的OA系统等直接对接联动。
(四)Portal应用架构
图4是Portal应用的一个示例架构图。
(五)Portal主要功能
1、单点登录(SSO—Single Sign-On):Portal提供对各种应用系统和数据的安全集成,用户只需从Portal服务器登录一次就可以访问其它应用系统和数据库。对于安全性要求较高的业务系统,如电子银行、电子交易系统等,通过传递用户身份信息,如数字证书信息、数字签名信息等进行二次身份认证,保证单点登录的安全性。单点登录既减少了用户在多个应用系统反复登录多次认证的麻烦,更是简化了各种应用系统对用户及其权限的一致性维护管理。
2、资源整合:能够把各种不同应用的内容聚合到一个统一的页面呈现给用户,实现同应用系统实时交换信息。能够从各种数据源如数据库、多种格式的文件档案、Web页面、电子邮件等集成用户所需的动态内容。
3、定制与个性化:能够为不同角色的用户制定不同功能权限的Portal页面。同时,用户自己也能够按照喜好在规定的权限下定制自己风格的页面和内容,如可以定制Portal页面,取舍不同功能和内容的Portlet窗口,自行布置Portlet窗口的摆放位置,可以对Portlet窗口外观,如标题,图标,颜色等进行个性化设置。
4、协作功能:为用户提供即时讨论,聊天,论坛,电子邮件以及语音或视频会议等功能。
5、工作流:支持根据业务处理规则建立起来的工作流任务处理,比如审批流程等待办事宜。
6、信息检索:从多种数据源检索动态信息资料。
7、客户端:除了Web浏览器外,可以为PDA和手机提供接口,实现移动接入服务。
二、Portal标准
建立一个以标准为依托的Portal才能很好地保护自己的投资,既便于同现有应用系统连接,也使得同第三方的相关产品更容易接口。在2003年先后发布的JSR-168和WSRP两大标准为Portal的发展奠定了基础,结束了战国纷争的局面,Portal的发展和应用将会更加广阔长远。
下面介绍几个与Portal紧密相关的技术标准:
1、WSDL——Web Service Description Language
Web服务描述语言。WSDL是用来描述Web服务和说明如何与Web服务通信的XML语言。WSDL语言使用XML格式来描述信息的接口、访问格式和处理形式。
WSDL描述信息内容。
2、SOAP——Simple Object Access Protocol
简单对象访问协议。SOAP是一种在无中心的分布式环境下,应用系统之间交换结构化信息和特定类型的信息所使用的基于XML的轻量级协议。SOAP允许任何信息对象在任何语言、任何平台上使用多种传输协议实现传输处理。
SOAP定义信息的传输处理。
在Web应用环境中,通常把SOAP同WSDL结合起来,利用HTTP协议实现应用系统之间交换各种类型的信息对象。
3、JSR -168——Java Specification Request - Portlet Specification
Java Portlet规范。JSR-168为业界明确了Portal的定义,制定了Portlet规范标准,从而解决了基于Java的Portal之间,以及同其他Web应用系统之间的互操作性。遵循JSR-168的Portlet将具有适用于所有Portal服务器和Web应用系统,支持多种类型的客户端,支持本地化和国际化,具备确定的安全性,允许Portal应用程序热部署和重新部署。
4、WSRP——Web Services for Remote Portlets
远程Portlet Web服务协议。WSRP定义了Portal和Portlet容器服务之间标准化接口的一个Web服务标准。WSRP允许在Portal之间或其他Web应用上即插即用,具有互操作性,提供可视化的、面向用户的远程Web服务。
远程Portlet在远程服务器上作为Web服务运行,其服务可以发布到公共的或单位自己的UDDI服务器上。Portal或其他支持WSRP的应用系统通过UDDI服务来查找并使用远程系统提供的WSRP服务内容。
WSRP的典型应用是把天气预报、即时新闻、股市行情等嵌入到自己的Portal中(在国外有专门的WSRP内容提供商提供这种服务)。
WSRP使用了WSDL定义应用程序的接口,并以SOAP作为通讯标准。
5、其他规范标准
此外还有一些与Portal有一定关联的技术标准,在开发建立Portal应用中将会使用到:
UDDI:Universal Description,Discovery and Integration
JSR-170/283:Java Specification Request - Content Repository for Java Technology API
JAAS:Java Authentication and Authorization Service
LDAP:Lightweight Directory Access Protocol
SAML:Security Assertion Markup Language
BPEL:Business Process Execution Language for Web Services
三、Portal应用实现
Portal可以从本地或远端获得数据资源:数据资源可以来自于本地或异地的数据库,应用系统,公共信息内容供应商(RSS,提供新闻、财经信息、天气预报等),Web站点或其他Portal。此外,Portal还可以提供日历、工作流、电子邮件、论坛、博客、Wiki、即时交谈、电子会议等等协同工作的应用功能。可见,Portal是一个有别于传统桌面应用和Web网站的全新应用系统,是各种信息处理的集中展现平台,是用户日常工作的综合台面。
显然,建立一个良好的Portal应用需要充分考虑各种应用系统和数据资源的整合问题:
1、现有应用系统和数据资源的利用 对能够改造利用的,要开发相应的Portlet组件来重新实现;对不能改造的可以通过链接的方式跳转到这些系统,其中的数据库资源可以采取单纯读取的方式获得;还有些封闭的专业应用系统可能完全无法接入Portal,可以采取定期卸载的方式获得它的数据库资源。
2、新建应用系统的考虑 需要以Portal理念进行设计,按照相关标准来开发实现应用功能的Portlet组件,然后集成到Portal系统使用。
3、单点登录与权限管理 对于新建应用系统或能够改造的现有应用系统,通过Portlet组件比较容易实现单点登录,进行统一用户认证和用户权限的控制。当然,对那些安全性要求较高的应用系统还可以在这些系统内部进行二次认证和授权处理。对那些不能改造的应用系统显然也无法实现单点登录,用户需要重新登录到这类系统,用户管理和权限控制还依赖于这些系统自己处理。
(一)单点登录和权限控制
单点登录是为了方便用户进入多个应用系统,减少用户多次登录,免除用户记忆多套用户名和密码的麻烦。
单点登录涉及到两个问题,一是身份认证,二是权限控制。
身份认证是Portal系统提供访问控制的第一步,即确认用户是谁,能否进入系统。通常要求用户提供用户名和口令,必要时要求提供用户的数字证书,也可以配合使用IC卡、指纹等验证手段。
权限控制或授权确定一个用户的角色和级别,从而控制用户的访问许可,即决定用户能查阅哪些资料,能进行哪些操作等等。Java EE架构采用了基于角色的访问控制策略(RBAC)。RBAC的基本思想是把对用户的授权划分成两个分配关系,即“用户—角色”和“角色—权限”。RBAC的好处是便于应用系统的开发,使得程序设计相对独立和透明化,只是在应用系统部署使用时才通过“角色”把“用户”和“权限”关联起来,而且对用户和权限的调整配置容易实施。
用户与角色之间是多对多的关系,即一个用户可以被分配给多个角色,多个用户也可以分配给同一个角色。
角色与权限之间也是多对多的关系,即一个权限可以与多个角色相关,一个角色也可以包含多重权限。
Sun公司建立了具有可堆叠和可插接功能的JAAS框架,为Java应用系统提供安全而灵活的身份认证和授权机制。如在JBossAS应用服务器环境下,利用JAAS技术,JBossAS提供了几种身份认证模块(使用者也可以自己编写新的身份认证模块),并且可以实现多级认证(堆叠)。对Web应用和EJB等则通过配置文件定义访问角色和访问方式以实现安全控制。对没有提供JAAS支持或支持不足的Web服务器或Java应用服务器,使用者需要在自己的应用程序中编写相关代码或模块来支持JAAS实现身份认证和权限管理。
此外还需要考虑不同领域内不同应用之间的信任关系,解决跨越应用系统的身份认证和访问控制问题。这一点需要用到SAML,Federation或Liberty等技术规范,通过传递用户认证资料取得应用系统之间的认证互信。
专业的Web服务软件公司能够提供比较全面的解决方案,其产品为Web环境下的各种应用提供可靠的身份认证和访问权限管理。比如Sun公司的Access Manager 7.1,Oracle公司的Oracle Access Manager 10g,IBM公司有Tivoli Access Manager(提供用户单点登录)和Tivoli Identity Manager(解决访问控制问题),还有BEA公司的BEA AquaLogic Enterprise Security等。
相比之下,开源软件在这方面比较瘦弱,基本上没有专门的软件产品,只能提供一定的支持方案。例如通过对JBossAS和Tomcat做一些配置,可以支持使用耶鲁大学的CAS实现单点登录功能,也能够实现JAAS来获得用户身份认证和对应用资源的访问控制。这样,建立在JBossAS和Tomcat之上的应用如JBoss Portal,Liferay Portal和Apache JetSpeed当然也就具备了这些功能了。
在用户管理、身份认证和权限控制方面,无论是商业的或开源的Portal产品多数喜欢采用LDAP,当然也有的支持使用数据库。LDAP的好处一是它可以方便的按类别存储任何类型的数据信息;其二,它的树形存储结构类似于一个企事业单位的组织架构,容易对应;三是它同应用系统接口容易,各个LDAP产品的接口都一致无需特别配置;四是它对数据信息的访问安全控制方便;五是它偏向于相对固定数据信息的查询使用,效率较高,维护也方便。
(二)Portlet开发
建立Portal应用系统的主要任务之一就是设计各式各样的Portlet组件,实现应用系统的各种功能。虽然多数Portal系统会附送一些常用的Portlet组件,可以满足一些公共服务需要,但跟本单位工作事务和业务处理相关的大量Portlet组件必须有专门人员进行细致的设计和开发。
Portlet的设计开发有必要遵循JSR-168规范和WSRP标准,以适合各种类型的Portal服务器。在具体的实现上,也将会用到WSDL、SOAP和UDDI相关技术规范,以便同Web服务应用系统进行信息交互处理。
开发Portlet主要有两种方法,一是借助于Portal产品商提供的可视化的预制开发工具,二是应用Java语言直接编程。预制开发工具为Portlet开发者提供了许多有益的帮助,如自动产生必要的配置文件,预制了程序代码框架,提供所见即所得编辑和调试环境等等。但无论如何,Portlet开发的重点是Portlet片段内容的产生和处理,主要以JSP为主配合HTML和JavaScript等网页开发技术,再借用JSF,Struts,hibernate等框架来简化开发。
Portlet处理信息资料主要有以下三种情况:
1、Portlet在本地直接处理信息资料
Portlet在本地直接同数据库、LDAP或其他数据存储系统进行查询、更新等操作,也可以使用其他Java资源如JavaBean、EJB组件进行交互处理。
2、Portlet访问其他应用系统的Web服务
Portlet需要访问其他应用系统资源时,一般是采用SOAP技术实现对Web服务的请求操作,如图5所示。
3、Portlet访问其他Portal服务
Portal可以把公共的Portlet信息发布到UDDI资源中心,以供其他Portal选择使用。需要其他Portal提供特定服务的Portal可以通过在UDDI中心查找定位来获取需要的Portlet提供服务(图6)。此种情况使用了WSRP技术来实现。
(三)Portal定制
1、业务处理
有别于传统的应用系统的开发,开发Portal应用的重点是Portlet,并每个Portlet并不是一个完整的系统而是一个实现特定信息处理功能的Web组件。因此,如果要把一个传统的应用系统全部转换到Portal来,就需要把原系统进行分解,把每个操作功能重新用Portlet来实现(不一定是一对一的),然后根据系统处理的要求组装到Portal页面上。
用户在使用传统的应用系统时,是从一层层的菜单逐级进入实际操作程序的界面的,操作繁琐,使用不便,容易遗漏。转入Portal系统后需要简化这种使用方式,把应用系统操作程序制作成的Portlet组件,直接嵌入某个Portal页面上或者按操作类型,时间先后或缓急程度顺序放置在“待办事宜”列表中,提示用户快速处理。
Portal页面的组装即页面布置跟用户的级别和角色有关。Portal架构员需要根据每项业务的处理流程和每个Portlet的功能,按照每类用户的级别和角色来配置用户的Portal页面。与用户无关的或无操作权限的Portlet不应该出现在用户的Portal页面上,用户也不能把它添加进来。对于用户必须使用的Portlet也要限制使用者不能把它从Portal页面中移除出去。
2、协作功能
提供同事之间的协同工作支持是Portal的功能之一。协同工作主要包括电子邮件、实时交谈(Chat,类似于QQ)、网络会议(语音或视频会议)、维客(Wiki,允许参与者修改讨论的文章)、博客(Blog)、留言等等。在工作处理中遇到疑问需要向同事了解情况,可以即时开启Chat展开讨论,也可以召开网络会议。
另外可以设计一个手机短信Portlet,把需要尽快处理的事项及时发送短信通知相关人员。
有的Portal产品附带了一些协同工作的Portlet和服务软件,有的需要专门购买,也有开源软件可以免费使用。
3、其他功能
提供诸如信息检索、公告、新闻、日历、通信录等辅助功能以方便工作。如果连接互联网,还可以获取天气预报,提供证券行情等公共服务。