使用适用于 Azure DevOps 的 Power Apps 连接器,可以使用 Azure DevOps 实例。 查看 Azure DevOps 查询、按类型选择工作项,以及查看或编辑详细信息 -- 从连接到 Azure DevOps 的画布应用中查看或编辑详细信息。
小窍门
有关所有作的完整列表,请参阅 Azure DevOps 连接器作。
本文将指导你构建一个连接到 Azure DevOps 的画布应用,以获取查询列表,并与项目中的工作项进行交互。
先决条件
需要以下各项:
- Power Apps 许可证。 如果没有试用版,请使用 30 天试用版,或注册 开发人员计划 进行非生产使用。
- 如果你不熟悉 Power Apps,请 通过生成应用来了解基础知识,然后自定义应用的 控件、 库、 窗体和 卡片。
- 用于连接到 Azure DevOps 的 空白画布应用 。
- 若要在本文中创建应用,需要一个包含组织、项目和共享查询的 Azure DevOps 实例,其中包含一些可用于编辑的示例工作项。
- Azure DevOps 实例必须 允许第三方应用程序通过 OAuth 访问。 有关详细信息,请参阅 管理 Azure DevOps 的访问策略。
步骤 1 - 添加 Azure DevOps 数据源
若要连接到 Azure DevOps,请编辑空白画布应用,并添加 Azure DevOps 数据源。
如果没有 Azure DevOps 连接,请选择 “连接”,按照提示输入详细信息,并允许应用连接。
步骤 2 - 列出共享查询
在本部分中,将使用 Azure DevOps 连接器的 ListQueriesInFolder 作列出可用的查询。
在左窗格中,选择“ 插入>布局>空白”垂直库。
为库的 Items 属性输入以下公式。 将示例参数值替换为自己的值。
AzureDevOps.ListQueriesInFolder("Project", "Organization", "Folder").value
该示例使用变量“Project”、“Organization”和“Folder”。 实际值位于编辑栏下方的文本框中(突出显示)。 可在用于连接到 Azure DevOps 的 URL 中找到 Project 和组织值。 文件夹通常是“共享查询”或“我的查询”。
如果在上述公式中收到以下错误,请在 Azure DevOps 组织中 使用 OAuth 启用第三方应用访问 ,然后重试。
“AzureDevOps.ListQueriesInFolder 失败:{”status“:401,”message“:”TF400813:用户“GUID”无权访问此资源。“}”
将库的 布局 设置为 标题和副标题。
选择适用于 Azure DevOps 的 字段作为标题 和副标题的名称和 FolderOptions 。
步骤 3 - 列出工作项
使用 Azure DevOps 连接器的 GetQueryResultsV2 作列出所选查询的所有工作项。 此作将库绑定到数据源。
插入另一个空白垂直库,并将其放置在现有库旁边。
为库的 Items 属性输入以下公式。 将示例参数值替换为项目和组织名称。
AzureDevOps.GetQueryResultsV2("Project", Text(Gallery1.Selected.Id), "Organization").value
此公式使用具有项目名称、查询 ID 和组织名称的 GetQueryResultsV2 作。 此示例中的查询 ID(Gallery2.Selected.Id) 是指从前面添加的库提供的查询列表中选择的查询。 根据需要替换库名称。
向库添加动态返回值
GetQueryResultsV2 的结果是动态的,因此值也是动态的。
但你可以访问某些值。 Azure DevOps 返回所有类型化项的基本值集。 选择库中的数据卡并插入两个文本标签。 按如下所示设置标签的文本属性:
ThisItem.Value.'System.WorkItemType'
ThisItem.Value.'System.Title'
步骤 4 - 显示工作项
该应用显示所有查询的列表和所选查询的工作项列表。 现在,添加编辑表单以显示数据。
将这两个库移动到屏幕左侧,为编辑窗体腾出空间。
将 “编辑”窗体 添加到屏幕,并将其移动到库的右侧。
将编辑窗体的 DataSource 属性设置为
AzureDevOps.GetQueryResultsV2("Project", Text(Gallery1.Selected.Id),"Organization").value。 将“Project”和“Organization”替换为项目和组织名称。将编辑窗体的 Item 属性设置为
Gallery2.Selected。
此公式将编辑窗体的 Item 属性设置为所选的工作项。
- 选择 ... (省略号) >添加自定义卡片。
- 将数据卡移动到编辑窗体的顶部。
- 增加文本输入控件的大小。
- 将文本输入控件的 Default 属性设置为
Text(ThisItem.Value.'System.Title')。 Text 函数将值作为文本返回。
此公式将文本输入控件中的默认文本设置为所选 Azure DevOps 工作项中的 “标题” 字段。
小窍门
如果 Azure DevOps 项目使用包含 HTML 或格式文本的 “说明 ”字段,请使用 RTF 编辑器 输入控件,而不是 文本输入 或标签控件。 格式文本编辑器控件有助于将说明显示为格式文本而不是 HTML 代码。
- 重复上述步骤以添加另一个自定义卡片,其中的文本输入控件设置为 Default 属性
Text(ThisItem.Value.'System.State')。
此公式将文本输入控件中的默认文本设置为所选 Azure DevOps 工作项中的 “状态 ”字段。
- 重新排列编辑窗体中的数据卡,为保存图标创建空间。
向窗体添加动态返回值
到目前为止,使用“编辑”窗体,它通过为表单中的所有数据卡提供通用的 DataSource 和 Item 属性来简化数据访问。 若要访问动态值 ,请按如下所示 设置数据源和项属性(将组织和项目替换为你的值):
AzureDevOps.GetWorkItemDetails(Gallery2.Selected.Value.'System.Id',Organization, Project, Gallery2.Selected.Value.'System.WorkItemType')
传递文本属性“WorkItemType”(如“功能”)时,可以在功能项和工作项等项之间切换。 由于这些项的字段集不同,因此此调用的返回类型是动态的。
使用通用方法 Text(ThisItem.Value.'System)访问特定值。Id'。 或者,使用 Text(ThisItem.fields.System_Id)通过更常规的动态响应访问它们。 通常不会记录这些动态值名称。 若要查找这些字段的正确名称(包括非标准字段),请打开监视器工具并检查 GetWorkItemDetails 调用的数据响应。 有关指南,请参阅下图。
如果不使用“编辑”窗体,而是使用容器,请使用如下所示的公式检索这些值,该公式从自定义团队字段中获取信息。
Text(AzureDevOps.GetWorkItemDetails(Gallery2.Selected.Value.'System.Id',Organization, Project, Gallery2.Selected.Value.'System.WorkItemType').fields.One_custom_CustomField1)
更新 Azure DevOps 中的值
若要更新 Azure DevOps 中的值,请使用 UpdateWorkItem 按钮属性中的 OnSelect 函数。
AzureDevOps.UpdateWorkItem(
Gallery2.Selected.Value.'System.Id',
Organization,
{
description: "This is a new description",
dynamicFields: ParseJSON(JSON({'Custom Field 1': "This is new custom text" }))
}
)
该公式添加新的示例文本,但也可以使用 Power Fx 表达式。
确保公式对内置字段名称使用小写形式。 例如,引用“说明”字段时,请使用 description: "This is a new description" 而不是 Description: "This is a new description"。 大小写不正确可能会导致错误“请求的作缺少 400 必需参数:'UpdateWorkItem'”。 对于自定义或动态值,请使用 UI 中显示的显示名称,例如“自定义字段 1”。 此命名约定特定于 Azure DevOps,可能与其他服务不同。
后续步骤
运行应用。 从查询列表中选择一个查询。 然后,选择要更新其标题或说明的工作项。 进行更改,然后选择“保存”按钮。 应用将更改保存到 Azure DevOps 工作项。 切换到另一个查询,然后切换回以查看应用中的更改。
还可以进一步自定义应用,或者在窗体上创建具有更多数据卡的应用。 使用显示窗体而不是编辑窗体来显示不同数据卡中的数据。 使用显示窗体时,使用 文本标签 控件显示文本。 使用 RTF 或 HTML 格式(如 Azure DevOps 中的 “说明 ”字段)时,请使用 HTML 文本 控件。 有关自定义应用的详细信息,请参阅 控件、 库、 窗体和 卡片。