用 UML 為 WebSphere Portal Portlet 建模 — 第 2 部分

發表于:2007-05-25來源:作者:點擊數: 標簽:umlPortalPortletwebsphere
高級 IT 專業人員 Portal SWAT Team eWorkplaces/Knowledge Content Management IBM Global Services 2002 年 11 月 引言 本文通過展開第 1 部分所介紹的設計模型并提供一個更加完整的 解決方案 對 第 1 部分 進行了詳細描述。第 2 部分對為門戶網站應用程序
高級 IT 專業人員 — Portal SWAT Team
eWorkplaces/Knowledge & Content Management
IBM Global Services
2002 年 11 月
引言

本文通過展開第 1 部分所介紹的設計模型并提供一個更加完整的解決方案第 1 部分進行了詳細描述。第 2 部分對為門戶網站應用程序建模進行了深入討論,并介紹了另外一些關于門戶網站應用程序設計中為 portlet 服務、EJB 和其他緊密相關的對象建模的主題。開發人員希望通過門戶網站社區尋求在設計與構建門戶網站應用程序問題上的共識。因此,這篇文章探討以下問題:

  • 為什么要使用 UML?第 1 部分討論了如何使用 UML 來為 portlet 設計建模,但并未詳細討論您為什么想要使用這種方法來設計應用程序。本文進一步探究了在設計時使用這種方法的好處。
  • 選擇一個框架。構建 Web 應用程序可以使用幾個已被驗證的框架。相對于門戶網站框架,使用這些框架有些什么優點呢?
  • 完成 portlet 設計。本文提供了一個完整的 MVC portlet 設計(沒有 UI),開發小組可以在設計與構建他們自己的應用程序時遵循這個設計。

本文與第 1 部分著重討論設計師或專業人員在設計和/或開發完整的應用程序中所要做的服務工作。所描述的方法源于幾個大型門戶網站項目的實際經驗;它是一個簡單的、標準的和可重用的方法,旨在讓所有的小組成員都可以遵循相同的指導原則。我的一位同事曾說過,“我們想讓 portlet 開發更像是裝配線而少一些藝術作品的味道。”門戶網站應用程序的設計與開發的現狀便是如此。即使是在小組內部,每一個人也都是在做他們自己的工作。由于 IBM ® WebSphere® Portal(以下稱為 Portal)是一個相對較新的產品,所以一直以來這種現象己經成為可以接受的現實。然而,既然門戶網站開發人員已獲得了更多的經驗,那他們就應該有更一致的設計實踐,并且現在應該充分利用框架。這包括加快開發速度、提高門戶網站應用程序的健壯性和改善正在進行的維護。

使用一個框架

Web 和 portal 開發人員正在努力工作以符合新技術聲稱要提供的標準。不幸的是,沒有哪個框架可以解決所有的問題。要能夠簡化開發過程,很好地理解一種技術、API 和/或框架是有必要的。設計師和專業人員需權衡使用一種框架而舍棄另一種框架的利弊。

WebSphere Portal

本文假設您正在使用 WebSphere Portal 構建一個門戶網站應用程序,并且您有一些關于應用程序的基本知識。WebSphere Portal 是在 WebSphere Application Server 之上開發的。它旨在幫助開發人員構建企業門戶網站應用程序。WebSphere Portal 為構建能夠產生高性能的、安全的、可擴展的、可伸縮的和健壯的應用程序的 portlet 提供了一個已被驗證的、完整的 API。本系列的第 1 部分和第 2 部分提供的示例都是以 WebSphere Portal 框架為基礎的。

Jade 和其他珍品

Jade 是由 IBM 提供的作為用于 Java 的企業應用程序開發框架(Enterprise Application Development frameworks for Java(EAD4J))的一部分的框架。Jade 和其他幾個框架(Topaz、Ruby 和其他框架)一起提供了一個健壯的、可伸縮的和得到支持的方式來迅速開發 J2EE 應用程序。EAD4J 工具包帶有一整套體系結構文檔和藍圖,還有最佳實踐和示例。完整的源代碼也是可以獲得的。IBM 的客戶們也可以獲得這些 EAD4J 框架。

Struts

Struts 是一個由 Jakarta 項目提供支持的開放源代碼倡議,它為普通大眾提供商業級質量的開放源代碼軟件。它還提供了一個與 Jade 類似的 Web 應用程序框架并且基于 J2EE 標準。作為一個開放源代碼倡議,使用 Struts 的客戶嘗到了開放源代碼社區(open source community)的甜頭但卻得不到對產品的直接支持。

