Поделиться через


Подключение к Azure DevOps из Power Apps

Соединитель Power Apps для Azure DevOps позволяет работать с экземпляром Azure DevOps. Просмотр запросов Azure DevOps, выбор рабочих элементов по типу и просмотр или редактирование сведений — все из приложения на основе холста, подключенного к Azure DevOps.

Подсказка

Полный список всех действий см. в разделе "Действия соединителя Azure DevOps".

В этой статье описано, как создать приложение на основе холста, которое подключается к Azure DevOps, чтобы получить список запросов и взаимодействовать с рабочими элементами в проекте.

Предпосылки

Вам потребуется следующее:

Шаг 1. Добавление источника данных Azure DevOps

Чтобы подключиться к Azure DevOps, изменитепустое приложение холста и добавьте источник данных Azure DevOps .

Снимок экрана: подключение к Azure DevOps в области выбора источника данных.

Если у вас нет подключения к Azure DevOps, нажмите кнопку Connect, следуйте инструкциям, чтобы ввести сведения и разрешить приложению подключаться.

Шаг 2. Перечисление общих запросов

В этом разделе описано действие ListQueriesInFolder для соединителя Azure DevOps для перечисления доступных запросов.

  1. В левой области выберите "Вставить>пустую вертикальную коллекциюмакета>".

  2. Введите следующую формулу для свойства Items коллекции. Замените примеры значений параметров собственными значениями.

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

Снимок экрана: запросы списка в папке с помощью формулы, добавленной в свойство Items вертикальной коллекции.

В примере используются переменные Project, Organization и Folder. Фактические значения находятся в текстовых полях под строкой формул (выделено). Значения проекта и организации находятся в URL-адресе, используемом для подключения к Azure DevOps. Обычно папка — "Общие запросы" или "Мои запросы".

Снимок экрана: поиск имени проекта и организации для экземпляра Azure DevOps.

Если вы получите следующую ошибку в приведенной выше формуле, включите доступ к сторонним приложениям с помощью OAuth в организации Azure DevOps и повторите попытку.

"Сбой AzureDevOps.ListQueriesInFolder:{"status":401,"message":"TF400813:User 'GUID' не авторизован для доступа к этому ресурсу".}"

  1. Задайте для коллекции значение "Макет " и "Заголовок" и "Подзаголовок".

  2. Выберите поля, подходящие для Azure DevOps в качестве имени и folderOptions , для заголовка и субтитров.

Снимок экрана: поля коллекции для перечисления запросов.

Шаг 3. Вывод списка рабочих элементов

Используйте действие GetQueryResultsV2 для соединителя Azure DevOps для перечисления всех рабочих элементов выбранного запроса. Это действие привязывает коллекцию к источнику данных.

  1. Вставьте другую пустую вертикальную коллекцию и поместите ее рядом с существующей коллекцией.

  2. Введите следующую формулу для свойства Items коллекции. Замените примеры значений параметров именами проектов и организаций.

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

Снимок экрана: получение результатов запроса из существующей коллекции на основе выбранного запроса.

Эта формула использует действие GetQueryResultsV2 с именем проекта, идентификатором запроса и именем организации. Идентификатор запроса в этом примере (Gallery2.Selected.Id) ссылается на запрос, выбранный из списка запросов, доступных в коллекции, добавленной ранее. Замените имя коллекции по мере необходимости.

Результат GetQueryResultsV2 является динамическим, поэтому значения являются динамическими.

Снимок экрана: поля рабочего элемента заголовка, типа рабочего элемента.

Но вы можете получить доступ к некоторым значениям. Azure DevOps возвращает базовый набор значений для всех типизированных элементов. Выберите карточку данных в коллекции и вставьте две текстовые метки. Задайте текстовое свойство меток следующим образом:

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 для формы редактирования выбранному рабочему элементу.

  1. Выберите ... (многоточие) >Добавьте пользовательскую карточку.

Снимок экрана: добавление пользовательской карточки в форме редактирования.

  1. Переместите карточку данных в верхнюю часть формы редактирования.

Снимок экрана: пользовательская карточка, перемещенная в верхний раздел в форме редактирования.

  1. Увеличьте размер элемента управления вводом текста.

Снимок экрана: элемент управления вводом текста внутри пользовательской карточки.

  1. Задайте для свойства Default текстового элемента управления Text(ThisItem.Value.'System.Title')входных данных значение . Функция Text возвращает значение в виде текста.

Снимок экрана: элемент управления вводом текста, ссылающийся на название рабочего элемента.

Эта формула задает текст по умолчанию внутри элемента управления вводом текста в поле Title из выбранного рабочего элемента Azure DevOps.

Подсказка

Если в проекте Azure DevOps используется поле "Описание " с HTML или форматированным текстом, используйте элемент управления ввода форматированного текстового редактора вместо элементов управления вводом текста или меткой. Элемент управления "Форматированный текстовый редактор " помогает отображать описание как форматированный текст вместо HTML-кода.

  1. Повторите предыдущие шаги, чтобы добавить другую пользовательскую карточку с элементом управления вводом текста внутри с заданным Text(ThisItem.Value.'System.State')свойством Default.

Эта формула задает текст по умолчанию внутри элемента управления вводом текста в поле State из выбранного рабочего элемента Azure DevOps.

  1. Переупорядочение карточек данных в форме редактирования, чтобы создать место для значка сохранения.

Добавление динамических возвращаемых значений в формы

До сих пор вы используете форму "Изменить", которая упрощает доступ к данным, предоставляя общее свойство DataSource и Item для всех карт данных в форме. Чтобы получить доступ к динамическим значениям, задайте как источник данных, так и свойства элемента следующим образом (замените организацию и проект своими значениями):

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 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". Для пользовательских или динамических значений используйте отображаемое имя, как показано в пользовательском интерфейсе, например "Настраиваемое поле 1". Это соглашение об именовании относится к Azure DevOps и может отличаться от других служб.

Дальнейшие шаги

Запустите приложение. Выберите запрос из списка запросов. Затем выберите рабочий элемент, который вы хотите обновить название или описание. Внесите изменения и нажмите кнопку сохранения. Приложение сохраняет изменения в рабочем элементе Azure DevOps. Переключитесь на другой запрос, а затем вернитесь, чтобы увидеть изменения в приложении.

Вы также можете настроить приложение дальше или создать приложение с дополнительными карточками данных в формах. Используйте форму отображения вместо формы редактирования для отображения данных в разных карточках данных. При использовании формы отображения используйте элемент управления "Текст" для отображения текста. При использовании форматированного текста или формата HTML (например, поля описания в Azure DevOps) используйте элемент управления html-текстом . Дополнительные сведения о настройке приложения см. в элементах управления, коллекции, формах и карточках.

См. также

Работа с источниками данных динамической схемы в Power Apps (экспериментальная версия)