Freigeben über


Herstellen einer Verbindung mit Azure DevOps über Power Apps

Mit dem Power Apps-Connector für Azure DevOps können Sie mit Ihrer Azure DevOps-Instanz arbeiten. Anzeigen von Azure DevOps-Abfragen, Auswählen von Arbeitsaufgaben nach Typ und Anzeigen oder Bearbeiten von Details – alles in einer Canvas-App, die mit Azure DevOps verbunden ist.

Tipp

Eine vollständige Liste aller Aktionen finden Sie unter Azure DevOps-Connectoraktionen.

Dieser Artikel führt Sie durch das Erstellen einer Canvas-App, die eine Verbindung mit Azure DevOps herstellt, um eine Liste von Abfragen abzurufen und mit Arbeitsaufgaben in Ihrem Projekt zu interagieren.

Voraussetzungen

Sie benötigen Folgendes:

  • Eine Power Apps-Lizenz. Wenn Sie nicht über eine Testversion verfügen, verwenden Sie eine 30-Tage-Testversion, oder registrieren Sie sich für einen Entwicklerplan für die Nichtproduktion.
  • Wenn Sie mit Power Apps noch nicht vertraut sind, lernen Sie die Grundlagen kennen, indem Sie eine App generieren und dann die Steuerelemente, Kataloge, Formulare und Karten der App anpassen.
  • Eine leere Canvas-App zum Herstellen einer Verbindung mit Azure DevOps.
  • Zum Erstellen der App in diesem Artikel benötigen Sie eine Azure DevOps-Instanz mit einer Organisation, einem Projekt und einer freigegebenen Abfrage, die einige Beispielarbeitselemente zum Bearbeiten zur Verfügung hat.
  • Die Azure DevOps-Instanz muss den Zugriff auf Anwendungen von Drittanbietern über OAuth ermöglichen. Weitere Informationen finden Sie unter Verwalten von Zugriffsrichtlinien für Azure DevOps.

Schritt 1 : Hinzufügen der Azure DevOps-Datenquelle

Um eine Verbindung mit Azure DevOps herzustellen, bearbeiten Sie die leere Canvas-App, und fügen Sie die Azure DevOps-Datenquelle hinzu.

Screenshot der Verbindung mit Azure DevOps im Auswahlbereich der Datenquelle.

Wenn Sie keine Azure DevOps-Verbindung haben, wählen Sie "Verbinden" aus, folgen Sie den Anweisungen, um Ihre Details einzugeben, und erlauben Sie der App, eine Verbindung herzustellen.

Schritt 2 : Auflisten freigegebener Abfragen

In diesem Abschnitt verwenden Sie die Aktion "ListQueriesInFolder " für den Azure DevOps-Connector, um die verfügbaren Abfragen auflisten zu können.

  1. Wählen Sie im linken Bereich "Layout>leerer vertikaler Katalogeinfügen>" aus.

  2. Geben Sie die folgende Formel für die Items-Eigenschaft des Katalogs ein. Ersetzen Sie die Beispielparameterwerte durch Ihre eigenen Werte.

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

Screenshot der Listenabfragen im Ordner mithilfe der Formel, die der Items-Eigenschaft des vertikalen Katalogs hinzugefügt wurde.

Im Beispiel werden die Variablen "Project", "Organization" und "Folder" verwendet. Die tatsächlichen Werte befinden sich in den Textfeldern unterhalb der Bearbeitungsleiste (hervorgehoben). Sie finden Ihre Projekt- und Organisationswerte in der URL, die zum Herstellen einer Verbindung mit Azure DevOps verwendet wird. Der Ordner ist in der Regel "Freigegebene Abfragen" oder "Meine Abfragen".

Screenshot des Auffindens des Projekt- und Organisationsnamens für Ihre Azure DevOps-Instanz.

Wenn die folgende Fehlermeldung in der obigen Formel angezeigt wird, aktivieren Sie den App-Zugriff von Drittanbietern mithilfe von OAuth in Ihrer Azure DevOps-Organisation, und versuchen Sie es erneut.

"AzureDevOps.ListQueriesInFolder failed:{"status":401,"message":"TF400813:The user 'GUID' isn't authorized to access this resource."}"

  1. Legen Sie das Layout für den Katalog auf Titel und Untertitel fest.

  2. Wählen Sie die Felder aus, die für Azure DevOps als Name und FolderOptions für den Titel und untertitel geeignet sind.

Screenshot der Katalogfelder für Auflistungsabfragen.

Schritt 3: Auflisten von Arbeitsaufgaben