選擇正確的框架

 

以上所述的框架旨在讓項目迅速地實現應用程序的業務邏輯而不用擔心應用程序的底層內容。所有這三個框架都提供了相似的功能,盡管它們在實現上有所不同。Jade 和 Struts 都是獨立于應用程序服務器的,而 WebSphere Portal 則僅支持 WebSphere Application Server。

幾個獨立的倡議正在進行,以將 Jade 和 Struts 集成到 WebSphere Portal 框架中。這種方法有利也有弊。當評估這個集成方案時,請將以下幾條牢記在心:

  • 現有的知識基礎:開發小組可能已經有了這些框架中的某一個的知識并期望能夠通過使用額外的帶有 WebSphere Portal 的框架來利用這些知識。但是開發人員將仍然需要學習門戶網站 API 來編寫有效的門戶網站應用程序。
  • 一次編寫 — 隨處運行:客戶們可能會選擇編寫具有既能在 WebSphere Portal 內部也能在其外部運行這樣優點的應用程序。使用如 Jade 或 Struts 這樣的框架會有助于以其可以在不同環境中被重用的方式利用那些開發成果。開發人員必須確保以一種真正獨立的方式編寫應用程序,并且還要確保所用的開發時間不超過使用這些代碼所用的時間。
  • 額外的復雜性:使用額外的框架(如 Jade 或 Struts)將會把額外的復雜性引入您的環境并且會給流程引入更多層。這會給新入門的開發人員帶來更高的學習曲線,并且會增加測試與調試時間。

關于所有這三個框架的信息有很多,這些信息概括了每一個框架提供的功能和益處。盡管每一個框架都可能在特定的領域勝過其他框架,但所有這些框架在方法上是可比的。下表對每個框架的功能做了比較:

框架功能比較
功能WebSphere PortalJadeStruts額外的評注
在生產中已被驗證 所有這三個框架都已被一些組織成功使用過。
MVC 體系結構 支持 支持 支持  
JSP 標記庫 支持 支持 支持  
國際化支持  
操作處理  
Web 服務  
日志記錄支持  
異常處理  
持久性模型 可以通過一個已發布的 API 使用 WebSphere Portlet 持久性??梢酝ㄟ^另一個包(Topaz)來使對象持久性模型對 Jade 可用。
所提供的代碼 IBM 的客戶可以按成本價取得 Jade 源代碼。
文檔編制 有一些 Struts 文檔編制功能局限于開放源代碼社區和提供支持的用戶。
支持/培訓 IBM 提供有 WebSphere Portal 和 Jade 支持與培訓。
關于框架的最后一點意見

Jade 和 Struts 都為開發人員提供了優秀的功能和益處,而 WebSphere Portal 則提供了一個健壯的框架,它是為開發功能完備的應用程序而提供的。在有些情況下,因為某個具體功能的需要或客戶需要,可能需要在 WebSphere Portal 之上使用一個額外的框架。但請準備在評估這樣一種方法時要充分考慮成本與收益。

當在您的門戶網站應用程序中使用 Jade 或 Struts 對于您的項目來說可能不是合適的方法時,EAD4J 還提供有其他一些框架。例如,Topaz 便有可能被集成到 WebSphere Portal 應用程序中。開發人員也應當對這種可能性加以研究。

回到早先的 portlet 設計

現在您將要完成在第 1 部分開始的 portlet 設計了;這將幫助設計師和開發人員明白如何最大程度地使用 portlet 框架。遵循這個設計,剛剛開始工作的 portlet 開發人員和小組還可以有一個共同的起點,在此起點上,他們可以構建他們自己的 portlet。

審查 UML 設計方法

雖然 UML 需要一些時間來適應,但它卻是一種理解功能片段的設計的直觀方法。系統的可視化建模(visual modeling)提供了以下優點:

  • 具有不同背景的用戶可以理解這個系統如何工作
  • 它顯示了系統的不同部分之間如何交互
  • 它從不同的角度(多個視圖)說明了這個系統,以使一個完整的設計可以被創建

使用可視化建模外加其他工作產品讓開發人員可以創建一個易于理解的、他們可以立刻使用的設計。請別忘了 UML 和 Rational 統一過程(Rational Unified Process(RUP))之間的區別。RUP 是一個使用 UML 的軟件工程過程。但是,您可以與其他過程或方法一起獨立地使用 UML。

理解 doView()

任何 portlet 的核心都是 doView() 方法。這個方法從 abstractportlet 與其他幾種模式類型的方法繼承而來。盡管本文只討論 doView() 方法,但所提供的技術也可應用于其他任意一種 doXXX 方法。下面的活動圖(activity diagram)描述了在 doView() 方法中正在發生的情況。

