从 Power Apps 连接到 Azure DevOps

Azure DevOps 的 Power Apps 连接器允许您使用 Azure DevOps 实例。 您可以在连接到 Azure DevOps 的画布应用中查看 Azure DevOps 查询、根据不同的工作项类型选择工作项、查看或编辑详细信息。

提示

有关所有操作的完整列表,请参阅 Azure DevOps 连接器操作

本文的目标是指导您构建一个画布应用,该应用可以连接到 Azure DevOps 来收集查询列表,并与项目中的工作项进行交互。

先决条件

以下要求是必要的:

  • Power Apps 许可证。 如果您没有许可证,请使用 30 天试用版,或注册开发人员计划在非生产环境下使用。
  • 如果您不熟悉 Power Apps,请通过生成应用然后自定义该应用的控件窗体来熟悉 Power Apps 的基础知识。
  • 用于连接到 Azure DevOps 的 空白画布应用
  • 要创建本文中介绍的应用,您将需要一个 Azure DevOps 实例,该实例包括一个组织、一个项目和一个共享查询,其中包含一些可供编辑的示例工作项。
  • Azure DevOps 实例必须启用通过 OAuth 访问第三方应用程序。 有关更多信息,请参阅管理 Azure DevOps 的访问策略

步骤 1 - 添加 Azure DevOps 数据源

要连接到 Azure DevOps,编辑空白画布应用,然后添加 Azure DevOps 数据源。

连接到 Azure DevOps。

如果您还没有 Azure DevOps 连接,选择连接,按照提示提供您的详细信息,然后允许应用连接。

步骤 2 - 列出共享查询

在本节中,我们将使用 Azure DevOps 连接器的 ListQueriesInFolder 操作列出可用查询。

  1. 从左侧窗格中,选择插入 > 布局 > 空白垂直库

  2. 为库的 Items 属性输入以下公式,根据需要替换示例参数值。

    AzureDevOps.ListQueriesInFolder("Project","Organization","Folder").value
    

使用添加到垂直库的 Items 属性的公式列出文件夹中的查询。

如果示例使用变量 "Project"、"Organization" 和 "Folder",并且实际值在公式栏下方的文本框中(突出显示)。 您可以从用于连接到 Azure Dev Ops 的 URL 中找到您的 Project 和 Organization 值。 该文件夹通常是 "Shared Queries" 或 "My Queries"。

找到 Azure Dev Ops 实例的项目和组织名称。

如果您在上述公式中看到以下错误,请在您的 Azure DevOps 组织中启用“使用 OAuth 访问第三方应用”,然后重试。
"AzureDevOps.ListQueriesInFolder 失败:{"状态":401,"消息":"TF400813:用户 'GUID' 未被授予访问此资源的权限。"}

  1. 选择库的布局标题和副标题

  2. 选择适合 Azure Dev Ops 的字段作为标题和副标题的 NameFolderOptions

用于列出查询的库字段。

步骤3 - 列出工作项

现在我们将使用 GetQueryResultsV2 操作来让 Azure DevOps 连接器列出所选查询的所有工作项。 这会将库绑定到数据源。

  1. 插入另一个空白垂直库,将其放在现有库的右侧。

  2. 为库的 Items 属性输入以下公式,根据需要替换示例参数值。 根据需要替换您的 Project 和 Organization 名称。

    AzureDevOps.GetQueryResultsV2("Project", Text(Gallery1.Selected.Id),"Organization").value
    

根据所选查询从现有库中获取查询结果。

此公式使用具有项目名称、查询 ID 和组织名称的 GetQueryResultsV2 操作。 此示例中的查询 ID (Gallery2.Selected.Id) 引用从通过之前添加的库提供的查询列表中选择的查询。 根据需要替换库名称。

GetQueryResultsV2 返回的结果是动态的。 因此这些值也是非类型化的。

显示标题、工作项类型的工作项字段。

但是,您可以访问一些值。 Azure Dev Ops 为所有类型化的项目返回一组基本值。 在库中选择数据卡片并插入两个文本标签。 按如下方式设置标签的文本属性:

    ThisItem.Value.'System.WorkItemType'
    ThisItem.Value.'System.Title'

步骤 4 - 显示工作项

该应用程序显示所有查询的列表,以及所选查询的工作项列表。 现在我们可以添加一个编辑窗体,用于简单地显示数据。

  1. 排列屏幕上的两个库,为我们通过将两个库移到屏幕左侧来添加的编辑窗体腾出空间。

  2. 编辑窗体添加到屏幕,并将其移到库的右侧。

