Rational Software Architect (RSA)為了輔助用戶開發,提供了很多備忘單(Cheat Sheet)插件。每個備忘單都針對某一特定目的,為用戶提供了一個任務序列,用戶只需要按照這個任務序列自動地或手動地執行每個任務就可以達成該目的。
備忘單可以自動地為您啟動完成某步任務所需要的工具,還可以把如何操作等相關的幫助信息提供給您,避免了您在眾多信息中的查找。我們不但可以在開發過程中利用RSA現有的備忘單來指導開發,還可以為自己的工具創建自己的備忘單來指導用戶進行使用。
本文首先介紹了備忘單的概念、結構和用法,然后通過實例說明了如何基于RSA開發并發布一個備忘單。
1. 引言
RSA基于Eclipse之上為用戶提供了多種擴展功能,用戶無論是想要開發一個Model的項目,還是想要開發一個Web Service的項目,或者想要開發一個Plug-in的項目等等都可以僅僅基于一個RSA平臺,無需切換多個開發平臺。在享受了這樣的優越的開發環境的同時,RSA的功能的復雜性也給開發者帶來了不少麻煩。
如果一個用戶想要在RSA工作環境下創建和注冊一個WebSphere 6.0數據源,他需要:創建新數據源連接、創建必要的服務器、創建數據源以及在web.xml文件中添加對數據源的引用,必要時可能還需要將企業歸檔項目添加到服務器上。剛剛接觸RSA的人,面對分發復雜的界面,可能根本不知道應該何從下手,根本不知道應該在什么樣的視圖環境下進行開發和注冊,到底應該依循什么樣的順序來創建這個數據源,究竟該如何創建數據源被部署的服務器,等等。簡單的幾個步驟可能就將一個初學者拒絕在RSA的大門之外了。
值得慶幸的是,RSA除了對完成這些任務提供了完整的幫助文檔外,還提供了很多類似生活中的備忘錄一樣的Cheat Sheet,用來提示用戶一步一步的完成某個任務。
![]() ![]() |
![]()
|
2. Cheat Sheet簡介
2.1 概念,作用以及原理
簡單的說,Cheat Sheet是一組與任務相關的執行序列,它包括了用戶解決某一特定問題所需要執行的一系列復雜的任務,對這些任務Cheat Sheet或者為用戶自動執行,或者為用戶如何手動的執行這些任務提供指導。
與向導(Wizard)和普通的宏腳本不同,Cheat Sheet是作為插件程序(Plug-in)集成在RSA中的,它的可擴展性更強,客戶可以根據自己的需求定制適合自己產品的插件的擴展。另外,Cheat Sheet不僅為用戶解決特定問題提供了全面詳細的指導,它還有很強的互動性,可以根據用戶的選擇,做出不同的回應(相關的內容將在2.3節Cheat Sheet的使用中介紹)。下圖1給出了引言中所提到的RSA為引導用戶創建和注冊數據源的Cheat Sheet,它詳細的列舉了創建和注冊數據源所需要的所有步驟,并對每一步如何執行或者自動地(例如:自動的切換到開發數據源的最佳視圖-Web開發視圖),或者指導性地(指導用戶如何確定安全性類型)給出了協助,是不是比自己探索的開發更加簡單一目了然呢:
2.2 啟動Cheat Sheet
在RSA菜單上選擇 幫助->備忘單??捎玫膫渫鼏味急涣性?選擇備忘單 列表中,如下圖2所示,Cheat Sheet通常被組織到一些類別(Category)中,每個類別代表了一類特定的問題域(例如,引言中提到的"創建和注冊數據源" 備忘單就被歸類到下圖2所示的'Web'類別中。)。沒有定義類別的Cheat Sheet或者所屬的類別為非法路徑時,該Cheat Sheet會被歸類在"其他"類別中。如圖2所示,Cheat Sheet選擇框所示,左框列舉了當前RSA所支持的所有Cheat Sheet類別,右框顯示了左框中選中的類別中所包含的Cheat Sheet。選擇您需要的,點擊"確認",相應的Cheat Sheet就會被啟動。
2.3 使用Cheat Sheet:
選擇了特定的Cheat Sheet后,它會在如下圖所示的一個Cheat Sheet視圖中顯示(如圖3),當前RSA版本不支持同時打開多個Cheat Sheet,所以您打開現有的Cheat Sheet的同時,前一個Cheat Sheet會被關閉。
每個Cheat Sheet都會有一個它的任務執行列表,用來表示實現特定目的所需要執行的步驟的順序和內容。列表的最開始是對于該Cheat Sheet的簡介,它包括和對于整個Cheat Sheet的功能和作用的簡單介紹,在簡介的結尾處有一個 樣子的圖標,點擊它便可以開始Cheat Sheet的任務執行了。
注:圖3中的簡介結尾現實的圖標是 ,而非
是因為圖標
一旦被點擊后,此Cheat Sheet就會被注釋為已經執行的狀態,而
代表了一個重新開始執行整個Cheat Sheet的含義。
被展開的任務項就是Cheat Sheet要完成任務的真正執行步驟,其中可能包含了關于該步驟地介紹,以及多個表示不同含義的圖標,每個不同的圖標都表示了不同的含義,下表1列出了Cheat Sheet中的所有圖標及其用法:
![]() ![]() |
![]()
|
3 基于RSA開發自己的Cheat Sheet
RSA只為用戶提供了有限的Cheat Sheet,值得慶幸的是,RSA為用戶提供了訂制自己需要的Cheat Sheet的擴展點: org.eclipse.ui.cheatsheets.cheatSheetContent。這里所提到的插件的擴展點基本上是它的組件配置點,使用XML Schema子集描述。一個完成某種抽象功能的插件,比如在工作臺顯示獨立試圖等,將會公布一個擴展點,指定每個實現必須完成什么才能被這個插件使用。這些一般需要包含簡單的屬性,比如窗口標題和圖標路徑,同時也包含實現具體接口的類名稱。在這里的例子中,每個要提供一個視圖實現的插件必須聲明一個插件描述符屬性的ID是org.eclipse.ui.views擴展點的擴展。這個擴展必須指定類實現接口的名為org.eclipse.ui.IViewPart。在運行時,工作臺插件查找插件記錄中所有的org.eclipse.ui.views的擴展并且將它們提供給用戶作為可顯示的視圖。當用戶選擇打開某個視圖時,工作臺插件初始化指定在插件描述符中視圖的實現類,并且通過接口org.eclipse.ui.IViewPart來和它交互。這個機制是Eclipse擴展性的基石。插件給其他的插件提供具體的實現,很多都是實現了自身高度抽象,并且將它們作為擴展點提供給其他的插件來完成。
org.eclipse.ui.cheatsheets.cheatSheetContent就是RSA提供給大家的創建自己Cheat Sheet內容的擴展點,要實現自己的Cheat Sheet首先就要創建擴展了這個擴展點的插件項目;然后,遵循該擴展點的規則來定義自己的擴展內容;經過測試后的插件項目,并不能成為您自己運行平臺的一部分,要想讓它也能和您正在開發程序的平臺一起展現給客戶,接下來您需要把這個插件作為一個發布項目發布給外界,然后將其導入到您的運行平臺。
接下來的章節,讓我們一步一步得通過實例仔細介紹整個開發、測試、發布和導入Cheat Sheet插件的過程。
3.1 實例說明
在接下來的章節中,我們將通過對于實現、測試、發布以及加載一個指導用戶如何創建自己的Cheat Sheet的全過程的介紹,使您了解并掌握Cheat Sheet的整個開發和應用的過程。
實例所創建的Cheat Sheet的目的是為了互動的協助客戶創建自己的Cheat Sheet。它會引導客戶創建一個擴展自cheatSheetContent的插件項目;定制插件的內容;測試插件項目;發布Cheat Sheet;導入Cheat Sheet。
開發這個實例與這個實例所展示給客戶的內容是一樣的,主要包括以下幾步:
1. 創建一個擴展自org.eclipse.ui.cheatsheets.cheatSheetContent的插件項目;
2. 定制插件的內容(在本實例里,就是定制指導用戶如何創建Cheat Sheet插件的內容);
3. 測試該實例;
4. 發布該實例;
5. 將該實例導入到您的Workbench;
3.2 創建新的插件工程
Cheat Sheet是擴展自org.eclipse.ui.cheatsheets.cheatSheetContent的擴展點的插件項目,要想實現這個擴展點,首先需要通過新建工程向導(如下圖4所示)創建一個Cheat Sheet插件工程。
3.3 添加cheatSheetContent擴展點
我們要擴展的擴展點是由org.eclipse.ui.cheatsheets插件提供的,要擴展org.eclipse.ui.cheatsheets.cheatSheetContent,首先要將org.eclipse.ui.cheatsheets插件添加到本插件項目的依賴項中(如圖5),然后擴展其中的cheatSheetContent擴展項(所謂'擴展項'就是由擴展點所定義的遵循一定語義規則的元素,它一般都代表了擴展點所提供的可擴展服務中的某類元素。)。cheatSheetContent擴展點為我們提供了兩種可擴展的擴展項,它們是: Category和CheatSheet。接下來的3個小節,我們會逐一介紹如何添加擴展點以及擴展項。
添加擴展點的具體操作步驟如下,在plug-in視圖中打開新創建插件的plug-in.xml文件:
3.4 定義Category
備忘單可以像日常生活中的文檔一樣,按照不同的類別分類,可以將您要創建的備忘單加入已經存在的類別,也可以自己創建新的類別。如果不為備忘單選擇類別或重新創建新的類別的話,RSA會自動將其歸入一個叫做"其他"的默認類別,下面介紹一下如何為我們自己的備忘單創建一個新的類別。
3.5 定義Cheat Sheet內容
在創建了擴展自cheatSheetContent的擴展點的插件,并定義了我們下面即將定義的插件內容所屬的類別后,我們終于要進入實例開發的關鍵步驟了-Cheat Sheet內容的定義。這里要定義的Cheat Sheet擴展項就是我們最終將要呈現在客戶面前的Cheat Sheet的相關內容和代碼,添加Cheat Sheet擴展項的步驟如下:
添加Cheat Sheet:右鍵選中上一步添加的cheatSheetContent擴展點,根據需要新Cheat sheet。
Cheat Sheet所顯示的每一步的內容提示和操作選項并不是硬編碼到Cheat Sheet的插件程序中,而是寫在一個一個獨立的XML文件中,cheatSheetContent插件通過讀取并解析這些遵循它定義規則的xml文件來顯示展示在Cheat Sheet View中的內容。該文件的位置由一個ContentFile屬性指明,通常情況下它應該在您的插件工程的根目錄下的子目錄中。
xml文件可以存放在任何插件項目可讀的位置,但是,為了維護的方便,建議將其創建在Cheat Sheet Content關聯的XML文件的根目錄中,如下圖所示:
創建Cheat Sheet Content關聯的XML文件
如3.4中添加類別一樣,添加一個Cheat Sheet,并設置Cheat Sheet的屬性值。其中category中填寫Cheat Sheet所屬的類別的id值。contentFile中填寫與該Cheat Sheet關聯的xml文件的相對位置。
編輯Cheat Sheet Content XML文件
Cheat Sheet Content的XML文件主要包括兩類項目:<Intro> 和 <Item>。如下表2所示,<Intro>項用來介紹整個Cheat Sheet的作用,其中<href>鏈接為用戶提供了一個更詳細的介紹的html文件,<description>給出了一個簡短的介紹。
|
<Item>項用來介紹Cheat Sheet中的一步任務的執行方式和描述,如下表3所示, title定義了Cheat Sheet中該任務的名字,Skip的值用來確定該任務是否可以跳過,<action>項用來定義Cheat Sheet為用戶自動完成的動作,當用戶點擊 時,該動作就會被執行。本例中,我們為用戶定義了一個自動打開新建窗口的動作,這個動作的實現將在3.6節中介紹。
3.6 定制Action
Cheat Sheet可以為用戶提供自動完成某些任務的功能,如3.5中我們添加的自動打開新建窗口的動作,這些動作的具體完成需要我們在制作Cheat Sheet時,用代碼實現。
創建Action類:實現這些動作的類都繼承自org.eclipse.jface.action.Action,并實現了ICheatSheetAction的標準接口,如下圖所示。
定義動作:具體需要實現什么樣的動作,由Cheat Sheet人員自行決定,下圖給出了實現打開一個創建窗口的動作的代碼實例。
|
3.7 運行時測試
熟悉PDE(Plug-in Development Environment)的人應該都知道,在當前工作臺開發的plug-in并不能直接被當前平臺使用,運行時平臺(Run Time Workbench)是一個測試PDE的環境,它與您通常使用的開發平臺沒有別的區別,但它加載了您新創建的plug-in,將它作為運行平臺的依賴插件之一。想了解更多關于PDE開發的信息,請參看參考文獻。
實例講解至今,我們已經完成了Cheat Sheet的開發,需要在運行時平臺對它進行調試,以證明它的正確性,具體操作如下:
在'運行時工作臺',打開備忘單被選單。
找到新建的備忘單。
測試備忘單中的所有項目:主要檢查xml文字、格式是否表述正確,以及在上面章節定義的Action是否能夠正確運行。
![]() ![]() |
![]()
|
4 發布Cheat Sheet
大家可能已經注意到了第三章中辛辛苦苦建立的Cheat Sheet并不能在您的開發平臺中直接使用,而需要在運行時平臺中才能被加載,之所以這樣,是因為您剛剛開發的這個插件程序還沒有被正式發布并且載入到當前的開發工作臺。接下來我們就介紹如何將剛剛開發并通過測試的Cheat Sheet插件發布為用戶可用的插件。Cheat Sheet可以作為項目的一部分與項目一起發布,也可以獨立發布,下面繼續以第4部分的實例為例介紹如何獨立發布一個Cheat Sheet插件。關于如何發布'更新站點'的詳細信息,請參看參考文獻。
4.1 為Cheat Sheet創建相關的功能部件項目
要將一個Cheat Sheet發布,首先要為它建立一個功能部件插件項目(Features),這里所謂Feature就代表了是您及將要發布出來的插件所能為工作臺提供的服務能力,更多關于Features的詳細信息,請參看參考文獻,下面介紹發布這個Cheat Sheet插件的具體步驟具體操作如下:
4.2 為Cheat Sheet的功能部件項目創建發布項目
創建一個'更新',在工具欄中選擇'文件->新建->插件開發-> 更新站點項目',如下圖所示:
設置site.xml的Features值,在plug-in視圖下打開新建的update site工程,為site.xml的'要構建的功能部件'屬性添加功能。對于本例,也就是4.1中生成的功能項目天加上:
將新添加的功能拖到"要發布的功能部件"框中,點擊"全部構建"編譯全部文件:
4.3 安裝發布的Cheat Sheet
選擇工具欄中的 幫助->軟件更新->查找并安裝:
定位您剛剛發布的Cheat Sheet 的站點的位置,我們剛剛發布的Cheat Sheet運用的就是本機地址,所以我們來選擇'新建本地站點'。
剩下的步驟都選擇下一步,最后需要重新啟動一下RSA,重新啟動后的RSA中就包含了您新創造的Cheat Sheet了。
![]() ![]() |
![]()
|
5總結
至此,我們的Cheat Sheet開發以及發布之旅也算圓滿成功了,您自己的工作臺中已經有了一個叫做" How To Create A Cheat Sheet"的Cheat Sheet了。它和我們這片課程的內容一致的介紹了您應該如何從創建插件,到定制擴展點內容,然后測試插件,到最后發布并導入插件的全過程。希望您在今后的學習工作中,多多應用。
原文轉自:http://www.anti-gravitydesign.com