FlexPortlet

快速定位  
  Homepage  
  Download  
  Community  
     
Updated Download  
  Bin Version(War)

  Source Code  
  Screenshots  
     
Documentation  
  FAQ  
  User Guide  
  Developer Guide  
  
 Project Member

  

 Contect Information

    

design by eva 


分析设计文档

 

摘 要

本部分描述了FlexPorlet的创作思路以及具体设计。FlexPortlet是用JAVA编写的,遵循JSR168规范的的Portlet

 

 

 

一、 引言

1、  编写目的

Portlet开发的过程中,将由HtmlCSSjavascript,图片,甚至JSP构成的一个网站重新整理编写为一个Portlet应用程序,一直是一个比较棘手的工作,这项工作虽然没有太多的技术要求,但却费时费力,开源项目FlexPortlet的编写目的,就是为了解决这个问题,希望能通过配置的方式,将一个网站直接转换为一个portlet,其中过程无需用户再次编程。

 

2、  背景

 

最近几年,Portal技术的广泛应用为采用Portal技术的各种组织带来了巨大的价值,通过创建各种Portlet应用程序,用户可以集中的访问应用程序,无缝的漫游各个系统,和享受个性化服务带来的种种便利。然而,通过门户应用的部署获得最大价值的关键在于整合现有应用程序中的数据,内容和过程,为用户提供自定义的视图,从而使他们可以更有效率的工作。针对门户技术而言,更应该将其功能定位在对其所连接的各个系统的展现层的整合。最为现实的一点就是,企业中原本就存在大量的静态或动态内容的网站,如何将这些已经存在的内容转化为Portlet,使其做为Portal系统的一部分存在,并维护,变成一个急待解决的问题。对于用户或实施方来说,portlet 的生成和部署过程可能是很耗时的,特别是由于人们普遍缺乏快速生成、自定义、维护和部署定制高价值 portlet 所必需的相应 Java 开发技能。因而实现一种可以快速解决以上问题,注重生成高价值的可交付的Portlet的通用技术,显得很迫在眉睫。

总体来说,flexportlet是一款代码生成软件,可以将输入的网站转换成Portlet的标准格式进行输出,极大的减轻程序员的工作量,降低Portal开发的要求标准。目前行业中还没有一款产品具有与此类似的功能。

 

3、  参考资料

JSR 168: Portlet Specification

http://www.jcp.org/en/jsr/detail?id=168

 

 

4、  术语和缩写词

 

Portal: 入口、门户

虽然还是一种正在演进的概念,但入口通常是指一个起始点或一个网关,用户通过它们可在Web上航行,获得各种信息资源和服务,如电子邮件、论坛、搜索引擎和购物中心等。

 

Portlet:含义1Portal系统中运行的应用程序的代称,类似于Web应用;含义2Portal系统中运行的程序片断,类似与Servlet

 

JSR168:由Sun公司领导的组织制定的Portlet的行业标准规范。

 

二、 项目需求

1、  需求分析:

项目需要实现的目标就是制作一款针对Portlet的代码转换软件,通过此软件,可以方便的将各种页面转换成为Portlet

应用的技术参考书包括:

Portlet行业规范JSR168

http://www.jcp.org/en/jsr/detail?id=168

HTML规范:

HTTP1.0http://www.w3.org/Protocols/rfc1945/rfc1945

HTTP1.1http://www.ietf.org/rfc/rfc2616.txt

Form Upload http://www.ietf.org/rfc/rfc1867.txt

IBM Portlet 开发手册:

http://www.redbooks.ibm.com/abstracts/sg246098.html?Open

参考规范:JSR168

技术路线:J2EE框架以及Portal框架

项目管理方法:

因为本项目为一个开源项目,项目组成员以及用户主要通过网络进行交流沟通,为更好的进行项目管理以及系统开发,主要采用XP的方法进行组织,项目主要遵循以下原则:

1.我们最优先要做的是通过尽早的、持续的交付有价值的软件版本供用户使用。

