Présentation de Microsoft Power Fx

Power Fx est le langage à faible code utilisé par Microsoft Power Platform. Il s’agit d’un langage de programmation fonctionnel, fortement typé, déclaratif et à usage général.

Power Fx est exprimé dans un texte convivial. C’est un langage à faible code avec lequel les créateurs peuvent travailler directement dans une barre de formule de type Excel ou une fenêtre de texte de Visual Studio Code. Le « faible » en faible code provient de la nature concise et simple du langage, ce qui facilite les tâches de programmation courantes pour les créateurs et les développeurs. Il permet le développement complet de ceux qui n’ont jamais programmé avant de « pro-code » pour les professionnels chevronnés, sans apprentissage ni réécriture de falaises entre elles. Diverses équipes peuvent collaborer et gagner du temps et des dépenses.

Note

  • Microsoft Power Fx est le nouveau nom du langage de formule pour les applications canevas dans Power Apps. Cette vue d’ensemble et les articles associés sont un travail en cours, car Microsoft extrait le langage des applications canevas, l’intègre à d’autres produits Microsoft Power Platform et le rend disponible en tant que open source. Pour en savoir plus et découvrir ce langage dès aujourd’hui, commencez par Bien démarrer avec les formules dans les applications canevas dans la documentation Power Apps et inscrivez-vous gratuitement à un essai gratuit de Power Apps.
  • Dans cet article, les créateurs font référence aux utilisateurs susceptibles d’utiliser une fonctionnalité à la fin du spectre des compétences de programmation. Les développeurs font référence aux utilisateurs lorsque la fonctionnalité est plus avancée et est probablement au-delà de l’étendue d’un utilisateur Excel classique.

Power Fx lie des objets entre eux à l’aide de formules de type feuille de calcul déclaratives. Par exemple, pensez à la propriété Visible d’un contrôle d’interface utilisateur en tant que cellule dans une feuille de calcul Excel, avec une formule associée qui calcule sa valeur en fonction des propriétés d’autres contrôles. La logique de formule recalcule la valeur automatiquement, comme le fait une feuille de calcul, ce qui affecte la visibilité du contrôle.

En outre, Power Fx offre une logique impérative en cas de besoin. Les feuilles de calcul n’ont généralement pas de boutons permettant de soumettre des modifications à une base de données, mais les applications en ont souvent. Le même langage d’expression est utilisé pour la logique déclarative et impérative.

Microsoft rendre Power Fx disponible en tant que logiciel open source. Il est actuellement intégré aux applications de canevas et Microsoft est en train de l'extraire de Power Apps pour une utilisation dans d'autres produits Microsoft Power Platform et en tant que open source. Plus d’informations : Microsoft Power Fx on GitHub

Cet article est une présentation de ce langage et de ses principes de conception. Pour en savoir plus sur Power Fx, consultez les articles suivants :

Pensez « Feuille de calcul »

Et si vous pouviez créer une application aussi facilement que vous créez une feuille de calcul dans Excel ?

Et si vous pouviez tirer parti de vos connaissances actuelles en matière de feuilles de calcul ?

Ces questions ont inspiré la création de Power Apps et Power Fx. Des centaines de millions de personnes créent des feuilles de calcul avec des Excel tous les jours. Mettons-leur la création d'applications facile et utilise Excel concepts qu'ils connaissent déjà. En extrayant Power Fx de Power Apps, nous allons répondre à ces questions pour l’automatisation de la création, ou un agent virtuel ou d’autres domaines.

Tous les langages de programmation, y compris Power Fx, ont des expressions : moyen de représenter un calcul sur des nombres, des chaînes ou d’autres types de données. Par exemple, mass * acceleration dans la plupart des langages exprime la multiplication de mass (la masse) par acceleration (l’accélération). Vous pouvez placer le résultat d’une expression dans une variable, l’utiliser comme argument pour une procédure ou l’imbriquer dans une expression plus grande.

