使用依赖项跟踪器规划和跟踪依赖项

Azure DevOps Services

注意

建议使用交付计划来跟踪依赖项,而不是使用依赖项跟踪器。 依赖项跟踪器扩展不是 Azure Boards 支持的功能,也没有得到任何产品团队的支持。 如果在使用扩展时有任何疑问、建议或问题,请访问 Azure DevOps 市场,依赖项跟踪器扩展页面。 依赖项跟踪器扩展仅适用于 Azure DevOps Services。

依赖项跟踪器扩展支持跨团队、项目和组织管理依赖项。 它提供了可筛选的视图,可以显示团队正在使用和生成的所有依赖项。 通过这些视图,可以跟踪依赖项的状态和计划,有助于评估产品可交付结果的依赖项风险。

可以使用依赖项跟踪器在迭代或发布开始时规划依赖项,并在开发期间跟踪状态。 任何给定的依赖项都涉及两个参与方:

  • 使用者:有需求并启动工作请求的功能团队
  • 生成者:承诺交付工作的功能团队

每个工作请求和工作可交付结果都定义为一个工作项。 工作项按“后续任务-前导任务”链接类型或其他方向链接类型链接。 有关链接类型的详细信息,请参阅链接类型参考为链接生成/从链接使用。

提示

尽管任何工作项类型都可以参与依赖项跟踪,但你可能需要决定是否要将依赖项限制为特定类型,例如功能、长篇故事、用户情景或 bug。 可以通过配置依赖项跟踪器来创建该限制。

在依赖项跟踪器中,可以选择不同的视图和筛选器,向下钻取以了解具体细节。 以下各部分提供了对这些视图和选项的说明:

可以使用依赖项跟踪器来可视化和跟踪以下工作项:

  • 团队正在交付的工作的可交付结果的依赖项
  • 你对团队正在交付的工作的其他团队拥有的依赖项
  • 其他团队对你的团队正在交付的工作拥有的依赖项

组织中的所有团队都可以参与跟踪依赖项。

注意

依赖项跟踪器不会取代同意执行工作所需的当面互动。 它提供了更易用的规划和跟踪功能。 在将依赖项输入到依赖项跟踪器之前,应让各方都同意这些依赖项。

关键术语

  • 依赖项:团队 A 需要让团队 B 执行团队 A 尝试执行的工作,这项任务就是依赖项
  • 使用者:希望完成工作的团队
  • 生成者:被要求执行工作的团队
  • 排序:生产团队的工作需要在使用团队开始工作之前完成
  • 使用者是要求执行工作的团队 - 他们开启对需要完成的工作进行的所有讨论
  • 使用者负责参与和跟踪此项工作 - 由于这是其场景所需的工作,因此使用者需要负责提交、监视和跟踪工作状态
  • 使用者负责将工作输入到 Azure Boards 中,并将该项工作请求提交给生成者
  • 将工作提交给生产者后,生成者将负责该工作项。
    • 生成者负责维护 Azure Boards 中的工作项
    • 生成者拥有工作项和迭代的状态
    • 移交工作项后,使用者就不应再接触这些值
  • 使用者负责管理他们请求的工作,以便了解任何实质性的更改和调整

先决条件

  • 为要跟踪其依赖项的组织安装依赖项跟踪器扩展
  • 要查看依赖项,你必须是项目的“项目有效用户”组的成员。
  • 要创建依赖项,你必须是参与依赖项链接的两个项目的“参与者”组的成员。
  • 若要支持跨组织参与,所有组织都必须通过同一 Microsoft Entra ID 对用户进行身份验证。
  • Azure Boards 必须作为一项服务启用。 如果已禁用它,需要重新启用。 有关详细信息,请参阅启用或禁用服务
  • 要修改配置,你必须是“项目集合管理员”组的成员。

重要

依赖项跟踪器的默认配置支持敏捷流程。 如果项目基于不同的流程,或者你已经自定义流程,可能需要修改配置。 请参阅本文后面的配置依赖项跟踪器