添加编辑窗体。

  1. 将编辑窗体的 DataSource 属性设置为 AzureDevOps.GetQueryResultsV2("Project", Text(Gallery1.Selected.Id),"Organization").value。 根据需要替换您的 Project 和 Organization 名称。

  2. 将编辑窗体的 Item 属性设置为 Gallery2.Selected

    此公式将编辑窗体的 Item 属性设置为在工作项列表中选择的工作项。

  3. 从屏幕右侧的属性窗格中选择编辑字段

  4. 选择 ...(省略号)> 添加自定义卡

    添加自定义卡。

  5. 在顶部的编辑窗体中重新排列数据卡。

    自定义卡移动到编辑窗体的顶部。

  6. 保持选择自定义卡,插入 文本输入 控件。 选择后,控件将被添加到自定义卡中。

  7. 增加 文本输入 控件的大小。

自定义卡内的 文本输入 控件。

  1. 将 文本输入 控件的 Default 属性设置为 Text(ThisItem.Value.'System.Title')。 Text 函数以文本形式“键入”返回结果。

这是引用工作项标题的文本输入控件。

此公式将 文本输入 控件内的默认文本设置为所选 Azure DevOps 工作项的标题字段。

提示

如果您的 Azure DevOps 项目使用包含 HTML 或富文本的说明字段,您还可以使用富文本编辑器输入控件而不是文本输入或标签控件。 在这种情况下使用 富文本编辑器 控件还有助于解决任何问题,如使用 HTML 代码而不是纯文本或富文本显示说明。

  1. 重复上述步骤添加另一个自定义卡,其中包含 文本输入 控件,Default 属性设置为 Text(ThisItem.Value.'System.State')

    此公式将 文本输入 控件内的默认文本设置为所选 Azure DevOps 工作项的状态字段。

  2. 重新排列编辑窗体中的数据卡来建立空间,我们将在其中添加保存图标。

向窗体中添加非类型化和动态返回值

到目前为止,我们一直在使用编辑窗体,它通过提供一个公共的数据源和条目属性来简化数据访问,窗体中的所有数据卡都可以使用它。 如果使用编辑窗体,要访问无类型值,请确保按如下方式设置数据源和项目属性:(代入 Organization 和 Project 的值。)

   AzureDevOps.GetWorkItemDetails(Gallery2.Selected.Value.'System.Id',Organization, Project, Gallery2.Selected.Value.'System.WorkItemType')

当您传递文本属性“WorkItemType”时,例如,“Feature”,它允许您从诸如特性和工作项之类的项进行切换。 由于这些项目的字段集互不相同,因此该调用的返回类型是动态的。

您可以使用公共方法 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 Dev ops 中更新值,请在按钮的 OnSelect 中使用 UpdateWorkItem。

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" })) 
    }
);

该公式添加了新的示例文本,但您也可以使用 PowerFx 表达式。

确保公式对非自定义或内置字段名使用小写。 例如,当引用“说明”字段时,使用 description: "This is a new description" 而不是 Description:"This is a new description"。 不正确的大小写可能会导致错误“400 请求的操作缺少必需的参数:'UpdateWorkItem'”。 对于自定义/动态值,可以使用显示字段的正常大小写。 例如,自定义字段的字段名称只是显示名称 'Custom Field 1'。 返回值的这种命名约定是特定于 Azure DevOps 的,可能与其他服务不同。

后续步骤

播放应用。 从查询列表中选择一个查询。 然后,选择要更新其标题或说明的工作项。 进行更改,然后选择保存按钮。 更改将保存到 Azure DevOps 工作项中。 切换到另一个查询并切换回来,查看应用内显示的更改。

同样,进一步自定义应用或在窗体上创建带有附加数据卡的应用。 您还可以使用显示窗体而不是编辑窗体来仅显示不同数据卡内的数据。 使用显示窗体时,确保使用 文本标签 控件来显示文本。 当使用富文本或 HTML 格式(如 Azure DevOps 中的说明字段)时,使用 HTML 文本 控件。 有关自定义该应用的详细信息,请参阅控件窗体

另请参见

在 Power Apps 中使用动态架构数据源(试验)

备注

您能告诉我们您的文档语言首选项吗? 进行简短调查。(请注意,此调查是英文版调查)

此调查大约需要七分钟。 不会收集个人数据(隐私声明)。