Verwenden Sie die GetQueryResultsV2-Aktion für den Azure DevOps-Connector, um alle Arbeitsaufgaben für die ausgewählte Abfrage auflisten. Diese Aktion bindet den Katalog an die Datenquelle.

  1. Fügen Sie einen weiteren leeren vertikalen Katalog ein, und platzieren Sie ihn neben dem vorhandenen Katalog.

  2. Geben Sie die folgende Formel für die Items-Eigenschaft des Katalogs ein. Ersetzen Sie die Beispielparameterwerte durch Projekt- und Organisationsnamen.

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

Screenshot des Abrufens von Abfrageergebnissen aus dem vorhandenen Katalog basierend auf der ausgewählten Abfrage.

Diese Formel verwendet die GetQueryResultsV2-Aktion mit dem Projektnamen, der Abfrage-ID und dem Organisationsnamen. Die Abfrage-ID in diesem Beispiel (Gallery2.Selected.Id) bezieht sich auf die Abfrage, die aus der Liste der abfragen ausgewählt wurde, die über den zuvor hinzugefügten Katalog verfügbar sind. Ersetzen Sie den Katalognamen nach Bedarf.

Das Ergebnis von GetQueryResultsV2 ist dynamisch, sodass die Werte ebenfalls dynamisch sind.

Screenshot der Arbeitsaufgabenfelder des Titels, Arbeitsaufgabentyps.

Sie können jedoch auf einige der Werte zugreifen. Azure DevOps gibt einen grundlegenden Wertesatz für alle eingegebenen Elemente zurück. Wählen Sie die Datenkarte im Katalog aus, und fügen Sie zwei Textbeschriftungen ein. Legen Sie die Texteigenschaft der Beschriftungen wie folgt fest:

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

Schritt 4 – Anzeigen von Arbeitsaufgaben

Die App zeigt eine Liste aller Abfragen und die Liste der Arbeitsaufgaben für die ausgewählte Abfrage an. Fügen Sie nun ein Bearbeitungsformular zum Anzeigen von Daten hinzu.

  1. Verschieben Sie beide Kataloge auf die linke Seite des Bildschirms, um Platz für das Bearbeitungsformular zu schaffen.

  2. Fügen Sie dem Bildschirm das Bearbeitungsformular hinzu, und verschieben Sie es auf die rechte Seite der Kataloge.

Screenshot des Hinzufügens eines Bearbeitungsformulars.

  1. Legen Sie die DataSource-Eigenschaft des Bearbeitungsformulars auf AzureDevOps.GetQueryResultsV2("Project", Text(Gallery1.Selected.Id),"Organization").value. Ersetzen Sie "Projekt" und "Organisation" durch Ihre Projekt- und Organisationsnamen.

  2. Legen Sie die Item-Eigenschaft des Bearbeitungsformulars auf Gallery2.Selected.

Mit dieser Formel wird die Item-Eigenschaft für das Bearbeitungsformular auf die ausgewählte Arbeitsaufgabe festgelegt.

  1. Wählen Sie ... (Auslassungspunkte) >Fügen Sie eine benutzerdefinierte Karte hinzu.

Screenshot des Hinzufügens einer benutzerdefinierten Karte im Bearbeitungsformular.

  1. Verschieben Sie die Datenkarte an den Anfang des Bearbeitungsformulars.

Screenshot einer benutzerdefinierten Karte, die in den oberen Abschnitt innerhalb des Bearbeitungsformulars verschoben wurde.

  1. Vergrößern Sie die Größe des Texteingabesteuerelements.

Screenshot eines Texteingabesteuerelements innerhalb einer benutzerdefinierten Karte.

  1. Legen Sie die Standardeigenschaft des Texteingabesteuerelements auf Text(ThisItem.Value.'System.Title'). Die Text-Funktion gibt den Wert als Text zurück.

Screenshot eines Texteingabesteuerelements, das auf den Titel der Arbeitsaufgabe verweist.

Mit dieser Formel wird der Standardtext innerhalb des Texteingabesteuerelements auf das Feld "Titel " aus der ausgewählten Azure DevOps-Arbeitsaufgabe festgelegt.

Tipp

Wenn Ihr Azure DevOps-Projekt das Feld "Beschreibung " mit HTML oder Rich-Text verwendet, verwenden Sie das Rich-Text-Editor-Eingabesteuerelement anstelle der Texteingabe - oder Bezeichnungssteuerelemente. Das Rich-Text-Editor-Steuerelement hilft, die Beschreibung als Rich-Text anstelle von HTML-Code anzuzeigen.

  1. Wiederholen Sie die vorherigen Schritte, um eine weitere benutzerdefinierte Karte hinzuzufügen, wobei ein Texteingabesteuerelement enthalten ist, auf das die Standardeigenschaft festgelegt ist Text(ThisItem.Value.'System.State').