圖 1. doView() 活動圖
 

在這個實例中,這個方法完成了以下工作:

  1. 確定了要顯示的下一個(目標)JSP
  2. 檢查數據 bean(模型)是否存在,如不存在就創建一個
  3. 執行處理邏輯
  4. 將 bean 存儲在會話中以備 portlet 進一步使用
  5. 調用目標 JSP 以顯示它

下面的下載 ZIP 文件包含了實現這一過程的代碼(doView() 方法)。請參閱這個 ZIP 文件中的 Listing1.txt。

如果您想為某個用戶存儲特定的 portlet 信息(例如,憑證或是私人信息),那么您將以一種相同的方式來實現 doEdit()。

映射操作

設計人員常常被如何確定用戶與 portlet 之間的交互流所困擾。為了得到這個操作到界面的映射需要技術和實踐技能。第 1 部分討論了一個方案的操作處理序列:搜索。第 2 部分詳細討論了在 portlet 中處理所有操作的序列。使用狀態圖表(state chart diagram)(請參見圖 2)可以確定 portlet 的界面(JSP)轉換。圖中的箭頭說明了在用戶交互作用基礎上的頁面轉換流程。

圖 2. 操作處理程序狀態圖表
 

上圖映射到了 portlet 中的七個 JSP。對于這種類型的 portlet 來說這是一個相當簡單的例子。多數 portlet 將需要這個模型在所實現的業務邏輯的基礎上得到擴展。您可以使用這個圖表來直接為 portlet 的操作處理序列編碼(請參閱下面的下載 ZIP 文件中的 Listing2.txt)。

構建模型和實用程序類

繼續這個設計,您可以將所有的業務邏輯和轉換映射放在一個實用程序類中,以供我們的控制器和 JSP 使用。這一方法讓您嚴格遵循 MVC 模式,并限定了放置在我們的 portlet 控制器中的業務邏輯的數目。請參閱下面的下載 ZIP 文件中的 Listing3.txt。

這個類還包含了為功能所需的每個元素處理業務邏輯的方法。請參閱下面的下載 ZIP 文件中的 Listing4.txt。

設計用戶界面

這個設計不提供有關 portlet 的品牌標識(觀感)信息。設計一個合適的 UI 需要非常特殊的技能集,并且正確理解與構建一個有效的用戶界面相關的創造性和實踐性問題,理解這一點很重要。這里和樣本 portlet 中所呈現的界面僅僅是一個說明樣本 portlet 的圖樣而已。

圖 3. 用戶界面
 

您應在過程中早些設計 UI,當您將需求匯集在一起不久以后就應著手。應用程序中所有的 portlet 都應遵循一個相同的 UI 設計。創建一組線框模板在設計和開發過程中起了幫助作用,并能在做調試和系統更改時節省時間。

使用所提供的樣品

下面的下載 ZIP 文件提供了一個基于這里討論的設計方法的 portlet 模板。這個模板是一個有效的 portlet(它沒有業務邏輯)。它使用了 portlet 所有方面的內容,包括日志記錄、操作、異常處理以及 portlet 名稱空間約定。下載包具體包含以下文件:

  • SampleCRUDPortlet:這個 WAR 文件是一個功能完備的 portlet,它提供了如本文所描述的交互和界面。您可以將它作為一個模板來使用,或將其修改作為您的項目模板來使用。
  • Rational 模型樣本:portlet 的樣本模型是以 Rational Rose 格式提供的。您可以通過使用它作為設計模板來迅速創建新的 portlet 模型。
  • 樣本代碼清單:即本文中所討論的樣本代碼清單。使用它們對示例做一個迅速的審查而非審查全部 portlet 代碼。

樣本代碼是如何遵循編碼標準和文檔編制的良好示例。隨著工作量的增大及變得更加復雜,在一個小組環境中遵守標準就變得更加重要。盡管對于簡單的項目來說這可能看起來好像過分了,但是當另一位開發人員需要重新設計或維護這些代碼時,這項工作還是很值得做的。

結束語

 

第 1 部分與第 2 部分所討論的這個設計和相關的模型提供了一個完整的 portlet 設計景像。使用所提供的模板,您會順利地踏上一個完整的門戶網站設計之路。多數應用程序將需要幾種不同類型的 portlet,如遵循視圖-控制器(View-Controller)模式的 XSLT portlet 和遵循其他模式(如虛包模式)的 portlet 服務。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97