Power Fx va encore plus loin. Une expression en elle-même ne dit rien sur ce qu’elle calcule. C’est au créateur de la placer dans une variable ou de la passer à une fonction. Dans Power Fx, au lieu d’écrire uniquement une expression qui n’a pas de signification spécifique, vous écrivez une formule qui lie l’expression à un identifiant. Vous écrivez force = mass * acceleration comme formule de calcul force. En tant que mass ou acceleration modification, force met automatiquement à jour une nouvelle valeur. L’expression décrivait un calcul, une formule donnait un nom à ce calcul et l’utilisait comme recette. C’est pourquoi nous nous référons à Power Fx en tant que langage de formule.

Par exemple, cette formule de Stack Overflow recherche une chaîne dans l’ordre inverse. Dans Excel, cela ressemble à l’image suivante.

Recherche inversée

Capture d’écran d’une barre de formule dans Excel avec la formule : = =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) La cellule A1 contient le texte « Bonjour Tout le monde ! Je suis ravi de vous rencontrer ! » La cellule A2 contient le texte « vous ! »

Power Fx fonctionne avec cette même formule, avec les références de cellule remplacées par des références de propriété de contrôle :

Recherche inversée Power Fx.

Capture d’écran d’une barre de formule Power Fx dans Power Apps. La formule est = RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Dans la zone de saisie sous la formule, le texte « Bonjour Tout le monde ! Je suis ravi de vous rencontrer ! » apparaît, lettre par lettre. En même temps, dans la zone Étiquette, les lettres du dernier mot apparaissent. Lorsque le texte intégral apparaît dans la zone de saisie, le mot « vous ! » apparaît dans la zone Étiquette.

À mesure que la valeur du Input contrôle change, le Label contrôle recalcule automatiquement la formule et affiche la nouvelle valeur. Il n’y a pas de gestionnaires d’événements OnChange ici, comme ce serait le cas dans d’autres langages.

Un autre exemple utilise une formule pour la Fill couleur de l’écran. Lorsque les curseurs qui contrôlent le changement rouge, vert et bleu, la couleur d’arrière-plan change automatiquement au fur et à mesure qu’elle est recalculée.

Curseur des couleurs.

Il n’y a pas d’événements OnChange pour les contrôles de curseur comme cela serait le cas dans d’autres langages. Il n’y a aucun moyen de définir explicitement la valeur de propriété Fill. Si la couleur ne fonctionne pas comme prévu, vous devez examiner cette formule unique pour comprendre pourquoi elle ne fonctionne pas. Vous n’avez pas besoin de rechercher dans l’application pour trouver un morceau de code qui définit la propriété à un moment inattendu ; il n’y a pas d’élément temporel. Les valeurs de formule correctes sont toujours conservées.

Lorsque les curseurs sont définis sur une couleur sombre, les étiquettes du rouge, du vert et du bleu deviennent blanches pour compenser. Cette modification se produit par le biais d’une formule simple sur la Color propriété pour chaque contrôle d’étiquette.

Curseurs de couleur Power Fx.

Ce qui est génial à propos de cette formule est qu’elle est isolée de ce qui se passe pour la Fill couleur : il s’agit de deux calculs entièrement différents. Au lieu de grandes procédures monolithiques, la logique Power Fx est généralement composée de nombreuses formules plus petites indépendantes. Cette structure les rend plus faciles à comprendre et à activer les améliorations sans perturber la logique existante.

Power Fx est un langage déclaratif, tout comme Excel. Le créateur définit le comportement qu’il souhaite, mais c’est au système de déterminer et d’optimiser comment et quand l’accomplir. Pour rendre cela pratique, la plupart des travaux sont effectués via des fonctions pures sans effets secondaires, ce qui fait également de Power Fx un langage fonctionnel (à nouveau tout comme Excel).

Toujours actif

Un aspect déterminant des feuilles de calcul est qu’elles sont toujours actives et que les modifications sont reflétées instantanément. Il n’existe aucun mode de compilation ou d’exécution dans une feuille de calcul. Lorsque vous modifiez une formule ou entrez une valeur, la feuille de calcul recalcule immédiatement pour refléter les modifications. Toutes les erreurs détectées s’affichent immédiatement et n’interfèrent pas avec le reste de la feuille de calcul.

