Freigeben über


Power Fx in Desktop-Flows

Power Fx ist die Low-Code-Sprache zum Ausdrücken von Logik in der gesamten Microsoft Power Platform. Es ist eine universelle, stark typisierte, deklarative und funktionale Programmiersprache.

Power Fx wird in lesbarem Text ausgedrückt. Es handelt es sich um eine Low Code-Sprache, mit der Entwickler direkt in einer Excel-ähnlichen Formelleiste oder in einem Visual Studio Code-Textfenster arbeiten können. Das „Low“ in „Low Code“ ist auf die prägnante und einfache Art der Sprache zurückzuführen, die sowohl Herstellern als auch Entwicklern gemeinsame Programmieraufgaben erleichtert.

Power Fx ermöglicht das gesamte Entwicklungsspektrum von No-Code-Erstellenden ohne Programmierkenntnisse bis hin zu Pro-Code für professionelle Entwickelnde. Es ermöglicht verschiedenen Teams die Zusammenarbeit und spart Zeit und Aufwand.

Power Fx in einem Desktop-Flow verwenden

Um Power Fx als Ausdruckssprache in einem Desktop-Flow zu verwenden, müssen Sie einen Desktop-Flow erstellen und die entsprechende Umschalttaste aktivieren, wenn Sie den Flow durch Power Automate für die Desktop-Konsole erstellen.

Screenshot der Power Fx-Schaltfläche „Aktivieren“

Unterschiede bei den für Power Fx-fähige Workflows

Anmerkung

Jeder Power Fx-Ausdruck muss mit „=“ (Gleichheitszeichen) beginnen.

