首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Team System:為 Word 增益集加入工作項目關聯與復原功能

     編輯:關於.NET

承接先前專欄,我們已打造可與 TFS 版本控制互動的 Word 2003 增益集。本期將補齊兩項關鍵功能:工作項目關聯 與 復原掛起變更,使簽入體驗更臻完整。

升級至 VSTO 2005 SE RTM 版

初版使用 VSTO 2005 SE Beta,現只需在安裝 RTM 版的電腦上重新編譯即可升級。確認無誤後,著手加入復原支援。

實作復原掛起變更

於 tfsvcUtil 類別新增共用方法 UndoPendingChanges(docPath As String) As Boolean,邏輯與 CheckInDocument 相似:驗證伺服器連線、取得工作區、呼叫 Workspace.GetPendingChanges(docPath) 取得陣列,若長度 > 0 則呼叫 Workspace.Undo(pendingChanges),回傳值應為 1 代表成功。

Public Shared Function UndoPendingChanges(ByVal docPath As String) As Boolean
    If serverValidated Then
        If m_userWorkspace Is Nothing Then
            Dim userWorkstation As Workstation = Workstation.Current
            Dim docWSInfo As WorkspaceInfo = userWorkstation.GetLocalWorkspaceInfo(docPath)
            m_userWorkspace = m_tfsVCS.GetWorkspace(docWSInfo)
        End If
        Dim pc As PendingChange() = m_userWorkspace.GetPendingChanges(docPath)
        If pc IsNot Nothing AndAlso pc.Length > 0 Then
            Dim retval As Integer = m_userWorkspace.Undo(pc)
            If retval = 1 Then Return True
            Throw New tfsUtilException(String.Format(MSG_UNDO_NOT_ZERO, docPath, retval))
        Else
            Return False
        End If
    Else
        Throw New tfsUtilException(MSG_SERVER_NOT_VALIDATED)
    End If
End Function

ThisAddIn 類別同步新增工具列按鈕、點擊處理器與狀態同步邏輯,啟用狀態鎖定「簽入」按鈕一致。

加入工作項目關聯支援

需三步走:

  1. 修改 tfsvcUtil 連線工作項目存放區 (WorkItemStore)。
  2. 擴充 CheckInDocument 接受 WorkItemCheckinInfo() 參數並傳遞給 Workspace.CheckIn 多載。
  3. 改造 frmCheckIn 對話框,加入工作項目查詢下拉清單與資料網格,供使用者勾選關聯項目。

連線工作項目存放區

加入 Microsoft.TeamFoundation.WorkItemTracking.Client.dll 參考 (位於 %Program Files%\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\),新增共用方法 ConnectWIS() 延遲初始化 WorkItemStore 並快取於 m_tfsWIS。

Public Shared Sub ConnectWIS()
    If Not m_tfs Is Nothing Then
        If tfsvcUtil.m_tfsWIS Is Nothing Then
            tfsvcUtil.m_tfsWIS = CType(m_tfs.GetService(GetType(WorkItemStore)), WorkItemStore)
        End If
    Else
        Throw New tfsUtilException(MSG_SERVER_NOT_VALIDATED)
    End If
End Sub

查詢與執行工作項目

提供 GetStoredQueries(docPath) 取得 StoredQueryCollection,與 RunWIQ(docPath, WIQ) 執行查詢回傳 WorkItemCollection,並處理 @Project、@Me 等巨集參數。

重設計簽入對話框

  • 擴大表單至 640×480,新增「註解」與「工作項目」兩個面板並以 RadioButton 切換。
  • 工作項目面板包含查詢下拉框 (cboStoredQueries) 與 DataGridView (dgvWorkItems),欄位含核取方塊、類型、ID、標題、狀態、簽入動作 (Associate/Resolve)。
  • 點擊「工作項目」時動態載入查詢、預設執行「My Work Items」並繫結網格。
  • CellFormatting 事件將 WorkItemType 顯示為 Name;CurrentCellDirtyStateChanged 依工作項目狀態動態切換簽入動作下拉清單內容。
  • FormClosing 事件彙總勾選項目建立 WorkItemCheckinInfo() 陣列供呼叫端取用。
圖 1 修改後的簽入對話框
圖 1 修改後的簽入對話框
圖 2 完成的簽入體驗
圖 2 完成的簽入體驗

至此增益集已支援:新增文件至版控、簽出/簽入、關聯工作項目、復原掛起變更。下一期將加入簽入備註與策略支援。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved