根據狀態、轉換或原因自動化欄位指派
您可能需要依據發生在 Visual Studio Application Lifecycle Management (ALM) 其他地方的事件或依據發生在 Visual Studio ALM 外部的事件,自動將工作項目從某個狀態轉換為另一個狀態。 例如,您可能需要依據發生在電話追蹤工具的事件,自動將 Bug 從某個狀態轉換為另一個狀態。 工作項目類型模型以及「工作項目追蹤」API 皆可擴充,以支援其他系統執行工作項目自動轉換。
如果您的程式碼會變更工作項目狀態,您就可以透過 ACTION 項目將動作與適當的狀態轉換相關聯,藉此一般化該程式碼。 您可以將動作值傳遞給 [WorkItem.GetNextState] 方法,取得該工作項目的動作後狀態。 [版本控制簽入] 對話方塊會使用這個方法解決 Bug,並且關閉與簽入相關聯的工作。
ACTION 是 ACTIONS 的選擇性子項目。
注意事項 |
---|
工作項目追蹤 API 是 Visual Studio ALM SDK 的一部分,如 Microsoft 網站的下列網頁所述:擴充 Team Foundation (英文)。 |
例如,有一項工具預設會在使用者簽入變更之後,自動將工作項目轉換至「已解決」。 不過,身為系統整合供應商,您並不知道工作項目類型的作者是將什麼狀態宣告為「已解決」, 作者的意思可能是「已解決」、「已關閉」、「已完成」、「可供測試」、「包含在組建中」等等。 此時有一個方法,就是要求所有工作項目類型的作者加入一個明確稱為「已解決」的狀態。
該解決方式的限制過多。 而且也因為無法讓人將狀態當地語系化,而顯得缺乏國際視野。 反之,系統整合者可以宣告像是「簽入」或「完成」這樣的動作,以誘發工作項目的自動轉換, 然後工作項目類型的作者就可以在適當的轉換作業宣告這項動作。
本主題內容
ACTION 項目的語法
支援自動化的必要步驟
使狀態轉換與動作產生關聯
轉換動作詳細資料
自動轉換錯誤檢查
ACTION 項目的語法
下列語法是用於 ACTION 項目。 值屬性指定動作名稱,而且是必要項。 動作名稱的命名慣例應與欄位參考名稱相同。 例如,Team Foundation 版本控制使用 Microsoft.VSTS.Actions.CheckIn 識別與簽入相關聯之工作項目的適當轉換。 如需詳細資訊,請參閱工作項目追蹤物件的命名慣例。
<ACTION value="NameOfAction" />
minOccurs="0"
maxOccurs="unbounded"
支援自動化的必要步驟
若要整合某項工具與「工作項目追蹤」,此工具必須執行下列步驟:
判斷當動作執行時工作項目應該要轉換為什麼狀態
將工作項目轉換為指定狀態
「工作項目追蹤 API」提供了執行這些步驟的方法。 工作項目追蹤 API 屬於 Visual Studio ALM SDK。 如需詳細資訊,請參閱下列 Microsoft 網站的網頁:Team Foundation Server SDK (英文)。
注意事項 引發某特定狀態轉換的異動動作並沒有記錄,如果您必須追蹤引發轉換的動作,可以指定額外的工作項目欄位來進行追蹤,或是定義 [原因] 值。
回到頁首
使狀態轉換與動作產生關聯
您可以使用狀態轉換動作在工作流程的幾個不同點自動進行工作項目的轉換。 例如,Team Foundation Server 版本控制系統就必須在簽入階段支援工作項目的自動轉換。 為了支援自動轉換,我們已經定義了 "microsoft.vsts.actions.checkin" 動作。
工作項目類型的作者可以定義「缺失」這個工作項目類型,它具有稱為 Working (正在執行) 的狀態,並在開發人員進行變更時使用這個工作項目。 工作項目類型的作者可以定義另一個稱為 Ready To Build (可供建置) 的狀態,這表示開發人員宣告了受到缺失影響的程式碼已經可供夜間建置。
作者可以經由宣告下列程式碼,讓工作項目在簽入作業期間自動從 Working 狀態轉換成 Ready To Build 狀態:
<TRANSITION from="Working" to="Ready To Build">
<ACTIONS>
<ACTION value="microsoft.vsts.actions.checkin"/>
</ACTIONS>
</TRANSITION>
回到頁首
轉換動作詳細資料
請使用狀態轉換動作在工作流程的幾個不同點自動進行工作項目的轉換。 您可以參考下列有關轉換動作用法的詳細資料:
轉換動作是選擇性的項目。 如果工作項目執行個體的目前狀態具有指定動作的動作項目,它會傳回 "to" 狀態。 如果沒有,傳回值就是 Null。 整合作業應該可以順利處理 Null 傳回值。 也就是:
不會失敗
會留下蹤跡或記錄,指出整合作業沒有自動轉換,因為找不到它所需要的動作
針對每一個工作項目類型,「從狀態/動作」配對的動作必須是唯一的, 這表示工作項目類型的作者不能同一個動作指定多個 "to" 狀態
不過,支援同一個轉換可由多個動作引發,以允許進行多個自動轉換的整合作業,如下列範例所示:
<TRANSITION from="Working" to="Ready To Build"> <ACTIONS> <ACTION value="Microsoft.VSTS.Actions.Checkin"/> <ACTION value="ADatum.Actions.Complete"/> </ACTIONS> </TRANSITION>
動作名稱是程式設計名稱,因此您只能使用英文字元
動作名稱應該遵循和欄位參考名稱相同的參考命名空間慣例,以避免廠商和客戶之間發生動作名稱衝突。 不過,此工具並沒有強制施行這個慣例, Visual Studio ALM 會使用 Microsoft.VSTS.Actions.<your action>。
回到頁首
自動轉換錯誤檢查
整合者可以嘗試使用兩種類型的自動轉換, 第一種是因為使用者動作而引發的自動轉換, 第二種則是由自主式 Automation 所引發的自動轉換,例如夜間建置。
使用者動作所引發的自動轉換 如果是這種自動轉換,使用者就必須在現場回應所發生的任何有關規則的問題。 當某個工作項目類型的作者加入了整合作業無法辨識的必要欄位時,您必須確認能夠支援這種情況。 若要支援這種情況,請執行自動轉換,然後檢查工作項目類型是否有違反規則, 如果有發現任何違規的工作項目類型,請顯示表單,以便讓使用者解決這個問題。
自主式 Automation 所引發的自動轉換 您必須假設使用者不會在現場解決這些問題。 在這種情況下,整合作業應該無聲地宣告失敗。 錯誤記錄檔應該會指出自動轉換曾經嘗試執行但失敗,然後寫入失敗的原因。
在定義這兩種自動轉換時,請定義當轉換結束時每一個工作項目都會達到有效狀態,而不需要使用者介入。 換句話說,經由提供預設值或是複製所有欄位的值,就會符合依據轉換所要達成的狀態而定義的所有規則。 如果有任何欄位在轉換之後變成無效,則狀態轉換就會失敗。
為了不讓欄位變成無效,請執行下列作業:
為狀態轉換定義 DEFAULTREASON。
針對會在狀態轉換後變成必要欄位的欄位,使用 DEFAULT 或 COPY 規則項目指定欄位值。
例如,您已建立轉換動作「簽入」,它會將工作項目的狀態從「正在進行」轉換成「可供建置」, 而工作項目的「可供建置」規則會要求完成「解決者」欄位的設定。 那麼,您就必須在 TRANSITION 區段中定義「解決者」的 DEFAULT 或 COPY 規則項目。 此外,還要定義 DEFAULTREASON 以確保不需使用者介入就能設定必要欄位。
回到頁首