此外,应执行以下配置或自定义任务:

  • 设置将参与依赖项跟踪的区域路径和团队。
  • 为项目配置迭代路径/冲刺,并将其分配给参与依赖项跟踪的工作项。 这项任务至关重要,可以让“时间线”视图生成有意义的数据。
  • 根据需要自定义流程以支持任何其他工作项或字段。
  • 配置依赖项跟踪器以支持业务需求,并处理任何已创建的自定义项。

打开依赖项跟踪器

  1. 打开已定义团队的项目的 Web 门户。

  2. 从“面板”组下选择“依赖项跟踪器”。

    Screenshot showing Dependency Tracker hub in Azure Boards.

  3. 若要关注你拥有所有权的区域,请选择与要查看其依赖项的团队对应的“区域”。

    Screenshot showing selecting Area.

    只能对那些为项目定义的区域路径进行筛选。

筛选器选项

可通过输入关键字,或者使用一个或多个字段来筛选每个支持的视图。 提供的字段包括“状态”、“工作项类型”和“迭代路径”。 根据输入的关键字,筛选器函数会按任何显示的列字段列出工作项。

若要显示筛选器工具栏,请选择 筛选器图标。

Screenshot showing Dependency Tracker Filter options.

可以通过选择筛选器图标来打开和关闭筛选器。 若要查看更多筛选器,可以使用筛选器列表末尾的箭头。

从每个字段的多选下拉菜单中选择一个或多个值。 这些字段的值按如下所示进行填充:

  • 状态:选中要查看的工作项状态的一个或多个复选框。 下拉列表应包括为所选视图中显示的所有工作项类型定义的所有工作流状态。
  • 工作项类型:选中要查看的工作项类型的一个或多个复选框。 这些是配置为参与依赖项跟踪的工作项类型。 默认工作项类型包括:长篇故事、功能、用户情景和 bug。 若要修改配置,请参阅依赖项跟踪器的配置
  • 迭代:选中要查看的迭代路径的一个或多个复选框。 下拉列表应包括为项目配置的所有迭代路径,以及在当前视图中列出了其工作项的迭代路径。
  • 优先级:选中要查看的优先级的一个或多个复选框。 这些是分配给工作项的优先级值
  • 合作伙伴:为其定义工作项的合作伙伴组织。

注意

筛选器选项取决于为依赖项跟踪器定义的配置。 此外,只有那些与所选视图中显示的工作项相对应的选项才符合筛选条件。 例如,如果没有任何工作项分配给冲刺 4,则冲刺 4 选项不会显示在迭代路径的筛选器选项中。

能够删除所选区域中的依赖项(用于排除我的团队中的依赖项)

查看向下钻取选项

多个视图通过向下钻取提供交互式可视化效果。 本文后面的标签视图说明中将介绍这些功能。

Screenshot showing Consuming dependencies, drill-down into completed work in an area.

创建依赖项

依赖项表示一个团队依赖于另一个团队的工作。 两个团队都应在各自的区域路径中跟踪自己的工作。 通过链接依赖于其他团队工作的工作,可以可视化和跟踪依赖项。

  1. 选择“新建依赖项”。

    Screenshot showing choose New Dependency.

    如果合作伙伴团队位于其他组织中,则首先选择“合作伙伴帐户”。 可以通过配置依赖项跟踪器来启用或禁用“合作伙伴帐户”选项。

    Screenshot of Create dependency dialog, Choose partner account.

  2. 可以按 ID 或输入工作项标题中包含的关键字来搜索工作项。 在这里,我们将用户情景和 bug 链接在一起。

    Screenshot of Create dependency dialog, choose two existing work items to link.

    • 生成者是致力于交付工作的团队。
    • 使用者是需要或依赖于工作的团队。
    • 创建依赖项链接的最快速方法是在搜索框中键入“生成者”和“使用者”工作项 ID,然后选择“保存”。

    (可选)可以选择“新建”添加工作项,然后将其链接为相互依赖的工作项。 在这里,我们创建两个新功能,并将它们链接起来。

    Screenshot of Create dependency dialog, create new work items to link.

    如果依赖项的一半不存在工作项,可以根据需要创建一个新工作项。

  3. 选择 “保存” 。 只有在选择了要链接的两个工作项后,“保存”按钮才可用。

  4. 在成功确认对话框中,选择“查看依赖项”。

    Screenshot of Success confirmation dialog.

  5. 你链接的工作项会突出显示。

    如本例中所示,Fabrikam Fiber/Service Delivery/Voice 团队依赖于 MyFirstProject 团队交付其 User Story 706: Cancel order form 来完成 Bug 390: Cancel order form

    Screenshot of Create dependency dialog, Linked dependent work items.