Power Fx implémente la même chose. Il utilise un compilateur incrémentiel pour maintenir en permanence le programme synchronisé avec les données sur laquelle il fonctionne. Les modifications se propagent automatiquement via le graphique du programme, ce qui affecte les résultats des calculs dépendants. Ces calculs peuvent générer des propriétés sur des contrôles tels que la couleur ou la position. Le compilateur incrémentiel fournit également une expérience d’édition de formule enrichie avec IntelliSense, de suggestions, de saisie semi-automatique et de vérification de type.

Dans l’animation suivante, le numéro de commande s’affiche dans un contrôle d’étiquette dépendant du contrôle curseur, même s’il existe deux erreurs sur les étiquettes situées en dessous. L’application est très vivante et interactive. La première tentative de fixation de la formule en entrant .InvalidName entraîne une ligne rouge immédiate et une erreur affichée, comme il se doit, mais l’application continue de fonctionner.

Toujours actif.

Lorsque vous entrez .Employee, le Data volet ajoute la table Employees, récupère les métadonnées de cette table et propose immédiatement des suggestions pour les colonnes. Vous venez de parcourir une relation d’une table à une autre, et le système a apporté les ajustements nécessaires aux références de l’application. La même chose se produit lors de l’ajout d’un fichier .Customer.

Après chaque modification, le curseur continue avec sa dernière valeur et toutes les variables conservent leur valeur. Tout au long, le numéro de commande continue d’être affiché dans l’étiquette supérieure comme il le devrait. L’application est en direct, traitant des données réelles, tout le temps. Vous pouvez l’enregistrer, marcher, et d’autres peuvent l’ouvrir et l’utiliser comme Excel. Il n’y a pas d’étape de génération, pas de compilation, il n’y a qu’une étape de publication pour déterminer la version de l’application prête pour les utilisateurs.

Faible code

Power Fx décrit la logique métier dans des formules concises mais puissantes. La plupart de la logique se réduit à une seule ligne, avec beaucoup d’expressivité et de contrôle pour des besoins plus complexes. L’objectif est de réduire au minimum le nombre de concepts qu’un créateur doit comprendre ; idéalement au nombre de concepts que maîtriserait un utilisateur d’Excel.

Par exemple, pour rechercher le prénom d’un employé pour une commande, vous écrivez le Power Fx comme indiqué dans l’animation suivante. Au-delà des concepts Excel, le seul concept ajouté utilisé ici est la notation point "." pour explorer une structure de données, dans ce cas .Employee.'First Name'. L’animation montre le mappage entre les parties de la formule Power Fx et les concepts qui doivent être explicitement codés dans le JavaScript équivalent.

JavaScript à faible code.

