標籤:
原文地址:http://www.ibm.com/developerworks/cn/java/j-mylyn1/
Mylyn 2.0,第 1 部分: 整合的任務管理
使用整合的 Eclipse 問題跟蹤功能簡化工作
現在,在 2.0 版中,Mylyn(以前稱為 Mylar)通過將任務無縫整合到 Eclipse 中並在工作時自動管理工作上下文,提高了效率。Mylyn 項目主管 Mik Kersten 更新了他撰寫的分兩部分的 Mylyn 使用指南,以便包括根據 Mylyn 1.0 的大量使用者反饋而作出的改進。第 1 部分介紹 Mylyn 的任務管理功能和它與 Bugzilla、Trac 和 JIRA 等儲存庫的整合。在 第 2 部分,您將瞭解上下文管理如何簡化多任務執行,以及如何減少資訊超載。
雖然軟體系統、架構和工具可以無限制地發展,但開發人員實際處理資訊的能力具有一個上限。大多數整合式開發環境(IDE)嘗試使用結構化視圖、編輯器和進階搜尋功能來解決這個限制。這些機制雖然可以使大型系統的導航變得更容易,但是它們常常不足以協助您管理完成典型編程任務所必須處理的大量資訊。因此,結構化視圖越來越不堪負荷 —— 例如,即使在導航一個小型的公司專屬應用程式程式時,Eclipse Package Explorer 也常常會顯示數千個源檔案 —— 您要浪費大量的時間來滾動、導航和跟蹤這些資訊。
有趣的是,在大多數情況下,不需要查看系統的整個階層或者某個特定方法的每個引用就可以完成編程任務。例如,對於要修複的任何 bug 或者要添加的任何特性,您只對系統的某一部分感興趣。Mylyn 是一種互動技術,通過將 整合的任務管理和 自動上下文管理這兩個功能添加到 Eclipse 中,可以反白您感興趣的系統內容。任務管理將 task/bug/defect/ticket/story/issue 跟蹤器整合到 Eclipse 中,並提供進階的任務編輯和任務調度功能。上下文管理監視您與 Eclipse 的互動,自動識別與當前任務相關的資訊,並聚焦結構化視圖和編輯器,使其只顯示相關資訊。這兩個功能一起組成了 Mylyn 的 Task-Focused(以任務為中心)UI,使多任務處理變得更容易,並且極大減少了資訊超載。(至於實際研究結果,請參閱 參考資料小節中研究論文 “Using Task Context to Improve Programmer Productivity” 的連結。)
這個由兩部分組成的文章是一份 Mylyn 使用指南。本文的某些內容(尤其指關注編程而不是任務管理的內容)假設您熟悉 Eclipse IDE。第 1 部分是 Mylyn 入門,並介紹了它在任務管理方面的功能。第 2 部分介紹 Mylyn 的上下文管理功能,並討論它的 Task-Focused UI 對編程和開發方法的影響。為方便起見,將同時發表這兩部分內容。
第 1 部分並不適用於編程活動,它適用於在任何 Eclipse 發行版或者整合 Mylyn 的獨立應用程式中使用 Mylyn。第 2 部分主要討論 Java™編程,但是也討論了適用於所有基於 Eclipse 的工具的一些特性。在本文的例子中,我使用 Bugzilla 作為任務儲存庫,但是這裡的概念和 UI 同樣適用於 Mylyn 支援的其它任務跟蹤器。即使您打算通過不同的連接器使用 Mylyn,建議您還是看看使用 Bugzilla Connector 的步驟,以便熟悉關鍵特性。
Mylyn 簡介
Mylyn 通過任務跟蹤這樣的複雜機制擴充了 Eclipse SDK(從 參考資料小節查看受支援的版本)。任務(task)是您希望回調或與他人共用的任何工作單元,例如一個使用者報告的 bug,或者關於一個特性改進的說明。Mylyn 使您可以在工作區本機存放區任務,或者處理一個或多個任務儲存庫中的任務。(任務儲存庫指諸如 Bugzilla、Trac 或 JIRA 之類的問題跟蹤器)。要串連到一個特定的任務儲存庫,還必須安裝用於該儲存庫的Mylyn 連接器。
整合任務之後,Mylyn 將監視這些任務上的活動,以識別與當前任務相關的資訊。此時,Mylyn 建立一個 任務上下文—— 與任務相關的所有工件的集合。這可以包括瀏覽過的文檔、編輯過的方法和引用過的 API。Mylyn 使用任務上下文使 UI 聚焦感興趣的資訊、隱藏不感興趣的資訊、自動探索相關的資訊。具備了完成任務所需的資訊,就可以減少執行搜尋、導航和滾動操作的時間,從而提高工作效率。通過突出任務上下文,Mylyn 還有助於多任務處理、計劃、重用過去的工作以及共用專家經驗。
使用 Mylyn 一段時間之後,您的工作方式會發生微妙但是重要的變化。一旦習慣了以任務為中心的工作方式,您很可能會發現工作效率有了極大的提高。您的工作變得井井有條,可以統籌管理數十個協作任務並跟蹤進程,這些事情都變得非常容易。
圖 1 中的編號地區顯示了 Mylyn 的一些任務管理和上下文管理特性:
- 含活動任務的工作清單(Task List)和當天計劃好的 Bugzilla 報告
- 由任務上下文管理的更改集
- 具有離線支援的富任務編輯器
- Eclipse Package Explorer 上以任務為中心的模式
圖 1. Mylyn 的 Task-Focused UI
單擊 這裡查看全圖。
接下來的小節講解 Mylyn 的安裝和配置,並介紹它的關鍵特性。對 Mylyn 任務管理功能有了大致瞭解後,您將更深入地瞭解它對日常工作流程的影響。
回頁首
任務儲存庫連接器
在本文中,我使用 Mylyn 的 Bugzilla Connector 來展示使用任務儲存庫整合的關鍵概念。對於其它受支援的任務儲存庫,這些概念是相同的,只是整合層級和連接器的成熟度等級有所不同。與 Mylyn 捆綁的 Bugzilla 和 Trac 連接器非常成熟,並且被視作參考實現。Mylyn Extensions 頁面(參閱 參考資料小節)列出了用於其它問題跟蹤器和專案管理工具的連接器(例如 CollabNet、Rally、Mantis 和 XPlanner)。
完全整合的連接器提供以下特性:
- 查詢(Queries):查詢是用於將各組任務取回到 Mylyn 的 Task List 中的一種機制。查詢編輯和檢索功能特定於連接器,它們可以提供一個基於 Eclipse 的查詢設計工具,或者從伺服器中的一個帳戶檢索查詢,或者同時提供這兩種功能。
- 富編輯(Rich editing):可以用一個整合的編輯器編輯任務和查詢。該功能提供任務和其它結構化元素的超連結,以及 Eclipse 和案頭整合,例如拖放功能。提供富編輯的連接器仍然可以提供在 Eclipse 的嵌入式瀏覽器中開啟任務和查詢的功能。
- 附件(Attachments):可以將檔案附加到儲存庫中,或者從儲存庫中檢索檔案。該特性允許從作業系統或 Eclipse 工作區附加檔案,並且支援上下文共用等功能(請參閱 第 2 部分)。
- 離線(Offline)支援:可以在中斷連線的情況下工作,直接存取檔案和查詢,而不必等到與伺服器建立串連。該功能還提供更改通知,可以使用 Task List 作為任務收件匣,而不用依賴於電子郵件用戶端。
為了讓您從 Mylyn 獲得完整的整合,並停止對外部或基於 Web 的 UI 的依賴,連接器必須支援這裡列出的所有四個功能。但是,只要 Eclipse 具備 足夠可用於處理任務的功能,則仍然可以從 Mylyn 的 Task-Focused UI 中獲益。如果連接器的任務儲存庫不可用,您仍然可以:
- 使用 Mylyn 對 本地任務的支援。如果不受支援的儲存庫有一個基於 Web 的 UI,那麼可以從瀏覽器中將 URL 拖放到 Mylyn 中,從而建立任務。
- 使用 Generic Web Repository Connector,它為很多基於 Web 的儲存庫提供基本查詢支援:Google Code Hosting (code.google.com)、IssueZilla (java.net、dev2dev、tigris.org)、GForge (objectweb.org)、SourceForge (sf.net)、JIRA、Trac、phpBB 和 vBulletin。請參閱 參考資料小節,瞭解更多資訊。
- 請求任務儲存庫供應商建立一個用於 Mylyn 的連接器。還可以考慮在 Mylyn bug 網頁為您的連接器投票(參閱 參考資料小節)。
- 建立自己的連接器(請參閱 參考資料小節,提供了到 Integrator Reference 的連結)。
回頁首
安裝和設定
Mylyn 現在被包括在大多數 Eclipse 發行版中,所以獲得它的最簡單方法是從 Eclipse Downloads 頁面下載一個包含 Mylyn 的包(見 參考資料小節)。但是,對於更新至新的 Mylyn 版本,或者將 Mylyn 安裝到沒有捆綁 Mylyn 的 Eclipse 版本中,下面的說明仍然會提供協助。
要安裝適合您使用的 Eclipse 版本的 Mylyn,可以使用 Eclipse Update Manager: Help > Software Updates > Find and install > Search for new features to install。 當對 Eclipse 3.2 更新時,最好使用這種機制,而不是 Search for updates,因為後者不會執行正確的依賴性檢查。在 Eclipse 3.3 上,這兩種方法都可行。想要瞭解提供 Update Manager 的最新 Mylyn 更新網站,請參考 Mylyn 的下載頁面(參閱 參考資料小節)。
Mylyn 的一個關鍵設計目標是與 Eclipse 已有的 UI 工具無縫整合。另一個目標是要求使用者只安裝和使用需要的特性。圖 2 顯示了用於選擇要安裝的特性的 UI。例如,如果您的任務是 bug 歸類(triaging)而不是開發,那麼可以安裝 Mylyn 的 Task List,而不必安裝 Task-Focused UI,並且可以獨立地選擇用於問題跟蹤器的連接器。軟體開發人員很可能要同時安裝這兩個特性。
圖 2. 選擇 Mylyn 特性和儲存庫連接器
當從更新網站選擇要安裝的特性時,可以選擇一個或多個要使用的任務儲存庫。注意,正如 Mylyn Downloads 頁面提示的,您可能需要添加額外的更新網站,以獲得所需的連接器。當安裝推薦的 Task-Focused UI 特性時,還應該選擇所有可安裝到當前 Eclipse 版本的橋接器。(關於橋接器的詳細資料,請參閱 第 2 部分)。重新啟動 Eclipse 3.3 或更高版本之後,可以看到圖 3 所示的歡迎畫面。如果當前使用的是 Eclipse 3.2,那麼可以從 Help 菜單手動開啟這個歡迎畫面。
圖 3. 歡迎畫面
回頁首
任務和查詢
Mylyn 提供了使用兩種類型任務的支援:
- 本地任務儲存在 Eclipse 工作區,提供基本的任務管理特性,例如調度。本地任務是私人的,並只對您可見。
- 儲存庫任務儲存在與一個外部應用程式或伺服器對應的一個任務儲存庫中。儲存庫任務常常在多人之間共用,但是仍然提供所有的本地任務功能,例如個人調度和註解。
本節展示如何建立和編輯本地任務,並考察用於使用儲存庫任務的可用特性。這裡談到的特性的可用性取決於連接器的 整合層級,所以只需參考那些適用的特性。無論連接器整合層級是多少,都可以使用 任務管理和個人排程中討論的 Mylyn 的所有任務管理功能。
本地任務初解
安裝 Mylyn 之後,遵循以下步驟:
- 在 Task List 視圖上單擊 New Task工具列按鈕,建立一個新任務。
- 選擇 Local Tasks儲存庫。
- 輸入一個任務概要。
- 單擊 Eclipse 工具列上的 Save或按 Ctrl+S,儲存更新後的描述。
建立本地任務的捷徑是 Insert 鍵,或者也可以從 網頁瀏覽器中將文本或 URL 拖放到 Task List 中。新任務的描述將由相應 Web 頁面的標題自動填滿。(在 Firefox 中,只需常規的拖動動作;而在 Internet Explorer 中,在拖動的同時還需按下 Ctrl 鍵。)在 Task List 中雙擊任務可以開啟任務編輯器( 4 所示),在該編輯器中可以建立註解、粘貼相關超連結或者調度特定日期的任務。預設情況下,新建立的任務是在建立之日調度的。
圖 4. 編輯本地任務
建立了十幾個或者更多的本地任務之後,您可能想通過建立 類別來組織它們。如果建立任務時沒有在 Task List 中選擇類別,那麼該任務被放入到 Uncategorized 容器中。可以使用 Task List 中的 Move to快顯功能表或者任務編輯器或者通過拖放操作將一個建立好的任務轉移到另一個類別中。
要將本地任務標記為已完成,可以使用任務的快顯功能表或者任務編輯器。 預設情況下,被標記為已完成的任務會被過濾掉,但是也可以通過 Task List 的視圖菜單(使用 Task List 視圖工具列右側的倒三角形開啟)選擇不過濾它們。為了避免淩亂,不要顯示那些不顯示任何任務的類別(例如,所包含的任務全部完成的類別)。使用 Task List 頂端的 Find:框訪問被過濾的任務。最後,可以通過任務編輯器為本地任務設定優先權和計劃資訊。任務管理和個人排程小節將更深入地討論計劃。
為了熟悉 Mylyn 的表徵圖模式,可以使用 Task List 視圖菜單中的 Show UI Legend動作(見圖 5)。 我將在整個文章中引用該表徵圖模式。
圖 5. Mylyn UI 圖例新增工作儲存庫
不同任務儲存庫在功能和任務管理的指代方面可能有較大差別。Mylyn 的任務管理功能提供了一種統一的方式使用多種儲存庫,包括:
- 本地任務:用於使用儲存在 Eclipse 工作區的簡單任務的一種特殊的儲存庫。
- 共用任務:如果您的團隊使用共用任務儲存庫,例如 Bugzilla 伺服器,那麼可以使用這種儲存庫來與其他人協作完成任務。
- 專案管理任務:有些連接器,例如 XPlanner,提供用於將工作群組織到項目階段和使用者事件中的任務管理功能。
- bug 和增強報告:這是一種特殊的任務,通常在產品使用者與支援小組之間共用。Mylyn 提供整合的 bug 報告,以協助跟蹤與其它任務一起歸檔的 bug 報告。
要建立一個任務儲存庫,可以開啟 Task Repositories 視圖(Window > Show View > Mylyn > Task Repositories),或者使用一個包含它的透視圖,例如 Team Synchronizing 透視圖。開啟後,使用視圖的工具列添加一個新的儲存庫。然後,可以輸入儲存庫憑證和任何其它串連細節,或者從可用模板中選擇一個模板。圖 6 中的 bugs.eclipse.org 儲存庫是在安裝 Mylyn 時自動建立的,這是為了便於報告 Mylyn 和 Eclipse 的 bug 和特性請求。
圖 6. 添加 Eclipse.org Bugzilla 儲存庫查詢儲存庫
成功地添加了任務儲存庫之後,就可以通過 Task List 的快顯功能表中的 New Query動作建立查詢來訪問那個儲存庫上的任務。例如,可以編寫一個查詢來訪問指定到我的電子郵箱地址的所有 Bugzilla 報告, 7 所示:
圖 7. 建立新的 Bugzilla 查詢
設定參數並單擊 Finish之後,Task List 中的查詢容器被相應的任務填充。在查詢執行同步時,Mylyn 在後台檢索任務的資訊。下載完任務資訊之後,可以立即開啟任務,因為不需要往返伺服器來檢索任務的資訊。要更改查詢的參數,可以重新開啟它(通過在 Task List 中雙擊查詢)並編輯所選擇的值。雖然對於不同的連接器查詢參數的設定不盡相同,但是查詢參數設定都是用於反映連接器的 Web UI 所提供的功能。有關建立查詢的詳細資料,請參閱連接器文檔或伺服器 Web UI 文檔。
預設情況下,查詢每隔 20 分鐘自動進行同步,並顯示與查詢參數匹配的新任務。(可以通過 Preferences > Mylyn > Task List更改這個時間。)當與 Web 中斷連線時,不需要使 Mylyn 處於離線模式。但是,如果想關閉同步 —— 例如,假設您要長時間離線工作,或者直接根據所使用的頻寬付費 —— 那麼可以這麼做,方法是在 Task List 視圖菜單中切換 Synchronize Automatically設定。然後,可以通過工具列上的按鈕手動地同步所有任務和查詢,或者通過快顯功能表或快速鍵 F5 單獨同步每個任務或查詢。必要時,可以從快顯功能表中將一個任務儲存庫置於離線模式。當儲存庫不可用,需要長時間離線工作時,這樣做很有用。
對於可以通過 網頁瀏覽器訪問的連接器,Mylyn 整合了使用者已熟知的 Web UI,如果 Mylyn 的富編輯功能不支援某些操作,您可能需要依賴於這個 Web UI。可以按右鍵任何任務或查詢,以便用 網頁瀏覽器開啟它(Eclipse 瀏覽器設定位於 Window > Preferences > General > Web Browser中),具有關聯 URL 的所有儲存庫任務都可以通過 Task Editor 的工具列或者任務的快顯功能表上的 Open with Browser 動作開啟。還可以用瀏覽器開啟 Bugzilla 查詢(例如,假設您想將它粘帖到一封電子郵件中,以便使用 Bugzilla Web UI 對它進行改進)。然後,可以按照 New Query 嚮導的提示粘帖它,從而使用更新後的 URL 在 Task List 中建立一個新的查詢。
搜尋任務
搜尋任務類似於建立查詢,但是它不將結果儲存在 Task List 中。使用 Ctrl+H 或 Search 菜單(Search > Task Search),選擇感興趣的儲存庫,輸入搜尋條件,然後單擊 Search。搜尋視圖隨之開啟,在該視圖中可以開啟與搜尋匹配的任務, 8 所示。要改進搜尋,只需再次開啟 Search 對話方塊,以恢複之前的搜尋條件。可以在 Search 視圖中將搜尋結果從快顯功能表轉移到一個查詢中。
圖 8. 任務搜尋和結果建立儲存庫任務
要建立新的儲存庫任務,可以在 Task List 工具列或 File > New菜單中選擇相應的動作,如果有多個儲存庫,那麼要選擇一個儲存庫。然後,連接器會要求輸入任務的其它屬性,例如它的 Bugzilla 組件。然後會開啟一個新的編輯器,在其中可以填入任務的屬性和描述。有些屬性會自動選好,例如,如果使用 Bugzilla 連接器,則會自動選擇作業系統。
您可能要建立的另一種任務是有關 Mylyn 或使用的另一個基於 Eclipse 的工具的 bug 報告。通過自動添加 bugs.eclipse.org 儲存庫,以及添加可以從 Eclipse 的 Error Log 視圖和 Help 菜單中訪問的用於自動報告 bug 的動作,製作 bug 報告很容易。如果要查看想要進行報告的錯誤事件,只需按右鍵它,選擇 Report as Bug。然後會開啟 New Repository Task 編輯器,其中包括所有相關資訊,例如棧跟蹤。
由於這種通過一次單擊產生 bug 報告的方式可能導致大量重複的 bug 歸檔檔案,因此 Mylyn 還提供自動的重複資料偵測。Search for Duplicates按鈕使用報告的 Description 中的自動插入式或手動粘帖式棧跟蹤來查詢相應的儲存庫,以發現潛在的重複內容。重複資料偵測的結果顯示在 Search 視圖中, 9 所示。如果發現匹配,可以開啟它,作出注釋,而不是建立新的 bug 報告。
圖 9. 整合的 bug 報告和重複資料偵測編輯和同步
在開啟一個 Bugzilla 任務時,您將注意到在編輯器上有一個 Bugzilla 和一個 Planning 選項卡。儲存庫連接器提供一個富編輯器,例如這個 Bugzilla 選項卡,用於編輯在儲存庫上共用的任務資訊。而且,Planning 選項卡提供使用本地任務建立個人註解的相同功能。
當查看 bug 上的注釋時,可以使用 Outline 視圖在注釋之間導航,但是未讀注釋的自動摺疊意味著可以在 Task Editor 中進行大多數導航操作。對其它任務和其它結構化元素(例如 Java 棧跟蹤元素)的引用被設定為超連結(參見圖 10 和 圖 1)。超連結的文法特定於連接器。通常,在任務編輯器左上方出現的引用可用於對 bug 進行超連結。連接器的 Web UI 支援的其它文法也受支援。始終支援 task <key>文法。
圖 10. 儲存庫任務編輯器和內容輔助
如果連接器支援離線編輯,則 Mylyn 維護開啟的任何任務的一個快取複本,並且每當相應的查詢或任務進行同步時,對這個副本進行更新。如果作出任何更改,例如設定一個屬性或者編製部分注釋,那麼可以通過按下 Ctrl+S 在本地儲存更改。這將導致任務上出現一個 outgoing指示符。當準備好提交任務時,單擊編輯器底端的 Submit。
如果一個任務之前已經被開啟,那麼再次開啟它時將檢索離線副本,並開始在後台對任務執行同步。這樣可以確保不需要等待往返伺服器就可以開始讀取和處理任務。如果發現新的更改,或者當編輯器開啟時他人更改了任務,那麼編輯器的標題列會顯示出來,並提示重新整理編輯器。
如果有其他人更改了儲存庫中的任務,例如添加一條新的注釋,那麼在螢幕的右下角會彈出一個視窗顯示更改,而任務則使用 進入式箭頭標記顯示。如果開啟任務,則被更改的部分會高亮顯示,被添加的新的注釋自動延伸。如果本機複本和伺服器上的副本都被更改,那麼可以看到一個紅色的衝突指示符,並提示解決衝突。如果看到衝突,那麼應該單擊任務編輯器的 Synchronize按鈕,並且提交您的更改,或者通過快顯功能表的 Mark > Clear Outgoing放棄您的更改,以確保任務被同步。
附件
可以用任務編輯器的 Attachments 區的 Add...按鈕將附件添加到儲存庫中。還可以從工作區或視窗管理器將檔案或文本直接拖到編輯器的 Attachments 區。添加附件時會出現一個嚮導,通過該嚮導可以選擇根據剪下板內容、電腦中的一個檔案還是從 Eclipse 工作區中建立附件。通過 Attachments 表,可以用 網頁瀏覽器或編輯器開啟附件,並通過操作功能表執行特定的動作,例如儲存或複製到剪下板。
回頁首
任務管理和個人排程
現在,我將討論如何使 Mylyn 成為您的一個單獨的工作清單和收件匣,以管理工作周內所有相關的任務。對於很多開發人員,要在一個給定的工作周內跟蹤和調度的任務的範圍包括:
- 為您正在開發的產品解決產品缺陷並分析特性
- 由您的同事完成的任務,這些同事包括您的搭檔、上司或屬下
- 針對您所使用的架構、API 和軟體的 bug 報告
- 個人待辦事項和提醒
將所有任務整合到一個視圖中,可以使它們更易於管理,因為只需查看一個位置就知道接下來該做什麼。為了進一步簡化任務管理,Mylyn 隱式包含了一些公認的任務管理最佳實務,例如調度和延遲任務,並且還包括了 XP 式開發的即時性和適應性。Mylyn 的任務管理工具使您可以輕鬆地適應一周內的任務變化需求,而不會丟失對長期優先順序的跟蹤。除了將工作周的控制權交到您手上之外,Mylyn 通過簡化使用共用的儲存庫屬性(例如裡程碑和優先順序),在 Eclipse 中執行所有操作,從而協助您更好地整合式團隊實踐。
預定日期與到期日
Mylyn 提供兩種用於調度的日期:預定日期(scheduled date)和 到期日(due date)。(您可能已經注意到,任務編輯器中顯示了這兩種日期)。預定日期可以協助管理和優先排列自己的工作周,而到期日則對應於期限之類的固定事件。
任務的預定日期是根據個人排程的可變日期,可以根據優先順序的變化而延遲。它定義您計劃開始處理任務的時間。當任務到達預定日期時,任務變成紅色,以指示您應該開始處理它或者考慮延遲它的起始日期。定在今天執行的任務會變成藍色而不是紅色,並且在工作日的最後進行安排,避免重新安排整個工作日的任務。
相反,任務的到期日是固定的日期:任務必須完成的日期。這個日期常常與外部的約束(例如期限)相關。如果使用共用的任務儲存庫或者日曆工具,到期日會進行同步,以便使團隊的其它成員可見。例如,如果 Bugzilla 的時間跟蹤功能被啟用,那麼可以通過任務編輯器的 Attributes 區中的 Time Tracking 區設定 Bugzilla 任務的到期日,團隊中的其他成員可以看到這個日期,還可以編輯它。到期日的臨近是通過任務表徵圖上的一個小鐘指示的,這個小鐘在到期日之前為藍色,在到期日之後為紅色。
聚焦工作周任務
由於 Mylyn 使得建立和共用任務變得如此容易,似乎您一旦開始使用它,Task List 中很快就會裝滿數十個甚至數千個任務。對於 Mylyn 的早期使用者,包括我在內,確實會發生這樣的事情。也許是因為我是第一批使用者,目前我的 Task List 包含超過 5,000 個任務,其中有超過 1,000 個任務尚未完成。乍一看來,這似乎與 Mylyn 減少而不是增加資訊超載的目標有衝突。為瞭解決這個問題,Mylyn 提供了改進的功能來調度和延遲任務,使用這些資訊讓 Task List 只顯示與您的工作周有關的任務。新建立的任務定在建立日調度,並且可以通過任務編輯器的 Planning 區或操作功能表快速地將任務延遲到靠後的一個時間或日期。
當任務到達預定日期之後,任務和它的容器(例如一個查詢)變成紅色,案頭上顯示一個快顯視窗作為提醒。(和其它 Mylyn 顏色和字型設定一樣,可以用 Window > Preferences > General > Appearance > Colors and Fonts將任務設定為高亮顯示)。當任務被延遲到將來的日期執行時,Window > Mylyn > Tasks > Scheduling中設定的工作日起始時間決定任務被調度的時間。通過更改工作日的結束時間,可以確定被定為那天調度的任務在什麼時間到期。
Mylyn 任務管理模型的關鍵是基於興趣的分類和過濾,您可以通過 Task List 工具列上的 Focus on Workweek 動作啟用該功能。聚焦模式導致只有與工作周相關的任務才可以顯示。這包括以下任務:
- 預定在本周執行或者超過預定日期的任務
- 有新的更改和注釋的儲存庫任務
11 所示,任務被著色和分類,以協助您快速確定下一步任務:
- 逾期任務為紅色,總是顯示在列表的頂部。
- 調度為在今天執行的任務以藍色反白。
- 調度為在本周靠後時間執行的任務為黑色。
- 今天完成的任務為綠色。
- 之前完成的任務為灰色。
圖 11. 調度任務每天執行預定的任務
通過輕鬆地調度和延遲任務,並將視圖限制為顯示給定工作周內預定的任務,Mylyn 協助您全盤考慮優先順序。為了突出工作日,Mylyn 用藍色高亮顯示所有在當天調度的任務。由於在聚焦模式下工作時不大可能看到捲軸,因而 Task List 保持展開,所以您總是知道應該考慮對什麼作出響應或者下一步執行什麼。
考慮使用 Mylyn 的聚焦功能管理工作周的樣本流程:
- 在工作周的開始,工作清單包含很多紅色的任務,這些任務是之前定在本周執行或者延遲到本周執行的。
- 紅色不是令人愉快的顏色,所以您使用操作功能表將每個任務安排在今天或本周靠後某一天執行。當所有紅色都消失之後(定在今天執行的任務變成了藍色,定在本周靠後時間執行的任務變成黑色),您可以查看這周的排程,確認它符合實際,必要時延遲或委託他人執行任務。
- 當 Task List 被啟用時,可以將滑鼠移至上方在 Task List 頂端附近的綠色進度條上( 11 所示),以檢查是否為工作周安排了太多的任務。如果有些任務要比其它任務花費更長的時間,那麼可以開啟任務的 Planning 區,調整預計時間,這樣可以相應地調整工作周進度條。
- 在工作日的最後,所有已經完成的任務變成了令人愉快的綠色。然後,您可以檢查剩下的藍色或紅色的任務,將它們延遲到明天或更靠後的日期。
- 在第二天的開始,安排在這一天的所有任務都為藍色,而所有逾期的任務為紅色。在安排工作日時,您會將某些任務延遲到本周靠後的日期,因此可見的藍色任務表示您可以當天完成的所有任務。任務完成後變為綠色。
- 在工作周結束時,捲軸應該會消失,列表上的大多數任務應該都變成綠色。
由於任務調度是任務管理最重要的部分,Mylyn 在 Task List 中提供了 Scheduled表示,它根據到期日而不是類別和查詢來組織任務。在聚焦模式下,這種表示會顯示這一周每天必須完成的所有任務。這對於平衡整周的工作負載很有用。它的另一個優點是當您使用共用任務時可以避免分心,因為不會顯示有新注釋但是未調度的任務。要檢查新到來的任務,需要切換回 Categorized表示,重新確定優先次序,然後再重新審視時間表。當不在聚焦模式下,可以使用 scheduled 表示來平衡未來工作周的任務負載 —— 例如,通過將滑鼠移至上方在 Next Week 容器上檢查有多少任務被延遲。
建立工作集
到目前為止,本文描述的所有功能都是將 Task List 當作一個統一的相關任務的集合,您可以靈活地調度這些任務。此外,可以用查詢來組織任務,還可以進一步嵌套子任務,前提是儲存庫連接器提供這種支援(例如 Bugzilla 連接器就提供這種支援;可以從 Task List 的視圖菜單中啟用該選項)。但是,由於 Mylyn 2.0 對 工作集(working sets)的支援,還可以對由完全不相關的工作群組成的集合進行處理。假設您在開發一個產品和兩個不同的開源項目。您可能想把工作日的大多數時間花在最重要的產品上,但是還想跟進其它項目。Mylyn 的工作集使您可以組織與一個特定產品或項目相關的查詢和類別,並提供限定在 Eclipse 工作區中顯示的檔案和其它資源的數量的功能。
使用 Task List 頂端的切換條,建立包括相關查詢、類別和工作區資源的工作集(參見圖 12)。只要 Eclipse 視圖被設定為顯示 Window Working Set(預設設定),切換 Mylyn 工作集可導致 Task List 和 Eclipse 都只顯示屬於工作集的任務和項目。例如,如果為一個開源項目設定了一個工作集,並用下拉式清單啟用該功能,那麼 Eclipse Task List、Package Explorer 和 Problems 視圖都只顯示與那個項目相關的內容。Task List Find 只顯示工作集中的匹配項。甚至可以通過 Search (Ctrl+H) 只尋找工作集中的內容,如果工作區較大的話,這樣做很有用。換句話說,整個 Eclipse 只顯示與您建立的工作集相關的東西。工作集可以減少工作區的淩亂,並且可以避免使用多個工作區。在 第 2 部分中,您將看到 Mylyn 如何進一步利用這種聚焦思想,將 Eclipse 中的可見內容縮小到單個任務。
圖 12. 編輯和切換工作集過濾、分類和搜尋
除了一些自動化功能外,Mylyn 還提供手動分類和過濾功能:
- 通過視圖菜單中的 Sort by項,根據 Priority 之類的屬性分類。
- 使用視圖菜單中的 Filter Priority Lower Than項,根據優先順序進行過濾。
- 通過視圖菜單過濾所有 Archive 類別和完成的任務(建議啟用該功能,在聚焦模式下會自動啟用)。
- 通過單擊 Go Into過濾特定類別或查詢中的任務(在聚焦模式下同樣適用)。
- 通過拖放操作手動分類;將儲存庫任務分類到各類別中。
圖 13 顯示了可用的手動 Task List 過濾器:
圖 13. 手動 Task List 過濾器
手動搜尋和過濾會增加重複切換不同過濾器和分類器的負擔。對於預設模式下的操作不建議使用,但是它們對於計劃和組織任務的確有用。注意,當 Focus on Workweek 活動時,手動過濾和分類設定被禁用;可以通過關閉聚焦模式來恢複它們。
當組織 Task List 時,可以通過 Move to Category操作功能表或者選擇操作功能表中的 Remove from Category移動任何任務。除非通過操作功能表顯式地刪除任務,否則即使任務已經從查詢中消失或者從類別中刪除,仍然會顯示在 Task List 中。被刪除的任務可以在 Archive 容器中找到。可以通過 Task List 頂端的 Find 框方便地搜尋 Archive 或其它地方的舊任務。單擊它右邊的 Clear按鈕或按下 Esc 鍵可以恢複之前可見的任務。Archive 容器對於查看之前已解決且被注釋的任務也很有用,因為建立查詢的一種通用方法是排除已解決任務(但是請參閱 查詢設定建議,瞭解有關這一做法的注意事項)。
備份和匯出
聚焦模式使用得越頻繁,您的 Task List 就變得越有價值。預設情況下,Task List 的自動備份已被啟用,可以通過 Window > Preferences > Mylyn > Tasks設定備份目錄。 要從備份恢複 Task List,可以選擇相應的選項按鈕,並選擇一個備份快照。預設情況下,Mylyn 每天為所有任務資料製作快照,並保留 30 天的備份(通過 Preferences > Tasks配置)。可以通過單擊 File > Export匯出任務。
回頁首
第 1 部分結束語
在這個 Mylyn 使用指南的前半部分中,我介紹了 Mylyn 的任務管理功能。我向您展示了這些功能如何支援個人化的任務管理,以及它們如何將 Bugzilla 之類的基於 Web 的問題跟蹤器完全整合到 Eclipse 中。我還對 Mylyn 管理的典型的工作周或工作日作了概述,並展示如何管理 Task List。
無論您感興趣的任務儲存庫有多少,Task List 視圖只提供一個單獨的位置來從中管理所有工作。這使您可以將工作日中的更多時間花在高效的 Eclipse 中,而不必頻繁切換到外部的瀏覽器視窗。這還意味著您可以獲得基於 Web 的問題跟蹤器的富客戶機體驗,例如拖放附件和離線支援。
使用 Mylyn 的最精彩部分即將出現。一旦任務顯式呈現為工作的組成部分,Mylyn 就開始自動管理它們的上下文。本文的第 2 部分介紹 Mylyn 的上下文管理功能,並展示這些功能如何減少資訊超載,以及如何使多任務處理簡單到只需一次單擊即可完成。現在就請閱讀 第 2 部分。
參考資料學習
- 您可以參閱本文在 developerWorks 全球網站上的 英文原文。
- “Mylyn 2.0, Part 2: Automated context management”(Mik Kersten,developerWorks,2007 年 8 月):瞭解 Mylyn 的上下文管理功能如何減少資訊超載和簡化協作。
- "Using Task Context to Improve Programmer Productivity" (Mik Kersten 和 Gail C. Murphy,FSE 2006):這篇論文描述了 Mylyn 的上下文模型,並給出了證實顯式的任務上下文可以使程式員更高效的實際研究結果。
- Mylyn FAQ和 User Guide:Mylyn 的使用者文檔。
- Mylyn 首頁:Mylyn 使用者和開發人員的參考資料和支援。
- Mylyn Integrator Reference:如果想建立自己的連接器,那麼從這裡開始。
- Eclipse 新手入門: 瞭解 Eclipse 平台和 Eclipse 進行中的項目,包括 Mylyn。
- Mik‘s Blog:訪問作者的網上部落格。
- Java 技術專區:這裡有數百篇關於 Java 編程方方面面的文章。
獲得產品和技術
- Mylyn Extensions:下載沒有綁定到 Mylyn 中的連接器。
- Generic Web Repository Connector:解析 HTML 的精簡版的連接器,為沒有富連接器的任務存放庫提供基本查詢整合。
- Mylyn 下載:更新網站和受支援的 Eclipse 版本和儲存庫的列表。
- Eclipse 下載:Eclipse 3.2 和其它下載。
討論
- Mylyn bugs and votes:提交 Mylar 的 bug 報告及功能需求。在這裡為 Mylar 連接器和橋接器投票。
- Eclipse Plug-in Central: 使用評論表單評價 Mylyn。
- developerWorks blogs:加入 developerWorks 社區。
Eclipse外掛程式Mylyn管理上下文任務管理