还可以使用“链接”选项卡链接工作项,以创建“后续任务/前导任务”链接。 前导任务是工作项的生成者,或者是必须首先显示的项。 后续任务是工作项的使用者,或者是依赖于第一项的项。

Screenshot of Add Link dialog, Create links manually.

注意

后续任务/前导任务(使用者/生成者)链接类型是依赖项跟踪器使用的默认链接类型。 如果你的项目是使用托管 XML 流程模型自定义的,可以在依赖项跟踪器配置中指定不同的链接类型。 请参阅本文后面的配置依赖项跟踪器

有关详细信息,请参阅链接用户情景、问题、bug 和其他工作项

通过从链接的工作项中选择 操作图标,然后从菜单中选择“删除依赖项链接”选项,可以删除依赖项。

Screenshot of work item list, choose actions menu to remove dependency links.

(可选)可以从工作项的“链接”选项卡中删除链接。

创建依赖项的查询

若要打开一组从属工作项,请采用与批量编辑相同的方式选择它们,从一个选定的链接工作项选择 操作图标,然后从菜单中选择“在查询中打开”选项。

Screenshot of work item list, Create a query of dependencies.

此时会打开“查询结果”页的一个新选项卡。

还可以通过选择“工作项”和“直接链接”查询类型,并选择任何工作项类型来创建自定义查询。

选择“复制到 HTML”,将所选的工作项作为格式化表复制到剪贴板。

“使用依赖项”视图

“使用依赖项”视图显示团队依赖于其他团队/区域路径的工作。 它可用于回答以下问题:

  • 我使用哪些依赖项作为所选区域和子区域的所有者?
  • 每个制作者团队有多少个依赖项(按区域级别 3)?
  • 使用者依赖项的工作流状态是什么样的?

Screenshot of Dependency Tracker, Consuming dependencies view.

条形图上的每一列代表另一个区域路径,该路径按所选区域视图的工作流状态生成依赖项。 该表显示了唯一的依赖项的数量。 它还列出了参与跟踪的依赖项的筛选视图的所有工作项。

在该表中,可以完成以下操作。

  • 通过在条形图中选择一个区域路径条和进度状态来筛选工作项列表
  • 使用 展开和 折叠图标展开或折叠工作项列表,以显示依赖工作项的完整列表
  • 通过打开列选项添加或删除列字段
  • 通过选择“显示”来切换工作项的顺序:顶部的使用者或顶部的生成者

“生成依赖项”视图

“生成依赖项”视图显示其他团队/区域路径依赖的工作(根据所选区域)。 它可用于回答以下问题:

  • 我的团队作为所选区域的所有者负责交付哪些依赖项?
  • 每个使用者团队存在多少个依赖项(按区域级别 3)?
  • 生成者依赖项的工作流状态是什么样的?

Screenshot of Dependency Tracker, Producing dependencies view.

条形图上的每一列代表另一个区域路径,该路径按所选区域视图的工作流状态使用依赖项。 该表显示了唯一的依赖项的数量,并列出了跟踪依赖项的筛选视图中包括的所有工作项。

在该表中,可以完成与“使用依赖项”视图中相同的操作。

“时间线”选项卡

“时间线”选项卡提供了依赖项的日历视图。 “时间线”视图为 beta 版本。 “时间线”视图有助于回答以下问题:

  • 时间范围内依赖项的顺序是什么。
  • 对于一个特定的团队,在三个月的时间窗口内,所有可交付结果依赖项是哪些?

重要

要使时间线显示有意义的数据,必须将依赖工作项分配给迭代路径,并且迭代路径必须分配有开始日期和结束日期。

“时间线”视图有两个版本:“正确流”和“错误流”。 每个版本都显示颜色编码的工作流状态。 可以在依赖项跟踪器配置中自定义颜色代码。

“正确流”视图

“正确流”视图显示按正确顺序排列的依赖项。 后续任务工作项计划在其前导任务工作项之后完成。