Examinons plus en détail toutes les choses que Power Fx fait pour nous et la liberté qu’il a à optimiser, car la formule est déclarative :

  • Asynchrone : toutes les opérations de données dans Power Fx sont asynchrones. Le créateur n’a pas besoin de le spécifier, ni de synchroniser les opérations une fois l’appel terminé. Le créateur n’a pas du tout besoin d’être conscient de ce concept, il n’a pas besoin de savoir ce qu’est une promesse ou une fonction lambda.

  • Local et distant : Power Fx utilise la même syntaxe et les mêmes fonctions pour les données locales en mémoire et connectent à distance une base de données ou un service. L’utilisateur n’a pas besoin de penser à cette distinction. Power Fx délègue automatiquement ce qu’il peut au serveur pour traiter les filtres et les tris plus efficacement.

  • Données relationnelles : Les commandes et les clients sont deux tables différentes, avec une relation plusieurs-à-un. La requête OData nécessite un « $expand » avec la connaissance de la clé étrangère, similaire à une commande « Join » en SQL. La formule n’a rien de tout cela. En fait, les clés de base de données sont un autre concept que le créateur n’a pas besoin de connaître. Le créateur peut utiliser une simple notation de point pour accéder au graphe des relations entier à partir d’un enregistrement.

  • Projection : Lors de l’écriture d’une requête, de nombreux développeurs écrivent select * from table qui renvoie toutes les colonnes de données. Power Fx analyse toutes les colonnes utilisées dans l’ensemble de l’application, même entre les dépendances de formule. La projection est automatiquement optimisée et, encore une fois, un créateur n’a pas besoin de savoir ce que signifie "projection".

  • Récupérez uniquement ce qui est nécessaire : Dans cet exemple, la fonction LookUp implique qu’un seul enregistrement doit être récupéré et c’est tout ce qui est retourné. Si plus d’enregistrements sont demandés en utilisant la fonction Filter, pour laquelle des milliers d’enregistrements pourraient être éligibles, une seule page de données est renvoyée à la fois, dans l’ordre de 100 enregistrements par page. L’utilisateur doit parcourir une galerie ou une table de données pour afficher plus de données, et il apporte automatiquement plus de données pour eux. Le créateur peut raisonner sur de grands ensembles de données sans avoir à penser à limiter les demandes de données à des blocs gérables.

  • S’exécute uniquement si nécessaire : vous définissez une formule pour la Text propriété du contrôle d’étiquette. Au fur et à mesure que la variable sélectionnée change, le LookUp est automatiquement recalculé et l’étiquette est mise à jour. Le créateur n’avait pas besoin d’écrire un gestionnaire OnChange pour la sélection, et n’avait pas besoin de se souvenir que cette étiquette en dépendait. Il s’agit d’une programmation déclarative comme mentionné précédemment. Le créateur a spécifié ce qu’il voulait avoir dans l’étiquette, pas comment ni quand elle devrait être récupérée. Si cette étiquette n’est pas visible, car elle se trouve sur un écran qui n’est pas visible ou sa Visible propriété est false, vous pouvez différer ce calcul jusqu’à ce que l’étiquette soit visible et l’éliminer efficacement si cela se produit rarement.

  • Excel traduction de syntaxe : de nombreux utilisateurs savent que l’ampersand (&) est utilisé pour la concaténation de chaînes dans Excel. JavaScript utilise un signe plus (+), et d’autres langues utilisent un point (.).

  • Noms d’affichage et localisation : First Name est utilisé dans la formule Power Fx tandis que nwind_firstname est utilisé dans l’équivalent JavaScript. Dans Microsoft Dataverse et SharePoint, il y a un nom complet pour les colonnes et les tables en plus d’un nom logique unique. Les noms d’affichage sont souvent beaucoup plus conviviaux, comme dans ce cas, mais ils ont une autre qualité importante en ce qu’ils peuvent être localisés. Si vous avez une équipe multilingue, chaque membre de l’équipe peut voir les noms des tables et des champs dans leur propre langue. Dans tous les cas d’utilisation, Power Fx s’assure que le nom logique correct est envoyé automatiquement à la base de données.

Sans code

Vous n’avez pas besoin de lire ou d’écrire Power Fx pour commencer à exprimer la logique. Vous pouvez exprimer de nombreuses personnalisations et logiques par le biais de commutateurs simples et de générateurs d’interface utilisateur. Ces outils sans code sont conçus pour lire et écrire Power Fx. Il y a donc beaucoup de salles d’attente pour que quelqu’un le prenne plus loin. Toutefois, les outils sans code n’offrent jamais toute l’expressivité du langage complet. Même lorsque vous utilisez des générateurs sans code, la barre de formule est frontale et centrale dans Power Apps pour informer le créateur de ce qui est fait pour leur compte afin qu'ils puissent commencer à apprendre Power Fx.