Mit dieser Formel wird der Standardtext innerhalb des Texteingabesteuerelements auf das Feld "Status" aus der ausgewählten Azure DevOps-Arbeitsaufgabe festgelegt.

  1. Ordnen Sie die Datenkarten im Bearbeitungsformular neu an, um Platz für das Speichersymbol zu erstellen.

Hinzufügen dynamischer Rückgabewerte zu Formularen

Bisher verwenden Sie das Bearbeitungsformular, das den Datenzugriff vereinfacht, indem Sie eine gemeinsame DataSource- und Item-Eigenschaft für alle Datenkarten im Formular bereitstellen. Um auf dynamische Werte zuzugreifen, legen Sie sowohl die Datenquelle als auch die Elementeigenschaften wie folgt fest (ersetzen Sie "Organisation" und "Project" durch Ihre Werte):

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

Wenn Sie die Texteigenschaft "WorkItemType" übergeben, z. B. "Feature", können Sie zwischen Elementen wie Features und Arbeitselementen wechseln. Da sich der Satz von Feldern für diese Elemente unterscheidet, ist der Rückgabetyp von diesem Aufruf dynamisch.

Greifen Sie mithilfe der allgemeinen Methode "Text(ThisItem.Value.'System" auf bestimmte Werte zu. ID'). Alternativ können Sie über die allgemeinere dynamische Antwort mithilfe von Text(ThisItem.fields.System_Id) darauf zugreifen. Diese Dynamischen Wertnamen sind in der Regel nicht dokumentiert. Um die richtigen Namen für diese Felder zu finden, einschließlich nicht standardmäßiger Felder, öffnen Sie das Monitortool, und untersuchen Sie die Datenantwort für den GetWorkItemDetails-Aufruf. Eine Anleitung finden Sie in der nachstehenden Abbildung.

Wenn Sie kein Bearbeitungsformular verwenden, aber einen Container verwenden, rufen Sie diese Werte mit einer Formel wie der folgenden ab, die Informationen aus einem benutzerdefinierten Teamfeld abruft.

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

Screenshot des Monitortools mit Details zur Arbeitsaufgabe.

Aktualisieren von Werten in Azure DevOps

Verwenden Sie die Funktion in der UpdateWorkItemOnSelect Eigenschaft einer Schaltfläche, um einen Wert in Azure DevOps zu aktualisieren.

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

Die Formel fügt neuen Beispieltext hinzu, sie können aber auch einen Power Fx-Ausdruck verwenden.

Stellen Sie sicher, dass die Formel für integrierte Feldnamen Kleinbuchstaben verwendet. Wenn Sie z. B. auf das Feld "Beschreibung" verweisen, verwenden Sie description: "This is a new description" anstelle von Description: "This is a new description". Falsche Groß-/Kleinschreibung kann dazu führen, dass der Fehler "400 Erforderlicher Parameter fehlt für den angeforderten Vorgang: 'UpdateWorkItem'". Verwenden Sie für benutzerdefinierte oder dynamische Werte den Anzeigenamen, wie in der Benutzeroberfläche dargestellt, z. B. "Benutzerdefiniertes Feld 1". Diese Benennungskonvention ist spezifisch für Azure DevOps und kann sich von anderen Diensten unterscheiden.

Nächste Schritte

Führen Sie die App aus. Wählen Sie eine Abfrage aus der Liste der Abfragen aus. Wählen Sie dann eine Arbeitsaufgabe aus, deren Titel oder Beschreibung Sie aktualisieren möchten. Nehmen Sie eine Änderung vor, und wählen Sie dann die Schaltfläche "Speichern" aus. Die App speichert Ihre Änderungen an der Azure DevOps-Arbeitsaufgabe. Wechseln Sie zu einer anderen Abfrage, und wechseln Sie dann zurück, um die Änderungen in der App anzuzeigen.

Sie können die App auch weiter anpassen oder eine App mit weiteren Datenkarten auf Formularen erstellen. Verwenden Sie ein Anzeigeformular anstelle eines Bearbeitungsformulars, um Daten in verschiedenen Datenkarten anzuzeigen. Wenn Sie ein Anzeigeformular verwenden, verwenden Sie das Textbezeichnungssteuerelement , um Text anzuzeigen. Wenn Sie Rich-Text- oder HTML-Format verwenden (z. B. das Feld "Beschreibung" in Azure DevOps), verwenden Sie das HTML-Textsteuerelement . Weitere Informationen zum Anpassen der App finden Sie unter Steuerelementen, Katalogen, Formularen und Karten.

Siehe auch

Arbeiten mit dynamischen Schemadatenquellen in Power Apps (experimentell)