Screenshot of Timeline view, correct flow.

“错误流”视图

“错误流”视图显示不符合顺序的依赖项。 至少一个前导任务工作项计划在其后续任务工作项之后完成。

Screenshot of Timeline view, incorrect flow.

风险图

风险图提供了一个可视化效果,显示依赖项如何从使用者团队流向生成者团队,或从生成者流向使用者。 该图使团队能够一目了然地了解依赖项的数量和相关风险级别。 此外,风险图视图还展示了链接依赖项并将其阶梯式上升到情景的值。

Screenshot of Dependency Tracker Risk Graph.

有两种视图:“使用来源”和“生成对象”。 工作流状态颜色编码是可配置的。 线条的宽度指示该区域中存在多少依赖项,链接越粗,依赖项越多,如图例所示。

使用来源

Screenshot of Dependency Tracker Risk Graph, Consuming From view.

生成对象

Screenshot of Dependency Tracker Risk Graph, Producing For view.

根据特定依赖项进行筛选

可以通过选择其中一个依赖项向下钻取到特定内容。

Screenshot of Dependency Tracker Risk Graph, Producing For, Filtered on a dependency.

配置依赖项跟踪器

必须是项目集合管理员组的成员才能修改配置。 对配置所做的所有更改都会应用于组织中定义的所有项目。

若要更改配置,请选择 齿轮图标并修改列出的语法。 完成操作后,选择“保存”

可以修改的主要属性汇总如下:

  • 用于创建依赖项链接的链接类型。 默认值为后续任务/前导任务链接类型。 只有在使用托管 XML 流程模型自定义工作跟踪时,才会进行自定义。
  • 工作项和工作项类型
    • 参与依赖项跟踪的工作项类型
    • 工作项类别状态到颜色的映射
    • 工作项工作流状态和颜色的映射
  • 依赖项列表中的默认字段列
  • 默认筛选器选择:
    • 选定的依赖项工作项类型
    • 选定的迭代路径
  • 已启用选项:
    • 时间线
    • 新依赖项链接
    • 跨帐户(组织)依赖项
    • 跨帐户依赖项切换默认状态
  • 风险图配置:
    • 与有风险(红色)的工作项关联的工作项状态
    • 与中性(灰色)工作项关联的工作项状态
    • 与跟踪(绿色)工作项关联的工作项状态

有关完整列表和说明,请参阅本节后面提供的属性说明

启用或禁用“新建依赖项”选项

newDependencyButtonEnabled 属性可以启用或禁用“新建依赖项”链接选项。 启用后,链接将显示在依赖项跟踪器页上。 禁用后,用户无法从跟踪器创建依赖项,只能查看通过其他方式创建的依赖项。 默认值设置为 true(启用)。

启用或禁用跨组织链接

crossAccountConfigs 属性可以启用或禁用“新建依赖项”对话框中的跨组织依赖项链接。 默认值设置为 true(启用)。

若要禁用,请将 JSON 配置中的以下语法设置为 false

{
"crossAccountConfigs": {
  "crossAccountDependencyEnabled": false,
  "crossAccountDependencyToggleDefaultState": false, //default state for cross account toggle
  "crossAccountDependencyToggleOnText": "Cross-account dependencies on",
  "crossAccountDependencyToggleOffText": "Cross-account dependencies off"}
}

跨帐户链接需要使用特殊链接类型,并且只能与“新建依赖项”选项配合使用。

属性说明

下表描述了配置文件中指定的每个属性项。

属性/说明

默认/示例

consumesLinkName

指定用于创建从生成者到使用者的链接的链接类型。

System.LinkTypes.Dependency-Reverse

producesLinkName

指定用于创建从使用者到生成者的链接的链接类型。

System.LinkTypes.Dependency-Forward

queryFields

指定要用于代替依赖项跟踪器用于返回链接工作项结果的系统字段的自定义字段。 默认情况。 系统引用名称用于返回以下字段的值:

  • areaPath - 区域路径
  • assignedTo - 分配到
  • id - ID
  • areapath - 迭代 ID
  • areapath - 迭代路径
  • areapath - 优先级
  • areapath - 状态
  • areapath - 标记
  • teamProject - 团队项目
  • title= 标题
  • workItemType - 工作项类型