2.即使到了开发的后期,也欢迎改变需求。

3.经常性地交付可以工作的软件,版本变更的时间通常在几天。

4.在团队内部,最具有效果并富有效率的传递信息的方法,就是交谈。

5.工作的软件是首要的进度度量标准。

6.不断地关注优秀的技能和好的设计。

7.简单是最根本的。

8.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

 

三、 创作思路

  一组互相链接的页面放置在Portlet中,为什么就没法像原先一样互相访问了呢?原因就是在于Portal的架构设计本身就不允许Portlet中的页面可以互相访问,而是需要通过Portlet进行转发,才可以正常进行访问。所以,FlexPortlet需要做到的,就是将页面中原有的连接进行重新编码,把原有的连接方式变为对Portlet的提交访问,将原有的连接地址变为提交参数,Portlet在此将起到一个控制器的作用,当Portlet接受到这样的请求的时候,会把请求的地址页面输出,这样就起到了跳转的作用。

  FlexPortlet的目标功能非常单一,所以在软件设计上也力求简单,尽力使软件简单、简洁。

 

四、 设计

1软件逻辑、架构设计、关键技术点

FlexPortlet为一个典型的Portlet应用,由WebJava代码两部分构成。其中Web部分放置其web应用对应的配置文件,以及用户UIJava代码部分实现系统功能。

FlexPortlet使用一个简化了的MVC模型作为设计框架,其中Portlet作为MVC中的控制器存在,jsp页面作为MVC中的视图,而Model层则由一系列的Service构成。

FlexPortlet采用面向接口的编程思想,每层间都使用接口进行松耦合,Service层的每个服务,都可以通过实现定义的接口,从而轻易的按实际需求进行重新实现。

如下的Service构成了FlexPortlet的主要功能:

ParseFileService:文件解析服务,FlexPortlet最核心的服务,通过此服务,将输入的页面进行解析,转换成为符合Portlet要求的页面。在具体实现中,首先实现了一个可以对HTML页面标签进行处理的基类,此基类可以将HTML页面解析为一系列的HTML标签对象,在此基类的基础上,继承实现了HTML转换为Portlet过程中需要进行的各种处理,具体的处理情况如下:

     * 1.将如:<a href="1.html">中的链接转化为一个JS函数,类似<a href="javascript:goPage('1.html')">,用于提交给Portlet控制器。

     * 2.<img src="1.gif">中的图片地址使用Portlet的格式编码,转化为类似<img src="encodeURL(1.gif)">的内容

     * 3.<script language="javascript" src="m.js">中的js地址使用Portlet的格式编码,转换为<script language="javascript" src="encodeURL

(m.js)">

     * 4.<link rel="stylesheet" href="1.css" type="text/css">中的CSS地址使用Portlet的格式编码,转化为<link rel="stylesheet" href="encode

URL(1.css)" type="text/css">的形式。

     * 5.<td width="100%" height="80%" background="1.gif">中的图片地址使用Portlet的格式编码,转化为<td width="100%" height="80%" background="encodeURL(1.gif)">

StoreService:在用户进行Portlet配置的过程中,必然会涉及到配置信息的保存,为了简化FlexPortlet的复杂度,并没有引入数据库作为存储机制,而是使用Portlet规范中制定的数据存储API实现了配置信息的保存。为了调用的简便,本类实现了JAVA对象与Portal数据存储间的映射,通过调用方法即可将JAVA对象进行完整的入库与出库的操作,无需和原先一样需要对JAVA对象中的每个属性都进行出入库操作。

UnzipService:解压缩操作,将用户上传的压缩包解压到制定的目录中。

UploadFileService:上载文件操作,处理用户的上载文件请求。

FlexPortlet也实现了一系列的辅助类,帮助进行操作。

 

2 部署与安装设计

FlexPortlet将通过Portal平台自带的安装功能进行安装。

 

五、 依赖的其它软件

未依赖任何其他软件