Подключение к 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, выберите подключение и следуйте инструкциям, чтобы предоставить свои данные, а затем разрешите приложению подключиться.

Шаг 2. Вывод списка общих запросов

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

  1. На левой панели выберите Вставить > Макет > Пустая вертикальная галерея.

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

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

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

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

Поиск имен проекта и организации для вашего экземпляра Azure Dev Ops.

Если вы получили следующую ошибку в приведенной выше формуле, включите доступ к сторонним приложениям с помощью OAuth в своей организации Azure DevOps и повторите попытку.
"AzureDevOps.ListQueriesInFolder failed:{"status":401,"message":"TF400813: Пользователь 'GUID' не имеет прав доступа к этому ресурсу."}

  1. Выберите Макет для коллекции как Заголовок и подзаголовок.

  2. Выберите соответствующие Azure Dev Ops поля как Имя и Параметры папки для заголовка и подзаголовков.

Поля коллекции для списка запросов.

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

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

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

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

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

Получение результатов запроса из существующей галереи на основе выбранного запроса.

В этой формуле используется действие GetQueryResultsV2 с именем проекта, идентификатором запроса и названием организации. Идентификатор запроса в этом примере (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. Замените имена проекта и организации на те, которые используются у вас.

  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. Переставьте карточки данных внутри формы редактирования, чтобы освободить место, куда мы добавим значок сохранения.

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

До сих пор мы использовали форму редактирования, которая упрощает доступ к данным, предоставляя общее свойство 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 Dev ops, используйте действие 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" })) 
    }
);

В этой формуле добавляется новый текст-пример, однако можно также использовать выражение 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 (экспериментальная функция)

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).