Examinons quelques exemples. Dans Power Apps, le volet des propriétés fournit des commutateurs et des boutons « sans code » pour les propriétés des contrôles. En pratique, la plupart des valeurs de propriété sont statiques. Vous pouvez utiliser le générateur de couleurs pour modifier la couleur d’arrière-plan de la Gallery. Notez que la barre de formule reflète ce changement, en mettant à jour la formule à un autre appel RGBA. À tout moment, vous pouvez accéder à la barre de formule et effectuer cette modification plus loin - dans cet exemple, en utilisant ColorFade pour ajuster la couleur. La propriété de couleur apparaît toujours dans le panneau des propriétés, mais une icône fx apparaît au survol et vous êtes dirigé.e vers la barre de formule. Cela fonctionne entièrement de deux manières : en supprimant l’appel ColorFade renvoie la couleur à quelque chose que le panneau des propriétés peut comprendre, et vous pouvez l’utiliser à nouveau pour définir une couleur.

Aucun code couleur.

Voici un exemple plus compliqué. La galerie affiche une liste d’employés de Dataverse. Dataverse fournit des vues des données de la table. Vous pouvez sélectionner l’une de ces vues et les modifications de formule pour utiliser la Filter fonction avec ce nom de vue. Vous pouvez utiliser les deux menus déroulants pour composer le tableau et la vue appropriés sans toucher à la barre de formule. Mais disons que vous voulez aller plus loin et ajouter un tri. Vous pouvez ajouter cette fonction dans la barre de formule, et le panneau de propriétés affiche à nouveau une icône fx et dirige les modifications apportées à la barre de formule. Et là encore, si vous simplifiez la formule en quelque chose que le panneau de propriétés peut lire et écrire, il peut être utilisé.

Tri sans code.

Ces exemples sont simples. Power Fx constitue un excellent langage pour décrire les interactions sans code. Il est concis, puissant et facile à analyser. Il fournit l’espace principal qui est si souvent nécessaire avec « pas de falaises » jusqu’à faible code.

Code professionnel

Les fabricants de faible code créent parfois des solutions qui nécessitent l’aide d’un expert ou sont prises en charge par un développeur professionnel pour maintenir et améliorer. Les professionnels apprécient également que le développement à faible code puisse être plus facile, plus rapide et moins coûteux que la création d’un outil professionnel. Toutes les situations ne nécessitent pas la pleine puissance de Visual Studio.

Les professionnels veulent utiliser des outils professionnels pour être les plus productifs. Vous pouvez stocker des formules Power Fx dans des fichiers sources YAML, qui sont faciles à modifier à l’aide de Visual Studio Code, de Visual Studio ou d’un autre éditeur de texte. Le stockage de formules dans des fichiers YAML vous permet de placer Power Fx sous contrôle de code source à l’aide de GitHub, de Azure DevOps ou d’un autre système de contrôle de code source.

Code pro Visual Studio Code.

Code pro GitHub.

Power Fx prend en charge les composants basés sur des formules pour le partage et la réutilisation. Il prend en charge les paramètres des propriétés de composant, ce qui permet de créer des fonctions définies par l’utilisateur pures avec plus d’améliorations sur le chemin.

En outre, Power Fx est excellent pour assembler des composants et des services conçus par des professionnels. Les connecteurs prêtes à l’emploi permettent d’accéder à des centaines de sources de données et de services web. Les connecteurs personnalisés permettent à Power Fx de communiquer avec n’importe quel service web REST. Les composants de code permettent à Power Fx d’interagir avec JavaScript entièrement personnalisé à l’écran et à la page.

Principes de conception

Simplicité

Power Fx est conçu pour cibler le public créateur, dont les membres ne sont pas formés en tant que développeurs. Dans la mesure du possible, la langue utilise les connaissances que ce public connaît déjà ou peut prendre rapidement. Le nombre de concepts requis pour réussir est réduit au minimum.

La simplicité est également bénéfique pour les développeurs. Pour le public du développeur, Power Fx vise à être un langage à faible code qui réduit le temps nécessaire à la création d’une solution.

Cohérence avec Excel

Le langage Microsoft Power Fx emprunte beaucoup au langage de formule Excel. Il tire parti des connaissances et de l’expérience de Excel de nombreux fabricants qui utilisent également Excel. Les types, les opérateurs et la sémantique des fonctions sont aussi proches de ceux d’Excel que possible.

