如何:更改工作项类型的工作流

更新:2007 年 11 月

您可以通过导出 XML 文件并修改其内容来更改工作项类型的工作流。修改了工作流之后,可以立即导入 XML 文件以开始使用更新的工作项类型。

必需的权限

若要执行此过程,您必须是“Team Foundation Administrators”组的成员或项目的“Project Administrators”组的成员。有关更多信息,请参见 Team Foundation Server 权限

更改工作流

  1. 如果要修改单个项目上的工作项类型,请运行 witexport 以导出要修改的工作项类型的 XML 文件。有关更多信息,请参见如何:从现有项目中导出工作项类型

  2. 在 Visual Studio 中,单击“文件”,单击“打开”,再单击“文件”。

    这将显示“打开文件”对话框。

  3. 在“查找范围”之下,移动到您导出该文件的位置。

    如果要修改工作项类型以自定义过程模板,请移动到您下载该过程模板的位置。

    说明:

    如果您运行的是 Windows Vista,则可能无权访问某些文件夹。如果您尝试将工作项类型导出到您无权访问的位置,则注册表虚拟化技术将自动重定向导出的文件,并将其保存到虚拟存储区。有关更多信息,请参见 https://go.microsoft.com/fwlink/?LinkId=92325https://go.microsoft.com/fwlink/?LinkId=92323。若要避免此重定向操作,可以将该文件导出到您有权访问的位置。

  4. 选择要更新的工作项类型 XML 文件,然后单击“打开”。出现有关行尾的提示时,单击“否”。

  5. 在该 XML 文件的 <WORKFLOW> 部分中,找到工作项类型的工作流定义,如下面的 XML 所示:

    <WORKFLOW>
      <STATES>
        <STATE value="Active">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
    ...
    
  6. 通过插入另一个 <STATE> 元素,向该类型定义添加一个 Unapproved 状态。新状态以粗体文本显示。

    <WORKFLOW>
      <STATES>
        <STATE value="Unapproved">    </STATE>    <STATE value="Active">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
    ...
    
  7. 创建 null 状态与 Unapproved 状态之间的转换。为此,请首先找到工作流定义中针对转换的部分。然后插入下面以粗体文本显示的 XML。由于此更改,该类型的所有新工作项将从 Unapproved 状态开始,并且默认原因为“New”(新建)。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">    <REASONS>      <DEFAULTREASON value="New" />    </REASONS>  </TRANSITION>  <TRANSITION from="" to="Active">
        <REASONS>
          <DEFAULTREASON value="New" />
        </REASONS>
        <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
            <COPY from="currentuser" />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
            <COPY from="clock" />
          </FIELD>
          <FIELD refname="System.AssignedTo">
            <COPY from="currentuser" />
          </FIELD>
        </FIELDS>
      </TRANSITION>
    
  8. 删除在以下 XML 中突出显示的到 Active 的转换。这样做是因为只能存在一个起始转换。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
        </REASONS>
      </TRANSITION>
      <TRANSITION from="" to="Active">    <REASONS>      <DEFAULTREASON value="New" />    </REASONS>    <FIELDS>      <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">        <COPY from="currentuser" />      </FIELD>      <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">        <COPY from="clock" />      </FIELD>      <FIELD refname="System.AssignedTo">        <COPY from="currentuser" />      </FIELD>    </FIELDS>  </TRANSITION>
    
  9. 通过插入下面以粗体文本显示的 XML,为起始转换添加一个“Ported”(移植)原因。这样可以让用户知道该工作项是新的还是从另一个跟踪系统移植过来的。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
         <REASON value="Ported" />    </REASONS>
      </TRANSITION>
    ...
    
  10. 插入下面以粗体文本显示的 COPY 规则。此规则将“指派给”字段默认设置为创建该工作项的用户,并且只在起始转换期间进行评估。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
         <REASON value="Ported" />
        </REASONS>
        <FIELDS>       <FIELD refname="System.AssignedTo">         <COPY from="currentuser" />       </FIELD>    </FIELDS>
      </TRANSITION>
    ...
    
    说明:

    在其他 <TRANSITION> 或 <STATE> 元素下面插入此规则会将此规则的作用范围限定于其他转换或状态。有关更多信息,请参见使用 <WHEN*>、<DEFAULT> 和 <COPY> 规则

  11. 通过插入下面的 XML,创建一个从 Unapproved 状态到 Active 状态的转换。如下面的示例中突出显示的部分。由于此更改,当工作项被批准时,它可以执行此转换。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
         <REASON value="Ported" />
        </REASONS>
        <FIELDS>
           <FIELD refname="System.AssignedTo">
             <COPY from="currentuser" />
           </FIELD>
        </FIELDS>
      </TRANSITION>
      <TRANSITION from="Unapproved" to="Active">    <REASONS>      <DEFAULTREASON value="Approved" />    </REASONS>  </TRANSITION>  <TRANSITION from="Active" to="Closed">
        <REASONS>
          <DEFAULTREASON value="Completed" />
          <REASON value="Deferred" />
          <REASON value="Obsolete" />
          <REASON value="Cut" />
        </REASONS>
    ...
    
  12. 在工具栏上单击“保存”将更改保存到该 XML 文件。

  13. 若要将新工作项类型导入单个项目中,请参见如何:将工作项类型导入现有项目。若要将工作项类型添加到过程模板中,请参见工作项类型

验证导入到单个项目中的更改

  1. 在团队资源管理器中单击“刷新”,从服务器下载最新的更新。

    这些更新包括您刚导入的更改。请等待几秒钟,直到加载了“工作项”节点。正在加载中的节点显示“正在工作”。

  2. 使用所修改的工作项类型创建新工作项。为完成此任务,请右击“工作项”节点,指向“添加工作项”,然后单击该工作项类型。

    此工作项是从您已更改并导入的工作项类型创建的。

  3. 请注意,初始“状态”现在为“Unapproved”,并且“原因”为“New”。此外,“指派给”值是您的帐户名称。单击“原因”字段可看到一个列表框,其中列出了原因“New”和“Ported”。

  4. 在“标题”字段中,键入标题,然后单击“保存”保存该工作项。等待保存操作完成(由状态栏上的“项已保存”指示)。

  5. 在“状态”字段中,选择“Active”值以批准该工作项并再次转换它。请注意,“原因”字段是“Approved”。

  6. 在工具栏中,单击“保存”以保存此转换。

  7. 单击“关闭”以关闭该工作项。

请参见

概念

状态、转换和原因

转换安全性

按状态、转换或原因限定字段规则的应用范围

其他资源

自动化状态转换