如果使用自定义字段代替其中一个系统字段,可以输入以下内容来指定替换:

{
title: "Custom.Title",
assignedTo: "Custom.AssignedTo" 
}

dependencyWorkItemTypes

指定参与依赖项跟踪的工作项类型。 在“创建依赖项”对话框中,只能创建已列出的那些工作项类型。

默认值:

[  
"Epic",  
"Feature",  
"User Story",  
"Bug"  
]

如果使用 Scrum 流程,请将条目更改为:

[  
"Epic",  
"Feature",  
"Product Backlog Item",  
"Bug"  
]

selectedDependencyWorkItemTypes

将初始焦点限制为依赖项跟踪器显示或列出的那些工作项类型。 根据默认的“Any”,将显示或列出包含依赖项链接类型的任何工作项类型。 用户可以通过筛选来更改焦点。

默认值:

Any

若要将工作项类型限制为仅长篇故事和功能,请指定:

[  
"Epic",  
"Feature"  
]

selectedReleases

将初始焦点限制为分配给等于或低于指定版本的那些迭代路径的工作项。 基于空白默认值,不应用任何限制。 用户可以通过筛选来更改焦点。

默认值:

[]

若要将 Fabrikam 项目的工作项类型限制为版本 1 和版本 2,请指定:

[  
"Fabrikam/Release 1",  
"Fabrikam/Release 2",  
]

workItemCategoriesAndColors

根据工作项的类别和工作流状态,指定用于表示工作项的颜色。 有关详细信息,请参阅如何在积压工作和面板中使用工作流状态和状态类别

默认值:

{
"Proposed": {
"displayName": "Proposed",
"color": "#a6a6a6"
},
"InProgress": {
"displayName": "In Progress",
"color": "#00bcf2"
},
"Completed": {
"displayName": "Completed",
"color": "#9ac70b"
},
"Removed": {
"displayName": "Removed",
"color": "#d9242c"
},
"Resolved": {
"displayName": "Resolved",
"color": "#ff9d00"
}
}

workItemDislayStatesAndDisplayColors

将工作流状态映射到用于显示工作流的颜色。 如果自定义工作流状态,或使用的流程用了不同的工作流状态,必须更新此属性。

默认值:

{  
"New": {  
"textColor": "rgb(112, 112, 112)",  
"chartColor": "rgb(112, 112, 112)",  
"states": [  
"New"  
]  
},  
"Active": {  
"textColor": "rgb(0, 122, 204)",  
"chartColor": "rgb(0, 122, 204)",  
"states": [  
"Active",  
"Resolved"  
]  
},  
"Closed": {  
"textColor": "rgb(16, 124, 16)",  
"chartColor": "rgb(16, 124, 16)",  
"states": [  
"Closed"  
]  
},  
"Removed": {  
"textColor": "rgb(204, 41, 61)",  
"chartColor": "rgb(204, 41, 61)",  
"states": [  
"Removed"  
]  
},  
"Other": {  
"textColor": "rgb(178, 178, 178)",  
"chartColor": "rgb(178, 178, 178)",  
"states": []  
}  
}  

riskAssessementValues

指定风险字段值。 “风险”字段指定对成功完成用户情景的相对不确定性的主观分级。 它是针对敏捷流程定义的,但可以添加到其他流程中使用的工作项类型。

默认值:

["1-High", "2-Medium", "3-Low"]

partnerAccounts

可选配置,指定在创建跨帐户依赖项时可从“依赖项”对话框中选择哪些 Azure DevOps 组织。 如果未指定,则会基于用户之前访问过的组织来生成列表。

默认值:

[]

示例:

["account-1", "account-2"]

timelineEnabled

启用或禁用“时间线”视图。

默认值:

true

newDependencyButtonEnabled

启用或禁用“新建依赖项”链接以创建新的链接依赖项。

默认值:

true

crossAccountConfigs

(1) 启用或禁用对在其他合作伙伴帐户中的工作项创建新依赖项的支持,(2) 指定“创建依赖项”对话框中“合作伙伴帐户”选项的默认状态。

默认值:

{
"crossAccountDependencyEnabled": true,  
"crossAccountDependencyToggleDefaultState": false
}