Si Excel n'a pas de réponse, Power Fx recherche ensuite SQL. Après Excel, SQL est le prochain langage déclaratif le plus couramment utilisé et peut fournir des conseils sur les opérations de données et la frappe forte qu’Excel ne fait pas.

Déclaratif

Le créateur décrit ce qu’il veut que sa logique fasse, pas exactement comment ou alors quand le faire. Cette approche permet au compilateur d’optimiser en effectuant des opérations en parallèle, en reportant le travail jusqu’à ce que nécessaire, et en prérécupération et réutilisage des données mises en cache.

Par exemple, dans une feuille de calcul Excel, l’auteur définit les relations entre les cellules, mais Excel décide quand et dans quel ordre évaluer les formules. De même, vous pouvez considérer les formules dans une application comme « récalcing » selon les besoins en fonction des actions de l’utilisateur, des modifications de base de données ou des événements du minuteur.

Fonctionnel

Utilisez des fonctions pures qui n’ont pas d’effets secondaires. Cette approche entraîne une logique plus facile à comprendre et donne au compilateur la liberté d’optimiser.

Contrairement à Excel, les applications de leur nature mutent l’état. Par exemple, les applications ont des boutons qui enregistrent les modifications apportées à l’enregistrement dans une base de données. Certaines fonctions, par conséquent, ont des effets secondaires, bien que limiter ces effets secondaires autant que pratique.

Composition

Dans la mesure du possible, ajoutez des fonctionnalités qui composent bien les fonctionnalités existantes. Vous pouvez décomposer des fonctions puissantes en parties plus petites que vous pouvez utiliser plus facilement indépendamment.

Par exemple, un contrôle Galerie n’a pas séparé les propriétés Sort et Filter. Au lieu de cela, vous composez les Sort fonctions et Filter les composez ensemble en une seule Items propriété. Vous couchez l’interface utilisateur pour exprimer Sort et Filter comportement au-dessus de la propriété à l’aide Items d’un éditeur bidirectionnel pour cette propriété.

Typage fort

Les types de toutes les valeurs sont connus au moment de la compilation. Cette approche permet la détection précoce des erreurs et des suggestions enrichies lors de la création.

Les types polymorphes sont pris en charge, mais avant de pouvoir les utiliser, vous devez épingler leur type à un type statique et ce type doit être connu au moment de la compilation. Les fonctions IsType et AsType sont fournies pour le test et la conversion des types.

Inférence de type

Les types sont dérivés de leur utilisation sans être déclarés. Par exemple, si vous définissez une variable sur un nombre, le type de la variable est défini sous forme de nombre.

L’utilisation de types en conflit entraîne une erreur à la compilation.

Séparateurs décimaux sensibles aux paramètres régionaux

Certaines régions utilisent le point (.) comme séparateur décimal, contrairement à d’autres qui utilisent une virgule (,). Excel suit cette convention régionale. D’autres langages de programmation utilisent généralement un point canonique (.) comme séparateur décimal pour tous les utilisateurs dans le monde entier. Pour être aussi accessible que possible pour les créateurs à tous les niveaux, il est important que 3,14 soit un nombre décimal pour une personne en France qui a utilisé cette syntaxe toute sa vie.

Le choix du séparateur décimal a des répercussions en cascade sur le séparateur de liste, utilisé pour les arguments d’appel de fonction, et sur l’opérateur de chaînage.

Séparateur décimal de la langue de l’auteur Séparateur décimal Power Fx Séparateur de liste Power Fx Opérateur de chaînage Power Fx
. (point) . (point) , (virgule) ; (point-virgule)
, (virgule) , (virgule) ; (point-virgule) ;; (double point-virgule)

Plus d’informations : Assistance globale

Non orienté objet

Excel n’est pas orienté objet, pas plus que Power Fx. Par exemple, dans certaines langues, la longueur d’une chaîne est exprimée en tant que propriété de la chaîne, comme "Hello World".length en JavaScript. Excel et Power Fx expriment au contraire cela en termes de fonction, sous la forme Len( "Hello World" ).

Les composants avec des propriétés et des méthodes sont orientés objet et Power Fx fonctionne facilement avec. Mais si possible, préférez une approche fonctionnelle.