Wenn Sie von Flows umstellen, bei denen Power Fx deaktiviert ist, werden Sie möglicherweise einige Unterschiede feststellen. Um Ihre Erfahrung beim Erstellen neuer Desktop-Workflows zu optimieren, sollten Sie einige wichtige Konzepte beachten:

  • Genauso wie Excel-Formeln verwenden Desktop-Workflows, die Power Fx als Ausdruckssprache verwenden, die Indizierung eines Arrays auf Basis von 1 (eins) anstelle einer Indizierung auf Basis von 0 (null). Der Ausdruck =Index(numbersArray, 1) gibt zum Beispiel das erste Element des numbersArray-Arrays zurück.

  • Bei Variablennamen muss in Desktop-Flows mit Power Fx die Groß-/Kleinschreibung beachtet werden. Beispielsweise unterscheidet sich NewVar von newVar.

  • Wenn Power Fx diese Option in einem Desktop-Flow aktiviert ist, ist vor der Verwendung eine Desktop-Variableninitialisierung erforderlich. Der Versuch, eine nicht initialisierte Variable in Power Fx-Ausdrücken zu verwenden, führt zu einem Fehler.

  • Die If-Aktion akzeptiert einen einzelnen bedingten Ausdruck. Vorher wurden mehrere Operanden akzeptiert.

  • Während Flows ohne Power Fx-Aktivierung den Begriff „Allgemeiner Wert“ haben, der einen unbekannten Objekttyp bezeichnet, dreht sich Power Fx um ein striktes Typsystem. In Power Fx-fähigen Flows wird zwischen dynamischen Variablen (Variablen, deren Typ oder Wert während der Laufzeit geändert werden kann) und dynamischen Werten (Werte, deren Typ oder Schema während der Laufzeit bestimmt wird) unterschieden. Um diese Unterschiede besser zu verstehen, sehen Sie sich das folgende Beispiel an. Der dynamicVariable ändert seinen Typ während der Laufzeit von einem Numeric- zu einem Boolean-Wert, während dynamicValue als nicht typisiertes Objekt während der Laufzeit bestimmt wird, wobei der tatsächliche Typ ein Custom object ist:

    Screenshot mit der Einstellung einer dynamischen Variablen und eines dynamischen Werts.

  • Werte, die als dynamische Werte behandelt werden, sind:

    • Datentabellen
    • Benutzerdefinierte Objekte mit unbekanntem Schema
    • Dynamische Aktionsausgaben (z. B. die Aktion „.NET-Skript ausführen“)
    • Ausgaben aus der Aktion „Desktop-Flow ausführen“
    • Jede Aktionsausgabe ohne vordefiniertes Schema (z. B. „Aus Excel-Arbeitsblatt lesen“ oder „Neue Liste erstellen“)
  • Dynamische Werte werden ähnlich wie das Nicht typisierte Power Fx-Objekt behandelt und erfordern normalerweise, dass explizite Funktionen in den erforderlichen Typ konvertiert werden (z. B. Bool() und Text()). Um Ihre Erfahrung zu optimieren, gibt es eine implizite Konvertierung, wenn ein dynamischer Wert als Aktionseingabe oder als Teil eines Power Fx-Ausdrucks verwendet wird. Während der Erstellung findet keine Überprüfung statt, aber abhängig vom tatsächlichen Wert während der Laufzeit tritt ein Laufzeitfehler auf, wenn die Konvertierung fehlschlägt.

  • Wenn eine dynamische Variable verwendet wird, wird eine Warnmeldung angezeigt, die sagt: „Verzögerter Typ bereitgestellt“. Diese Warnungen entstehen aufgrund der strengen Anforderung von Power Fx für stark typisierte Schemata (streng definierte Typen). Dynamische Variablen sind in Listen, Tabellen oder als Eigenschaft für Datensatzwerte nicht zulässig.

  • Durch Kombinieren der Aktion Power Fx-Ausdruck ausführen mit Ausdrücken, welche die Funktionen Collect, Clear, ClearCollect und Patch verwenden, können Sie das Verhalten der Aktionen Element zur Liste hinzufügen und Zeile in Datentabelle einfügen emulieren, die bisher für Power Fx-fähige Desktop-Flows nicht verfügbar waren. Solange beide Aktionen noch verfügbar sind, verwenden Sie die Collect-Funktion, wenn Sie mit stark typisierten Listen (z. B. einer Liste von Dateien) arbeiten. Diese Funktion stellt sicher, dass die Liste typisiert bleibt, da die Liste mit der Aktion „Element zu Liste hinzufügen“ in ein nicht typisiertes Objekt konvertiert wird.

Beispiele

  • Das =1 in einem Eingabefeld entspricht dem numerischen Wert 1.
  • Der = variableName entspricht dem variableName-Wert der Variablen. 
  • Der Ausdruck = {'prop':"value"} gibt einen Datensatzwert zurück, der einem benutzerdefinierten Objekt entspricht.
  • Der Ausdruck = Table({'prop':"value"}) gibt eine Power Fx Tabelle zurück, die einer Liste von benutzerdefinierten Objekten entspricht. 
  • Der Ausdruck = [1,2,3,4] erstellt eine Liste numerischer Werte.
  • Um auf den Wert aus einer Liste zuzugreifen, verwenden Sie die Funktion Index(var, number), wobei var der Name der Liste und number die Position des abzurufenden Werts ist.
  • Verwenden Sie die Index() Funktion, um über einen Spaltenindex auf eine Datentabellenzelle zuzugreifen. =Index(Index(DataTableVar, 1), 2) Ruft den Wert aus der Zelle in Zeile 1 in Spalte 2 ab. =Index(DataRowVar, 1) Ruft den Wert aus der Zelle in Zeile 1 ab.
  • Verwenden Sie die folgende Syntax, um einen interpolierten Wert in eine Eingabe oder einen UI-/Webelementselektor aufzunehmen: Text before ${variable / expression} text after
    • Beispiel: The total number is ${Sum(10, 20)}

Anmerkung

