共用方式為


根據狀態、轉換或原因自動化欄位指派

您可能會想要依據 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"

支援自動化的必要步驟

若要將工具與工作項目追蹤相整合,該工具必須執行下列步驟:

  1. 判定在執行動作之後,應將工作項目轉換成什麼狀態。

  2. 將工作項目設為「目標」狀態。

    工作項目追蹤 API 可提供用以執行這些步驟的方法。 工作項目追蹤 API 屬於 Visual Studio ALM SDK 的一部分。 如需詳細資訊,請參閱 Microsoft 網站的下列頁面:Team Foundation Server SDK

    注意事項注意事項

    系統不會記錄導致發生特定狀態轉換的交易動作。如果您必須追蹤哪個動作導致了轉換,可以指定其他工作項目欄位以進行追蹤,或者您可以定義原因值。

回到頁首

建立狀態轉換與動作的關聯

您可以使用狀態轉換動作,在工作流程的各個點上自動轉換工作項目。 例如,Team Foundation Server 版本控制系統必須支援在簽入時自動轉換工作項目。 為支援此作業,已定義 "microsoft.vsts.actions.checkin" 動作。

工作項目類型作者可以定義具有名稱為「處理中」之狀態的「缺失」工作項目類型,並在開發人員進行變更時,使用這個工作項目。 工作項目類型作者可以定義另一個名稱為「備妥可建置」的狀態,表示開發人員已宣告受該缺失影響的程式碼,已備妥可進行夜間建置。

作者可以宣告下列事項,在簽入作業期間,自動將工作項目從「處理中」狀態轉換成「備妥可建置」狀態:

<TRANSITION from="Working" to="Ready To Build">
   <ACTIONS>
      <ACTION value="microsoft.vsts.actions.checkin"/>
   </ACTIONS>
</TRANSITION>

回到頁首

轉換動作詳細資料

使用狀態轉換動作,以在工作流程的各個點上自動轉換工作項目。 您可能會考慮下列有關轉換動作的使用詳細資料:

  • 轉換動作是選用性的。 如果工作項目執行個體目前的狀態具有適用於指定動作的動作項目,會傳回「目標」狀態。 若否,則傳回值會是 Null。 整合作業處理 Null 傳回值時不會產生問題。 也就是:

    • 並不會失敗。

    • 而是留下追蹤或記錄檔,指出因為找不到整合所需的動作,而導致整合未自動轉換。

  • 針對每個工作項目類型,用於成對「來源狀態/動作」的動作不得重複。 這表示工作項目類型作者不可為相同的動作指定多個「目標」狀態。

  • 但是,支援對相同的轉換進行多項動作,以便進行多重自動轉換整合,如下列範例所示:

    <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>

自動轉換錯誤檢查

整合者可以嘗試兩種類型的自動轉換。 第一個是因為使用者動作而發生的自動轉換。 第二個是因為無人式自動化作業而發生的自動轉換,例如夜間建置。

  • 使用者動作自動轉換:針對這種自動轉換,使用者需在場回應所出現的任何與規則相關之問題。 您必須確定當工作項目類型的作者加入整合作業無法辨識的必要欄位時,可以支援所發生的情況。 若要支援這種情況,請執行自動轉換,然後檢查工作項目類型是否有規則違規。 如果發現有任何違規,則顯示表單讓使用者解決。

  • 無人式自動作業自動轉換:您必須假設沒有使用者在場解決這些問題。 在此情況下,整合應會失敗,但不會造成損害。 錯誤記錄檔應該會說明已嘗試自動轉換,而且應會提供失敗的原因。

在定義任一種自動轉換類型時,請將轉換定義為每個工作項目都能在轉換結束時達到有效的狀態,而不需要使用者介入。 換句話說,只要在所有欄位中提供預設值或複製的值,即可符合所要轉換之狀態的所有規則。 如果轉換之後有任何欄位無效,狀態轉換就會失敗。

為避免欄位無效,請執行下列作業:

  • 為狀態轉換定義 DEFAULTREASON

  • 針對在狀態轉換之後會變成必要的欄位,請使用 DEFAULTCOPY 規則項目來指定該欄位的值。

例如,您已建立轉換動作「簽入」,它會將工作項目的狀態從「處理中」轉換成「備妥可建置」。 該工作項目的「備妥可建置」規則,需要設定「解決者」欄位。 然後您要在 TRANSITION 區段中,為「解決者」定義 DEFAULTCOPY 規則項目。 此外,還要定義 DEFAULTREASON,以確定在沒有使用者介入的狀況下,可以設定必要欄位。

請參閱

其他資源

將規則套用至工作項目欄位

Associating a State Transition with an Action