Extensibilité

Les créateurs peuvent créer leurs composants et leurs fonctions en utilisant Power Fx lui-même. Les développeurs peuvent créer leurs composants et leurs fonctions en écrivant du JavaScript.

Convivialité pour les développeurs

Bien que les fabricants soient la cible principale, essayez d’être convivial dans la mesure du possible. S’il n’est pas en conflit avec les principes de conception décrits précédemment, faites des choses de manière à ce qu’un développeur apprécie. Par exemple, Excel n’a aucune possibilité d’ajouter des commentaires. Utilisez donc des commentaires de type C et des commentaires inline.

Évolution du langage

L’évolution des langages de programmation est à la fois nécessaire et délicate. Tout le monde, à juste titre, se préoccupe du fait qu’un changement, aussi bien intentionné soit-il, puisse briser le code existant et obliger les utilisateurs à apprendre un nouveau modèle. Power Fx prend au sérieux la compatibilité descendante, mais l’équipe Power Fx croit également fortement qu’elle n’aura pas toujours raison la première fois et que la communauté peut collectivement apprendre ce qui est le mieux. Un langage de programmation doit évoluer et Power Fx a été conçu pour prendre en charge l’évolution du langage dès le début.

Chaque document Power Fx enregistré inclut un tampon de version linguistique. Si l’équipe Power Fx souhaite apporter une modification incompatible, ils écrivent ce qu’ils appellent un « convertisseur back compat » qui réécrit automatiquement la formule la prochaine fois qu’elle est modifiée. Si la modification est importante que l’équipe doit informer l’utilisateur, l’application affiche un message avec un lien vers la documentation. À l’aide de cette fonctionnalité, Power Fx peut toujours charger des applications qui ont été créées avec les versions préliminaires de Power Apps il y a de nombreuses années, malgré toutes les modifications qui se sont produites depuis.

Par exemple, l’équipe Power Fx a introduit la ShowError fonction pour afficher une bannière d’erreur avec un arrière-plan rouge.

Affichez l’erreur.

Les utilisateurs l’ont aimé, mais ils ont également demandé un moyen de montrer une bannière de réussite (arrière-plan vert) ou une bannière d’information (arrière-plan bleu). Ainsi, l’équipe a fourni une fonction plus générique Notify qui prend un deuxième argument pour le type de notification. L’équipe aurait pu juste ajouter Notify et garder ShowError la façon dont elle était, mais au lieu de cela ils ont remplacé ShowError par Notify. Ils ont supprimé une fonction qui était auparavant en production et l’a remplacée par quelque chose d’autre. Étant donné qu’il y aurait eu deux façons de faire la même chose, ce changement aurait causé de la confusion, en particulier pour les nouveaux utilisateurs, et, plus important encore, il aurait ajouté de la complexité. Personne ne s’est plaint, tout le monde a apprécié le changement et a adopté la nouvelle fonctionnalité Notify.

Voici à quoi ressemble la même application lorsqu’elle est chargée dans la dernière version de Power Apps. Aucune action n’a été requise de la part de l’utilisateur pour que cette transformation se produise, elle s’est produite automatiquement lors de l’ouverture de l’application.

La fonction de notification remplace ShowError.

Grâce à cette fonctionnalité, Power Fx peut évoluer plus rapidement et plus agressivement que la plupart des langages de programmation.

Aucune valeur non définie

Certains langages, tels que JavaScript, utilisent le concept d’une valeur indéfinie pour les variables non initialisées ou les propriétés manquantes. Par souci de simplicité, Power Fx évite ce concept. Les instances qui ne seraient pas définies dans d’autres langues sont traitées comme une erreur ou comme une valeur vide. Par exemple, toutes les variables non initialisées commencent par une valeur vide. Tous les types de données peuvent prendre la valeur vierge.

Types de données
Opérateurs et identificateurs
Tables
Variables
Logique impérative
Support global
Grammaire des expressions
Grammaire des formules YAML
Formules dans les applications canevas