Wenn Sie das Dollarzeichen ($) gefolgt von einer öffnenden geschweiften Klammer ({) innerhalb eines Power Fx-Ausdrucks oder in der Syntax eines UI-/Web-Elementselektors verwenden möchten und Power Automate für Desktop es nicht als Zeichenfolgeninterpolationssyntax behandeln soll, verwenden Sie unbedingt diese Syntax: $${ (das erste Dollarzeichen fungiert als Escape-Zeichen)

Verfügbare Power Fx-Funktionen

Die vollständige Liste aller verfügbaren Funktionen in Power Automate für Desktop-Flows finden Sie unter Formelreferenz – Desktop-Flows.

Bekannte Probleme und Einschränkungen

  • Die folgenden Aktionen aus der Standardbibliothek der Automatisierungsaktionen werden derzeit nicht unterstützt:
    • Schalter
    • Case
    • Standardfall
  • Einige Power Fx-Funktionen, die über IntelliSense bereitgestellt werden, werden derzeit in Desktop-Flows nicht unterstützt. Diese Funktionen zeigen bei Verwendung den folgenden Entwurfszeitfehler an: „Parameter ‚Value‘: PowerFx-Typ ‚OptionSetValueType‘ wird nicht unterstützt.“

Was ist neu

In diesem Abschnitt wird aufgelistet, was in den einzelnen Updates geändert wurde.

2.48

In der Release vom September 2024:

  • Aktivieren Sie aus der Kategorie Variablen zuvor nicht unterstützte Aktionen zur Bearbeitung von Listen und Datentabellen erneut.
  • Native Unterstützung nicht typisierter Objekte für benutzerdefinierte Objekte, Listen und Datentabellen. Weitere Informationen zu nicht typisierten Objekten finden Sie unter Nicht typisierter Objektdatentyp.
    • Diese Änderung wurde eingeführt, um die Entwurfszeitwarnungen und die Verwendung von verzögerten Typen zu reduzieren. Nicht typisierte Objekte sind eine Möglichkeit, Typen mit einem unbekannten Schema zur Entwurfszeit zu behandeln.
    • In früheren Versionen wurden dynamische Variablen (Variablen, deren Typ oder Wert während der Laufzeit geändert werden kann) und dynamische Werten (Werte, deren Typ oder Schema während der Laufzeit bestimmt wird) gleich behandelt. Wenn ein dynamischer Wert oder eine dynamische Variable in einem Power Fx-Ausdruck verwendet wurde, wurde eine Warnung ausgelöst: „Verzögerter Typ bereitgestellt“. Diese Warnungen traten auf, weil Power Fx strenge Typschemas (stark definierte Typen) erzwingt. Beginnend mit dieser Version haben wir zwischen diesen beiden Fällen unterschieden. Während dynamische Variablen weiterhin die Warnung „verzögerter Typ“ generieren, werden dynamische Werte jetzt als nicht typisierte Objekte behandelt.
    • Alle Datentabellenvariablen sind nicht typisiert, während benutzerdefinierte Objekte, die sich aus der Aktion JSON in ein benutzerdefiniertes Objekt konvertieren ergeben, nicht typisiert sind. Listen werden nicht mehr typisiert, nachdem sie mit Aktionen von Power Automate für Desktop aus der Kategorie Variablen bearbeitet wurden.
    • Bisher erzeugten bestimmte Automatisierungsaktionen aus der Standardaktionsbibliothek, wie Aus Excel lesen, Aus CSV lesen, Daten aus Web extrahieren, Daten aus Fenster extrahieren, SQL-Anweisung ausführen und JSON in ein benutzerdefiniertes Objekt konvertieren eine dynamische Variable zusammen mit einer Warnung „verzögerter Typ“. Sie erzeugen jetzt stattdessen eine nicht typisierte Datentabelle oder eine nicht typisierte benutzerdefinierte Objektvariable.
  • Die Set-Power Fx-Funktion ist jetzt aktiviert, wird aber noch nicht vollständig unterstützt. Sie kann zwar nicht verwendet werden, um den Wert einer Variablen direkt zu ändern. Sie kann aber mit den oben genannten Strukturen verwendet werden, um auch benutzerdefinierte Objekteigenschaften und Werte von Listen in bestimmten Indizes (z. B. =Set(Index(Index(DataTable, 1), 1), 42) oder =Set(customObject.property, 17)) zu aktualisieren.
  • Es wurde ein Problem beim Zugriff auf verschachtelte Listeneigenschaften eines Objekts in Power Fx aktivierten Flows behoben.

Vorsicht

In Version 2.48 von Power Automate für Desktop gab es Updates für Power Fx-fähige Desktop-Flows, die sich auf die Ausführung von Power Fx-fähigen Flows auswirken könnten, die mit früheren Versionen erstellt wurden. Es wird empfohlen, diese Version gründlich mit Ihren vorhandenen Power Fx-Flows zu testen.

  • Ausgaben untergeordneter Flows: Seien Sie vorsichtig, wenn Sie Ausgabevariablen untergeordneter Flows in einem Power Fx-fähigen Desktop-Flow verwenden. Dies umfasst Ausgabevariablen vom Typ „Liste“, „Benutzerdefiniertes Objekt“ und „Datentabelle“.
  • Einwertige Spaltenarrays: Ein Array, das mit einem Ausdruck wie =[1, 2, 3] erstellt wird, führt zu einem einwertigen Spaltenarray in Power Fx-fähigen Flows, dessen Elemente Objekte mit einer einzelnen Eigenschaft sind: {Value: 1}. Der Versuch, auf die Value Eigenschaft dieses Elements zuzugreifen, nachdem das erste Array mit einer Aktion geändert wurde, führt zu einem Erstellungsfehler.
  • Power Fx-Funktionsverwendung: In bestimmten Power Fx-Funktionen, wie in IsEmpty(), akzeptierten frühere Versionen eine dynamische Variable als Argument und lösten keinen Validierungsfehler aus. In der Version 2.48 führt die Verwendung einer Variablen, die als dynamische Variable behandelt wird, zu einem Validierungsfehler und dazu, dass vorhandene Flows nicht ausgeführt werden können. Die Lösung für dieses Problem besteht darin, die richtige Umwandlung auf den dynamischen (nicht typisierten) Wert anzuwenden. Mehr über Umwandlungsfunktionen erfahren Sie unter Nicht typisierter Objektdatentyp. Dieses Problem kann beim Bearbeiten eines Flows auftreten und Sie erhalten eine Fehlermeldung wie „Ungültiger Argumenttyp (UntypedObject). Stattdessen wird ein Tabellenwert erwartet.“ Folgen Sie zum Beheben dieses Problems den Fehlermeldungen, um Ihren Ausdruck in einen gültigen zu konvertieren.
    • Andere Beispiele für Funktionen, die bei Verwendung einer Kombination aus dynamischen und typisierten Variablen einen Validierungsfehler auslösen können, sind Sum(), Filter(), Concatenate() und Operatoren wie in (zum Beispiel "string" in DynamicValueObject).
  • Variablenvergleich: Ähnlich wie bei dem zuvor erwähnten Problem kann es zu Typinkompatibilitäten kommen, wenn Sie Vergleichsoperatoren (=, <>, >, < usw.) auf Ausdrücke mit dynamischen Werten anwenden. Seien Sie vorsichtig, und wenden Sie die richtige Umwandlung an, bevor Sie dynamische Werte vergleichen.

2.43

Im Release vom April 2024:

  • Unterscheidung zwischen Groß‑ und Kleinschreibung. Beispielsweise ist NewVar eine andere Variable als newVar.
  • Die Aktion Power Fx-Ausdruck ausführen ist unter der Variablen-Aktionsgruppe verfügbar. Mit „Power Fx-Ausdruck ausführen“ können Sie Ausdrücke direkt auf Datenquellen ausführen.
  • Die Power Fx-Funktionen Collect, Clear, ClearCollect werden in Desktop-Flows unterstützt.
  • Patch-Power Fx-Funktionen werden in Desktop-Flows unterstützt.
  • Variablen und Power Fx-Ausdrücke können in der UI-Element- oder Webselektorsyntax verwendet werden.
  • Interpolierte Werte können jetzt in die Syntax eines UI-/Webelementselektors aufgenommen werden. Für interpolierte Zeichenfolgen können Sie diese Syntax verwenden: ${ Power Fx-Ausdruck }.

Wichtig

In Version 2.43 von Power Automate für Desktop gab es Updates für Power Fx-fähige Desktop-Flows, die sich auf die Ausführung von Power Fx-fähigen Desktop-Flows auswirken könnten, die mit früheren Versionen erstellt wurden. Speziell:

  • Beachtung von Groß-/Kleinschreibung bei Variablennamen: Bei Variablennamen in Power Fx-fähigen Desktop-Flows, die mit Power Automate für Desktop ab Version 2.43 erstellt wurden, wird die Groß-/Kleinschreibung beachtet. Bei Power Fx-Desktop-Flows, die mit Power Automate für Desktop, Version 2.42 und früher, erstellt wurden, war die Verwendung von Variablennamen ohne Beachtung der Groß-/Kleinschreibung zulässig. Beispielsweise sind NewVar und newVAR dieselbe Variable. Überprüfen Sie bei Power Fx-fähige Desktop Flows, die mit Power Automate für Desktop, Version 2.42 und früher, erstellt wurden, unbedingt, ob die erstellten Variablen den Erwartungen entsprechen.

2,42

Im Release vom März 2024:

  • IntelliSense-Funktionen sind jetzt für Power Fx aktivierte Desktop-Flows verfügbar.
    • Syntaxfärbung
    • Autovervollständigungsfunktion während der Eingabe mit Vorschlägen in Echtzeit
    • Signaturhelfer für Power Fx-Funktionen

Anmerkung

Für Ausdrücke stehen IntelliSense-Funktionen zur Verfügung. Um einen Ausdruck einzugeben, verwenden Sie das Gleichheitszeichen (= Ihr Ausdruck ) am Anfang der jeweiligen Eingabe oder des Zeichenfolgen-Interpolationsnotation ( ${ Ihr Ausdruck } ).

  • Funktionsauswahl
    • Sie können über die FX-Schaltfläche im Kegel auf die Funktionsauswahl zugreifen, wenn Sie mit den entsprechenden Eingaben interagieren. Alle Power Fx-Funktionen, die derzeit für Desktop-Flows unterstützt werden, sind dort verfügbar.

2,41

Im Release vom Februar 2024:

  • Von nun an werden Eingaben, die nicht mit dem Gleichheitszeichen (=) beginnen, als Texttypwerte betrachtet. Numerische und boolesche Eingaben müssen immer mit dem Gleichheitszeichen beginnen.
  • Eingaben unterstützen jetzt interpolierte Zeichenfolgen. Verwenden Sie die folgende Syntax, um einen interpolierten Wert in eine Eingabe aufzunehmen: Text before ${variable/ expression} text after.
    • Beispiel: The total number is ${Sum(10, 20)}

Anmerkung

Um die interpolierte Zeichenfolgensyntax zu verwenden, lassen Sie das Gleichheitszeichen (=) am Anfang der Eingabe weg.

2.39

Im Release vom Dezember 2023:

  • Wenn die bereitgestellte Eingabe nicht mit dem Gleichheitszeichen beginnt, gelten die folgenden Regeln:
    • Numerische Werte ohne Leerzeichen werden als numerische Werte interpretiert.
    • True/False als Eingabe, unabhängig von der Groß-/Kleinschreibung und ohne Leerzeichen, werden als boolesche Werte interpretiert.
    • Alle anderen Eingaben werden als Texttypwerte berücksichtigt.