如果不希望创建属于其他组织的任何依赖项,请将此配置更改为:

{  
"crossAccountDependencyEnabled": false,  
"crossAccountDependencyToggleDefaultState": false
}

priorityValues

指定优先级字段值。 “优先级”字段指定对与业务相关的 bug、问题、任务或用户情景的主观分级。 它是针对大多数积压工作项类型和流程定义的,但可以添加到其他流程中使用的工作项类型。

默认值:

["0","1","2","3","4","(blank)"]

defaultColumns

指定用于显示依赖项列表的字段列和顺序。

默认值:

[
"Id",
"Area Path",
"Dependency Title",
"State",
"Consumers",
"Producers"
]

riskAnalysisEnabled

指定是否启用风险功能。 如果设置为 true,必须要定义 riskAssessmentValues 属性。

默认值:

False

riskAssessmentValues

默认值:

[]

riskGraphConfig

将工作流状态映射到图表上显示的三个风险区域之一:atRisk 是红色、nuetral 是灰色、onTrack 是绿色。

默认值:8

{  
"atRisk": [  
"Removed"  
],  
"neutral": [  
"New"  
],  
"onTrack": [  
"Active",  
"Resolved",  
"Closed",  
"Other"  
]
}

添加或删除参与依赖项跟踪的工作项类型中使用的工作流状态。

iterationDepth

指定依赖项跟踪器查询以生成“时间线”视图的迭代路径的分层深度。

默认值:8A 深度 3 对应于:Fabrikam/版本 1/冲刺 20。

默认配置语法

{
    "consumesLinkName": "System.LinkTypes.Dependency-Reverse",
    "producesLinkName": "System.LinkTypes.Dependency-Forward",
    "queryFields": {},
    "dependencyWorkItemTypes": [
        "Epic",
        "Feature",
        "User Story",
        "Bug"
    ],
    "selectedDependencyWorkItemTypes": "Any",
    "selectedReleases": "",
    "workItemCategoriesAndColors": {
        "Proposed": {
            "displayName": "Proposed",
            "color": "#a6a6a6"
        },
        "InProgress": {
            "displayName": "In Progress",
            "color": "#00bcf2"
        },
        "Completed": {
            "displayName": "Completed",
            "color": "#9ac70b"
        },
        "Removed": {
            "displayName": "Removed",
            "color": "#d9242c"
        },
        "Resolved": {
            "displayName": "Resolved",
            "color": "#ff9d00"
        }
    },
    "workItemDislayStatesAndDisplayColors": {
        "New": {
            "textColor": "rgb(112, 112, 112)",
            "chartColor": "rgb(112, 112, 112)",
            "states": [
                "New"
            ]
        },
        "Active": {
            "textColor": "rgb(0, 122, 204)",
            "chartColor": "rgb(0, 122, 204)",
            "states": [
                "Active",
                "Resolved"
            ]
        },
        "Closed": {
            "textColor": "rgb(16, 124, 16)",
            "chartColor": "rgb(16, 124, 16)",
            "states": [
                "Closed"
            ]
        },
        "Removed": {
            "textColor": "rgb(204, 41, 61)",
            "chartColor": "rgb(204, 41, 61)",
            "states": [
                "Removed"
            ]
        },
        "Other": {
            "textColor": "rgb(178, 178, 178)",
            "chartColor": "rgb(178, 178, 178)",
            "states": []
        }
    },
    "riskAssessmentValues": [],
    "releases": [],
    "partnerAccounts": [],
    "timelineEnabled": true,
    "newDependencyButtonEnabled": true,
    "crossAccountConfigs": {
        "crossAccountDependencyEnabled": true,
        "crossAccountDependencyToggleDefaultState": false
    },
    "priorityValues": [
        "0",
        "1",
        "2",
        "3",
        "4",
        "(blank)"
    ],
    "defaultColumns": [
        "Id",
        "Area Path",
        "Dependency Title",
        "State",
        "Consumers",
        "Producers"
    ],
    "riskGraphConfig": {
        "atRisk": [
            "Removed"
        ],
        "neutral": [
            "New"
        ],
        "onTrack": [
            "Active",
            "Resolved",
            "Closed",
            "Other"
        ]
    },
    "iterationDepth": 8
}