Επισκόπηση Microsoft Power Fx

Το Power Fx είναι η γλώσσα χαμηλού κώδικα που θα χρησιμοποιηθεί στο Microsoft Power Platform. Είναι μια γλώσσα προγραμματισμού γενικής χρήσης, με ισχυρό τύπο, δηλωτική και λειτουργική.

Το Power Fx εκφράζονται σε κείμενο φιλικό για τον χρήστη. Είναι μια γλώσσα χαμηλού κώδικα, με την οποία οι δημιουργοί μπορούν να εργάζονται απευθείας σε μια γραμμή τύπων του Excel ή σε ένα παράθυρο κειμένου του Visual Studio Code. Το "χαμηλό" στο χαμηλό κώδικα οφείλεται στη συνοπτική και απλή φύση της γλώσσας, που διευκολύνει τις κοινές εργασίες προγραμματισμού τόσο για τους δημιουργούς όσο και για τους προγραμματιστές. Ενεργοποιεί το πλήρες φάσμα της ανάπτυξης, από το χωρίς κώδικα για εκείνους που δεν έχουν κάνει ποτέ προγραμματισμό πριν τον "προ κώδικα" για τους έμπειρους επαγγελματίες, χωρίς εμπειρία εκμάθησης ή επανασύνταξης επιτρέποντας στις ομάδες υποστήριξης να συνεργάζονται και να εξοικονομούν χρόνο και δαπάνες.

Σημείωμα

  • Το Microsoft Power Fx είναι το νέο όνομα για τη γλώσσα τύπου για εφαρμογές καμβά στο Power Apps. Η επισκόπηση και τα σχετικά άρθρα είναι σε εξέλιξη καθώς εξάγουμε τη γλώσσα από εφαρμογές καμβά, την ενοποιούμε με άλλα προϊόντα Microsoft Power Platform και την κάνουμε διαθέσιμη ως ανοιχτό κώδικα. Για να μάθετε περισσότερα σχετικά με και να δείτε τη γλώσσα σήμερα, ξεκινήστε με τα Γρήγορα αποτελέσματα με τύπους σε εφαρμογές καμβά στην τεκμηρίωση του Power Apps και εγγραφείτε για μια δωρεάν δοκιμή του Power Apps.
  • Σε αυτό το άρθρο, αναφερόμαστε στους δημιουργούς όταν περιγράφουμε μια δυνατότητα που μπορεί να χρησιμοποιηθεί σε κάποιο από τα δύο άκρα του φάσματος των δεξιοτήτων του προγραμματισμού. Αναφερόμαστε στον χρήστη ως προγραμματιστή, εάν η δυνατότητα είναι πιο σύνθετη και είναι πιθανό να υπερβαίνει το πεδίο ενός τυπικού χρήστη Excel.

Το Power Fx δεσμεύει αντικείμενα μαζί με δηλωτικούς τύπους που μοιάζουν με φύλλα εργασίας. Για παράδειγμα, σκεφτείτε την ιδιότητα Ορατό ενός στοιχείου ελέγχου περιβάλλοντος εργασίας χρήστη ως κελί σε ένα φύλλο εργασίας του Excel, με έναν συσχετισμένο τύπο που υπολογίζει την τιμή του με βάση τις ιδιότητες άλλων στοιχείων ελέγχου. Η λογική του τύπου υπολογίζει εκ νέου την τιμή αυτόματα, όπως και το υπολογιστικό φύλλο, γεγονός που επηρεάζει την ορατότητα του στοιχείου ελέγχου.

Επίσης, το Power Fx προσφέρει υποχρεωτική λογική όταν χρειάζεται. Τα φύλλα εργασίας δεν διαθέτουν συνήθως κουμπιά τα οποία μπορούν να υποβάλλουν αλλαγές σε μια βάση δεδομένων, αλλά οι εφαρμογές συνήθως έχουν. Η ίδια γλώσσα έκφρασης χρησιμοποιείται τόσο για τη δηλωτική όσο και για την υποχρεωτική λογική.

Το Power Fx θα είναι διαθέσιμο ως λογισμικό ανοιχτού κώδικα. Προς το παρόν, είναι ενσωματωμένο σε εφαρμογές καμβά και είμαστε στη διαδικασία εξαγωγής του από το Power Apps για χρήση σε άλλα προϊόντα Microsoft Power Platform και ως ανοιχτό κώδικα. Περισσότερες πληροφορίες: Microsoft Power Fx στο GitHub

Αυτό το άρθρο αποτελεί επισκόπηση της γλώσσας και των αρχών σχεδιασμού της. Για αν μάθετε περισσότερα σχετικά με το Power Fx, δείτε τα ακόλουθα άρθρα:

Σκεφτείτε ένα υπολογιστικό φύλλο

Τι γίνεται εάν θα μπορούσατε να δημιουργήσετε μια εφαρμογή τόσο εύκολα όσο δημιουργείτε ένα φύλλο εργασίας στο Excel;

Τι θα γινόταν εάν μπορούσατε να εκμεταλλευτείτε τις υπάρχουσες γνώσεις σας σχετικά με το υπολογιστικό φύλλο;

Αυτές ήταν οι ερωτήσεις που ενέπνευσαν τη δημιουργία του Power Apps και του Power Fx. Εκατοντάδες εκατομμύρια άνθρωποι δημιουργούν καθημερινά φύλλα εργασίας με Excel. Ας τους εξασφαλίσουμε εύκολη δημιουργία εφαρμογών που χρησιμοποιεί έννοιες του Excel που γνωρίζουν ήδη. Αποσπώντας το Power Fx από το Power Apps, θα απαντήσουμε σε αυτές τις ερωτήσεις σχετικά με την αυτοματοποίηση της δημιουργίας, έναν εικονικό εκπρόσωπο ή άλλους τομείς.

Όλες οι γλώσσες προγραμματισμού, συμπεριλαμβανομένων της Power Fx, έχουν παραστάσεις: ένας τρόπος αναπαράστασης ενός υπολογισμού πάνω από αριθμούς, συμβολοσειρές ή άλλους τύπους δεδομένων. Για παράδειγμα, το mass * acceleration στις περισσότερες γλώσσες εκφράζει τον πολλαπλασιασμό του mass και του acceleration. Το αποτέλεσμα μιας παράστασης μπορεί να τοποθετηθεί σε μια μεταβλητή, να χρησιμοποιηθεί ως όρισμα σε μια διαδικασία ή να εισαχθεί ως ένθετο σε μεγαλύτερη έκφραση.

Το Power Fx κάνει ένα βήμα μπροστά. Μια παράσταση από μόνη της δεν λέει τίποτα σχετικά με το τι είναι υπολογισμός. Ο δημιουργός είναι αυτός που θα την τοποθετήσει σε μια μεταβλητή ή θα τη μεταβιβάσει σε μια συνάρτηση. Στο Power Fx, αντί να συντάξετε μόνο μια παράσταση που δεν έχει συγκεκριμένο νόημα, γράφετε έναν τύπο που συνδέει την παράσταση με ένα αναγνωριστικό. Γράφετε force = mass * acceleration ως τύπο για υπολογισμό του force. Καθώς το mass ή το acceleration αλλάζει, το force ενημερώνεται αυτόματα σε μια νέα τιμή. Η παράσταση περιέγραψε έναν υπολογισμό, ένας τύπος έδωσε σε αυτόν τον υπολογισμό ένα όνομα και το χρησιμοποίησε ως μέθοδο υπολογισμού. Για αυτό αναφερόμαστε στο Power Fx ως γλώσσα τύπου.

Για παράδειγμα, αυτός ο τύπος από την "Υπερχείλιση στοίβας" αναζητά μια συμβολοσειρά με αντίστροφη σειρά. Στο Excel, φαίνεται σαν την εικόνα που ακολουθεί.

Αντίστροφη αναζήτηση

Στιγμιότυπο οθόνης μιας γραμμής τύπων στο Excel με τον τύπο: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Το κελί A1περιέχει το κείμενο "Γεια σου, Κόσμε! Χάρηκα για τη γνωριμία! Το κελί A2 περιέχει το κείμενο "εσύ!"

Το Power Fx λειτουργεί με τον ίδιο τύπο, με τις αναφορές κελιών να έχουν αντικατασταθεί με αναφορές ιδιοτήτων στοιχείου ελέγχου:

Αντίστροφη αναζήτηση Power Fx.

Στιγμιότυπο οθόνης μιας γραμμής τύπου του Power Fx στο Power Apps. Ο τύπος είναι =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) το πλαίσιο εισαγωγής κάτω από τον τύπο, το κείμενο "Hello, World! Χάρηκα για τη γνωριμία!" εμφανίζεται η γράμμα προς γράμμα. Ταυτόχρονα, στο πλαίσιο "Ετικέτα", εμφανίζονται τα γράμματα της τελευταίας λέξης. Όταν το πλήρες κείμενο εμφανίζεται στο πλαίσιο εισαγωγής, η λέξη "you!" εμφανίζεται στο πλαίσιο Ετικέτα.

Καθώς η τιμή του στοιχείου ελέγχου Input αλλάζει, το στοιχείο ελέγχου Label υπολογίζει εκ νέου τον τύπο και εμφανίζει τη νέα τιμή. Δεν υπάρχουν προγράμματα χειρισμού συμβάντων OnChange εδώ, όπως θα ήταν σύνηθες σε άλλες γλώσσες.

Άλλο ένα παράδειγμα που χρησιμοποιεί έναν τύπο για το χρώμα Fill της οθόνης. Καθώς αλλάζουν τα ρυθμιστικά που ελέγχουν το κόκκινο, το πράσινο και το μπλε, το χρώμα φόντου αλλάζει αυτόματα καθώς υπολογίζεται εκ νέου.

Ρυθμιστικό χρωμάτων.

Δεν υπάρχουν συμβάντα OnChange για τα στοιχεία ελέγχου ρυθμιστικού όπως θα ήταν σύνηθες σε άλλες γλώσσες. Δεν υπάρχει τρόπος για να ορίσετε ρητά την τιμή της ιδιότητας Fill. Εάν το χρώμα δεν λειτουργεί όπως πρέπει, πρέπει να δείτε αυτόν τον έναν τύπο για να κατανοήσετε γιατί δεν λειτουργεί. Δεν χρειάζεται να κάνετε αναζήτηση στην εφαρμογή για να βρείτε ένα τμήμα κώδικα που ορίζει την ιδιότητα σε μη αναμενόμενη ώρα. Δεν υπάρχει στοιχείο χρόνου. Οι σωστές τιμές τύπου διατηρούνται πάντα.

Καθώς τα ρυθμιστικά έχουν οριστεί σε σκούρο χρώμα, οι ετικέτες για το Κόκκινο, το Πράσινο και το Μπλε αλλάζουν σε λευκό για αντιστάθμιση. Αυτό γίνεται μέσω ενός απλού τύπου στην ιδιότητα Color για κάθε στοιχείο ελέγχου ετικέτας.

Ρυθμιστικά χρωμάτων Power Fx.

Το καλό με αυτό είναι ότι είναι απομονωμένο από αυτό που συμβαίνει για το χρώμα Fill: πρόκειται για δύο εντελώς διαφορετικούς υπολογισμούς. Αντί για μεγάλες μονολιθικές διαδικασίες, η λογική Power Fx συνήθως αποτελείται από πολλούς μικρότερους τύπους που είναι ανεξάρτητοι. Αυτό τους κάνει πιο κατανοητούς και επιτρέπει βελτιώσεις χωρίς να χρειάζεται να ενοχλούν την υπάρχουσα λογική.

Το Power Fx είναι μια δηλωτική γλώσσα, όπως το Excel. Ο δημιουργός καθορίζει τη συμπεριφορά που θέλει, αλλά από το σύστημα εξαρτάται να καθορίσει και να βελτιστοποιήσει πώς και πότε θα την ολοκληρώσει. Για να γίνει αυτό πρακτικό, η περισσότερη εργασία γίνεται μέσω καθαρών συναρτήσεων χωρίς ανεπιθύμητες ενέργειες, καθιστώντας το Power Fx επίσης μια λειτουργική γλώσσα (και πάλι, όπως είναι το Excel).

Live πάντα

Μια πτυχή που καθορίζει τα φύλλα εργασίας είναι ότι είναι πάντα ζωντανά και οι αλλαγές αντικατοπτρίζονται άμεσα. Δεν υπάρχει λειτουργία μεταγλώττισης ή εκτέλεσης σε ένα φύλλο εργασίας. Όταν τροποποιείται ένας τύπος ή εισάγεται μια τιμή, το φύλλο εργασίας υπολογίζεται εκ νέου αμέσως για να απεικονίσει τις αλλαγές. Τυχόν σφάλματα που εντοπίζονται αναδεικνύονται αμέσως και δεν επηρεάζουν το υπόλοιπο φύλλο εργασίας.

Το ίδιο πράγμα υλοποιείται με το Power Fx. Ένα επαυξητικό πρόγραμμα μεταγλώττισης χρησιμοποιείται για να διατηρεί συνεχώς το πρόγραμμα σε συγχρονισμό με τα δεδομένα στα οποία λειτουργεί. Οι αλλαγές μεταδίδονται αυτόματα μέσω του γραφήματος του προγράμματος, επηρεάζοντας τα αποτελέσματα των εξαρτώμενων υπολογισμών, γεγονός που ενδέχεται να οδηγεί ιδιότητες σε στοιχεία ελέγχου, όπως το χρώμα ή η θέση. Το επαυξητικό πρόγραμμα μεταγλώττισης παρέχει επίσης μια εμπλουτισμένη εμπειρία επεξεργασίας τύπων με IntelliSense, προτάσεις, αυτόματη καταχώρηση και έλεγχο τύπων.

Στο παρακάτω κινούμενο σχέδιο, ο αριθμός παραγγελίας εμφανίζεται σε ένα στοιχείο ελέγχου ετικέτας που εξαρτάται από το στοιχείο ελέγχου ρυθμιστικού, παρόλο που υπάρχουν δύο σφάλματα στις ετικέτες κάτω από αυτό. Η εφαρμογή είναι πολύ ζωντανή και αλληλεπιδραστική. Η πρώτη προσπάθεια διόρθωσης του τύπου με εισαγωγή των αποτελεσμάτων .InvalidName σε μια άμεση κόκκινη γραμμή και σφάλμα που εμφανίζεται, όπως θα έπρεπε, αλλά η εφαρμογή συνεχίζει να εκτελείται.

Live πάντα.

Όταν εισάγεται .Employee, αυτό έχει ως αποτέλεσμα το τμήμα παραθύρου Data να προσθέτει τον πίνακα "Υπάλληλοι", γίνεται ανάκτηση των μετα-δεδομένων για αυτόν τον πίνακα και άμεση προσφορά προτάσεων για στήλες. Απλώς χρησιμοποιούμε μια σχέση από τον ένα πίνακα στον άλλο και το σύστημα κάνει τις απαραίτητες προσαρμογές στις αναφορές της εφαρμογής. Το ίδιο πράγμα συμβαίνει κατά την προσθήκη ενός .Customer.

Μετά από κάθε αλλαγή, το ρυθμιστικό συνεχίζει με την τελευταία τιμή του και οποιεσδήποτε μεταβλητές διατηρούν την τιμή τους. Σε όλη τη διάρκεια, ο αριθμός παραγγελίας συνέχιζε να εμφανίζεται στην επάνω ετικέτα όπως θα έπρεπε. Η εφαρμογή είναι live και επεξεργάζεται πραγματικά δεδομένα συνεχώς. Μπορούμε να την αποθηκεύσουμε, να αποχωρήσουμε και άλλα άτομα να την ανοίξουν και να τη χρησιμοποιήσουν όπως το Excel. Δεν υπάρχει βήμα δόμησης, δεν υπάρχει μεταγλώττιση, υπάρχει μόνο ένα βήμα δημοσίευσης για να καθοριστεί ποια έκδοση της εφαρμογής είναι έτοιμη για τους χρήστες.

Χαμηλός κώδικας

Το Power Fx περιγράφει την επιχειρηματική λογική με συνοπτικούς, αλλά πανίσχυρους, τύπους. Το μεγαλύτερο μέρος της λογικής μπορεί να μειωθεί σε μία γραμμή με αρκετή εκφραστικότητα και έλεγχο για πιο σύνθετες ανάγκες. Ο στόχος είναι να διατηρήσετε στο ελάχιστο τον αριθμό των εννοιών που πρέπει να κατανοήσει ένας δημιουργός, ιδανικά όχι περισσότερο από όσο θα γνωρίζει ήδη ένας χρήστης του Excel.

Για παράδειγμα, για να δείτε το όνομα ενός υπαλλήλου για μια παραγγελία, γράφετε το Power Fx όπως φαίνεται στο παρακάτω κινούμενο σχέδιο. Πέρα από τις έννοιες του Excel, η μόνη έννοια που προστέθηκε και χρησιμοποιείται εδώ είναι η σημειογραφία της τελείας "." για να κάνετε λεπτομερή ανάλυση σε μια δομή δεδομένων, σε αυτή την περίπτωση .Employee.'First Name'. Το κινούμενο σχέδιο δείχνει την αντιστοίχιση μεταξύ των τμημάτων του τύπου Power Fx και των εννοιών που πρέπει να γραφούν ρητά στην ισοδύναμη JavaScript.

JavaScript χαμηλού κώδικα.

Ας δούμε σε μεγαλύτερο βάθος όλα τα πράγματα που κάνει για εμάς το Power Fx και την ελευθερία που έχει να βελτιστοποιήσει επειδή ο τύπος ήταν δηλωτικός:

  • Ασύγχρονη: Όλες οι λειτουργίες δεδομένων στο Power Fx είναι ασύγχρονες. Ο δημιουργός δεν χρειάζεται να καθορίσει αυτό το θέμα ούτε χρειάζεται ο δημιουργός να συγχρονίσει τις λειτουργίες μετά το τέλος της κλήσης. Ο δημιουργός δεν χρειάζεται να γνωρίζει καθόλου αυτήν την έννοια, αλλά δεν χρειάζεται να γνωρίζει τι είναι η λειτουργία υπόσχεσης ή λάμδα.

  • Τοπική και απομακρυσμένη: Το Power Fx χρησιμοποιεί την ίδια σύνταξη και τις ίδιες συναρτήσεις για τα δεδομένα που είναι τοπικά στη μνήμη και απομακρυσμένα σε μια βάση δεδομένων ή υπηρεσία. Ο χρήστης δεν χρειάζεται να σκεφτεί αυτήν τη διάκριση. Το Power Fx εξουσιοδοτεί αυτόματα ό,τι μπορεί στον διακομιστή, σε φίλτρα διεργασιών και ταξινομεί εκεί πιο αποδοτικά.

  • Σχεσικά δεδομένα: Οι παραγγελίες και οι πελάτες είναι δύο διαφορετικοί πίνακες, με σχέση "πολλά προς ένα". Το ερώτημα OData απαιτεί ένα "$expand" με γνώσεις για το εξωτερικό κλειδί, παρόμοιο με τη Συμμετοχή σε SQL. Ο τύπος δεν περιέχει τίποτα από αυτά, στην ουσία, τα κλειδιά βάσης δεδομένων είναι μια άλλη έννοια που δεν χρειάζεται να γνωρίζει ο δημιουργός. Ο δημιουργός μπορεί να χρησιμοποιήσει μια απλή τελεία για να έχει πρόσβαση σε ολόκληρο το γράφημα σχέσεων από μια καρτέλα.

  • Προβολή: Κατά τη σύνταξη ενός ερωτήματος, πολλοί προγραμματιστές γράφουν select * from table, το οποίο επαναφέρει όλες τις στήλες δεδομένων. Το Power Fx αναλύει όλες τις στήλες που χρησιμοποιούνται μέσω ολόκληρης της εφαρμογής, ακόμα και σε όλες τις εξαρτήσεις τύπων. Η προβολή βελτιώνεται αυτόματα και, πάλι, ο δημιουργός δεν χρειάζεται να γνωρίζει τι σημαίνει "προβολή".

  • Ανάκτηση μόνο των απαραίτητων: Σε αυτό το παράδειγμα, η συνάρτηση LookUp υποδηλώνει ότι μόνο μία καρτέλα πρέπει να ανακτηθεί και αυτό είναι το μόνο που επιστρέφεται. Εάν ζητούνται περισσότερες καρτέλες με τη χρήση της συνάρτησης Filter -για την οποία χιλιάδες καρτέλες ενδέχεται να δικαιούνται- μόνο μία σελίδα δεδομένων επιστρέφονται ταυτόχρονα, με τη σειρά των 100 καρτελών ανά σελίδα. Ο χρήστης πρέπει να κάνει χειρονομία σε μια συλλογή ή έναν πίνακα δεδομένων για να βλέπει περισσότερα δεδομένα και θα εμφανίζεται αυτόματα για αυτόν. Ο δημιουργός μπορεί να αιτιολογεί μεγάλα σύνολα δεδομένων χωρίς να χρειάζεται να σκεφτεί τον περιορισμό των αιτήσεων δεδομένων σε διαχειρίσιμα μπλοκ.

  • Εκτελείται μόνο όταν είναι απαραίτητο: Έχουμε ορίσει έναν τύπο για την ιδιότητα Text του στοιχείου ελέγχου ετικέτας. Καθώς αλλάζει η επιλεγμένη μεταβλητή, το LookUp υπολογίζεται ξανά αυτόματα και η ετικέτα ενημερώνεται. Ο δημιουργός δεν χρειάστηκε να γράψει κάποιο εργαλείο χειρισμού OnChange για την επιλογή και δεν χρειάστηκε να θυμηθεί ότι αυτή η ετικέτα εξαρτάται από αυτήν. Πρόκειται για προγραμματισμό με δηλώσεις όπως συζητήσαμε προηγουμένως, ο δημιουργός έχει καθορίσει τι θέλει να έχει στην ετικέτα και όχι πώς ή πότε θα πρέπει να ληφθεί. Εάν αυτή η ετικέτα δεν είναι ορατή επειδή βρίσκεται σε μια οθόνη η οποία δεν είναι ορατή ή η ιδιότητα της Visible είναι ψευδής, μπορούμε να αναβάλουμε αυτόν τον υπολογισμό μέχρι η ετικέτα να είναι ορατή και να την εξαλείψει αποτελεσματικά, εάν αυτό συμβαίνει σπάνια.

  • Μετάφραση σύνταξης Excel: Το Excel χρησιμοποιείται από πολλούς χρήστες, οι περισσότεροι από τους οποίους γνωρίζουν ότι το εμπορικό "και" (&) χρησιμοποιείται για συνένωση συμβολοσειρών. Η JavaScript χρησιμοποιεί ένα σύμβολο συν (+) και άλλες γλώσσες χρησιμοποιούν μια τελεία (.).

  • Εμφανιζόμενα ονόματα και τοπική προσαρμογή: Το First Name χρησιμοποιείται στον τύπο Power Fx ενώ το nwind_firstname χρησιμοποιείται σε ισοδύναμο JavaScript. Στα Microsoft Dataverse και SharePoint, υπάρχει ένα εμφανιζόμενο όνομα για στήλες και πίνακες εκτός από ένα μοναδικό λογικό όνομα. Τα εμφανιζόμενα ονόματα είναι συχνά πολύ πιο φιλικά προς τον χρήστη, όπως στη συγκεκριμένη περίπτωση, αλλά έχουν μια άλλη σημαντική ποιότητα, καθώς μπορούν να προσαρμοστούν τοπικά. Εάν έχετε μια πολύγλωσση ομάδα, κάθε μέλος της ομάδας μπορεί να βλέπει τα ονόματα πινάκων και πεδίων στη γλώσσα του. Σε όλες τις περιπτώσεις χρήσης, το Power Fx εξασφαλίζει ότι το σωστό λογικό όνομα αποστέλλεται αυτόματα στη βάση δεδομένων.

Χωρίς κώδικα

Δεν χρειάζεται να διαβάσετε και να γράψετε το Power Fx για να αρχίσετε να εκφράζετε τη λογική. Υπάρχουν πολλές προσαρμογές και λογική που μπορούν να εκφραστούν μέσω απλών εναλλαγών και προγραμμάτων δημιουργίας περιβάλλοντος εργασίας χρήστη. Αυτά τα εργαλεία χωρίς κώδικα έχουν δημιουργηθεί για ανάγνωση και εγγραφή Power Fx, για να εξασφαλιστεί ότι υπάρχει αρκετός χρόνος για να την προχωρήσει κάποιος περαιτέρω, ενώ παράλληλα θα αναγνωρίζει ότι τα εργαλεία χωρίς κώδικα δεν θα προσφέρουν ποτέ όλη την εκφραστικά της πλήρους γλώσσας. Ακόμη και όταν χρησιμοποιείται με δημιουργούς χωρίς κώδικα, η γραμμή τύπων είναι μπροστά και στο κέντρο του Power Apps για να εκπαιδεύσει τον δημιουργό σχετικά με τα όσα γίνονται για λογαριασμό του, ώστε να μπορεί να αρχίσει να μαθαίνει το Power Fx.

Ας δούμε μερικά παραδείγματα. Στο Power Apps, ο πίνακας ιδιοτήτων παρέχει εναλλαγές και κουμπιά χωρίς κώδικα για τις ιδιότητες των στοιχείων ελέγχου. Στην πρακτική, οι περισσότερες τιμές ιδιοτήτων είναι στατικές. Μπορείτε να χρησιμοποιήσετε το εργαλείο δόμησης χρωμάτων για να αλλάξετε το χρώμα φόντου του Gallery. Σημειώστε ότι η γραμμή τύπων αντικατοπτρίζει αυτήν την αλλαγή, ενημερώνοντας τον τύπο σε διαφορετική κλήση RGBA. Ανά πάσα στιγμή, μπορείτε να μεταβείτε στη γραμμή τύπων και να κάνετε ένα βήμα παρακάτω σε αυτό το παράδειγμα, χρησιμοποιώντας το ColorFade για να προσαρμόσετε το χρώμα. Η ιδιότητα χρώματος εξακολουθεί να εμφανίζεται στον πίνακα ιδιοτήτων, αλλά εμφανίζεται ένα εικονίδιο fx με κατάδειξη και κατευθύνεστε στη γραμμή τύπων. Αυτό λειτουργεί πλήρως με δύο τρόπους: η κατάργηση της κλήσης ColorFade επιστρέφει το χρώμα σε κάτι που μπορεί να κατανοήσει ο πίνακας ιδιοτήτων και μπορείτε να το χρησιμοποιήσετε ξανά για να ορίσετε ένα χρώμα.

Χρώμα χωρίς προγραμματισμό.

Ακολουθεί ένα πιο περίπλοκο παράδειγμα. Η συλλογή εμφανίζει μια λίστα υπαλλήλων από το Dataverse. Το Dataverse παρέχει προβολές των δεδομένων πίνακα. Μπορούμε να επιλέξουμε μία από αυτές τις προβολές και ο τύπος αλλάζει για να χρησιμοποιηθεί η συνάρτηση Filter με αυτό το όνομα προβολής. Τα δύο αναπτυσσόμενα μενού μπορούν να χρησιμοποιηθούν για την κλήση στον σωστό πίνακα και την προβολή χωρίς να χρησιμοποιήσετε τη γραμμή τύπων. Όμως, ας πούμε ότι θέλετε να προχωρήσετε περαιτέρω και να προσθέσετε μια ταξινόμηση. Αυτό μπορεί να γίνει στη γραμμή τύπων και ο πίνακας ιδιοτήτων εμφανίζει ξανά ένα εικονίδιο fx και κατευθύνει τις τροποποιήσεις στη γραμμή τύπων. Και πάλι, εάν απλοποιήσουμε τον τύπο σε κάτι που μπορεί να διαβάσει και να γράψει ο πίνακας ιδιοτήτων, μπορεί να χρησιμοποιηθεί ξανά.

Ταξινόμηση χωρίς προγραμματισμό.

Αυτά είναι απλά παραδείγματα. Πιστεύουμε ότι το Power Fx αποτελεί μια εξαιρετική γλώσσα για την περιγραφή των αλληλεπιδράσεων χωρίς κώδικα. Είναι συνοπτική, ισχυρή και εύκολη στην ανάλυση και παρέχει την υποστήριξη που τόσο συχνά απαιτείται με "χωρίς προ-κώδικα" έως χαμηλό κώδικα.

Προ κώδικας

Οι δημιουργοί χαμηλού κώδικα ορισμένες φορές δημιουργούν πράγματα που απαιτούν τη βοήθεια ενός ειδικού ή τα οποία έχει αναλάβει ένας επαγγελματίας προγραμματιστής για να διατηρηθούν και να βελτιωθούν. Οι επαγγελματίες εκτιμούν επίσης ότι η ανάπτυξη με χαμηλό κώδικα μπορεί να είναι ευκολότερη, ταχύτερη και λιγότερο δαπανηρή από ό,τι η δημιουργία ενός επαγγελματικού εργαλείου. Δεν απαιτούν όλες οι καταστάσεις τις πλήρεις δυνατότητες του Visual Studio.

Οι επαγγελματίες θέλουν να χρησιμοποιούν επαγγελματικά εργαλεία για να είναι πιο παραγωγικοί. Οι τύποι Power Fx μπορούν να αποθηκευτούν σε αρχεία προέλευσης YAML τα οποία μπορείτε εύκολα να επεξεργαστείτε με το Visual Studio Code, το Visual Studio ή οποιοδήποτε άλλο πρόγραμμα επεξεργασίας κειμένου και να ενεργοποιήσετε το Power Fx να τεθεί υπό έλεγχο προέλευσης με το GitHub, Azure DevOps ή οποιοδήποτε άλλο σύστημα ελέγχου κώδικα προέλευσης.

Visual Studio Code προ-κώδικα.

GitHub με υποστήριξη προγραμματισμού.

Το Power Fx υποστηρίζει στοιχεία που βασίζονται σε τύπους για κοινή χρήση και εκ νέου χρήση. Ανακοινώσαμε την υποστήριξη για παραμέτρους για ιδιότητες στοιχείων, ενεργοποιώντας τη δημιουργία καθαρών συναρτήσεων που ορίζονται από τον χρήστη με περισσότερες βελτιώσεις καθ' οδόν.

Επίσης, το Power Fx είναι σπουδαίο στο να συνδυάζετε στοιχεία και υπηρεσίες που έχουν δημιουργηθεί από επαγγελματίες. Οι έτοιμες συνδέσεις παρέχουν πρόσβαση σε εκατοντάδες προελεύσεις δεδομένων και υπηρεσίες web, οι προσαρμοσμένες συνδέσεις επιτρέπουν στο Power Fx την επικοινωνία με οποιαδήποτε υπηρεσία web REST και τα στοιχεία κώδικα επιτρέπουν την αλληλεπίδραση του Power Fx με πλήρως προσαρμοσμένη JavaScript στην οθόνη και τη σελίδα.

Αρχές σχεδιασμού

Απλό

Το Power Fx έχει σχεδιαστεί να στοχεύει στο κοινό του δημιουργού, τα μέλη του οποίου δεν έχουν εκπαιδευτεί ως προγραμματιστές. Όπου είναι δυνατό, χρησιμοποιούμε τις γνώσεις που αυτό το κοινό θα γνώριζε ήδη ή που μπορεί να τις κατανοήσει γρήγορα. Ο αριθμός των εννοιών που απαιτούνται για την επιτυχία διατηρείται στο ελάχιστο.

Η απλή διαδικασία είναι επίσης καλή για προγραμματιστές. Για το κοινό προγραμματιστών, στόχος μας είναι η γλώσσα χαμηλού κώδικα που μειώνει τον χρόνο που απαιτείται για τη δημιουργία μιας λύσης.

Συνέπεια Excel

Η γλώσσα Microsoft Power Fx δανείζεται πολλά από την γλώσσα τύπων του Excel. Επιδιώκουμε να αξιοποιήσουμε τις γνώσεις και την εμπειρία του Excel από τους πολλούς δημιουργούς που επίσης χρησιμοποιούν το Excel. Οι τύποι, οι τελεστές και η σημαντική των λειτουργιών βρίσκονται όσο το δυνατό πιο κοντά στο Excel.

Εάν το Excel δεν έχει απάντηση, στη συνέχεια κοιτάμε το SQL. Μετά το Excel, η SQL είναι η επόμενη πιο συχνά χρησιμοποιούμενη δηλωτική γλώσσα και μπορεί να παρέχει οδηγίες σχετικά με τις λειτουργίες δεδομένων και την έντονη πληκτρολόγηση που δεν χρησιμοποιείται από το Excel.

Δηλωτικό

Ο δημιουργός περιγράφει τι θέλει να κάνει η λογική του, όχι ακριβώς πώς ή πότε να το κάνει. Αυτό επιτρέπει στο πρόγραμμα μεταγλώττισης να βελτιστοποιήσει εκτελώντας λειτουργίες παράλληλα, αναβάλοντας την εργασία μέχρι να είναι απαραίτητη, καθώς και να κάνει προ-λήψη και εκ νέου χρήση των προσωρινά αποθηκευμένων δεδομένων.

Για παράδειγμα, σε ένα φύλλο εργασίας του Excel, ο συντάκτης καθορίζει την σχέσεις μεταξύ των κελιών, αλλά το Excel αποφασίζει πότε και με ποια σειρά αξιολογούνται οι τύποι. Ομοίως, οι τύποι σε μια εφαρμογή μπορούν να εκληφθούν ως "εκ νέου υπολογισμός", ανάλογα με τις ενέργειες του χρήστη, τις αλλαγές στη βάση δεδομένων ή τα συμβάντα χρονομέτρων.

Λειτουργικά

Ευνοούμε τις καθαρές συναρτήσεις που δεν έχουν ανεπιθύμητες ενέργειες. Αυτό έχει ως αποτέλεσμα λογική που είναι πιο κατανοητή και δίνει στο πρόγραμμα μεταγλώττισης τη μεγαλύτερη δυνατότητα βελτιστοποίησης.

Αντίθετα με το Excel, οι εφαρμογές από τη φύση τους κάνουν μεταλλαγή κατάστασης για παράδειγμα, οι εφαρμογές έχουν κουμπιά που αποθηκεύουν αλλαγές στην καρτέλα σε μια βάση δεδομένων. Ορισμένες λειτουργίες, επομένως, έχουν ανεπιθύμητες ενέργειες, αν και αυτό το περιορίζουμε όσο το δυνατόν περισσότερο.

Σύνταξη

Όπου είναι δυνατό, η λειτουργικότητα που προστίθεται συνθέτει καλά τις υπάρχουσες λειτουργίες. Οι ισχυρές λειτουργίες μπορούν να αποσυντεθούν σε μικρότερα μέρη, τα οποία μπορούν να χρησιμοποιηθούν ευκολότερα ανεξάρτητα.

Για παράδειγμα, ένα στοιχείο ελέγχου Συλλογή δεν διαθέτει ξεχωριστές ιδιότητες Sort και Filter. Αντί για αυτό, οι συναρτήσεις Sort και Filter συνδυάζονται σε μία ιδιότητα Items. Το περιβάλλον εργασίας χρήστη για την έκφραση συμπεριφοράς Sort και Filter βρίσκεται πάνω από την ιδιότητα Items χρησιμοποιώντας ένα αμφίδρομο πρόγραμμα επεξεργασίας για αυτήν την ιδιότητα.

Ισχυρού τύπου

Οι τύποι όλων των τιμών είναι γνωστοί κατά το χρόνο μεταγλώττισης. Αυτό επιτρέπει τον έγκαιρο εντοπισμό σφαλμάτων και εμπλουτισμένων προτάσεων κατά τη σύνταξη.

Οι πολυμορφικοί τύποι υποστηρίζονται, αλλά για να μπορούν να χρησιμοποιηθούν, ο τύπος τους πρέπει να καρφιτσωθεί σε έναν στατικό τύπο και αυτός ο τύπος πρέπει να είναι γνωστός κατά τη διάρκεια της μεταγλώττισης. Παρέχονται οι συναρτήσεις IsType και AsType για τους τύπους δοκιμών και ελέγχου.

Τύπος συμπεράσματος

Οι τύποι παράγονται από τη χρήση τους χωρίς να χρειάζεται να δηλωθούν. Για παράδειγμα, η ρύθμιση μιας μεταβλητής σε έναν αριθμό έχει ως αποτέλεσμα τον καθορισμό του τύπου μεταβλητής ως αριθμού.

Η χρήση τύπου που βρίσκεται σε διένεξη οδηγεί σε σφάλμα χρόνου μεταγλώττισης.

Διαχωριστικά δεκαδικών τοπικών ρυθμίσεων

Ορισμένες περιοχές του κόσμου χρησιμοποιούν την τελεία (.) ως το διαχωριστικό δεκαδικών, ενώ σε άλλες χρησιμοποιείται το κόμμα (,). Αυτό κάνει και το Excel. Αυτό συνήθως δεν γίνεται σε άλλες γλώσσες προγραμματισμού, οι οποίες γενικά χρησιμοποιούν μια μικρή κουκκίδα (.) ως διαχωριστικό δεκαδικών ψηφίων για όλους τους χρήστες σε όλο τον κόσμο. Για να είναι όσο το δυνατό πιο προσεγγίσιμο για τους δημιουργούς σε όλα τα επίπεδα, είναι σημαντικό το 3,14 να είναι ένας δεκαδικός αριθμός για ένα άτομο στη Γαλλία που έχει χρησιμοποιήσει αυτή τη σύνταξη για πάντα.

Η επιλογή του διαχωριστικού δεκαδικών ψηφίων επηρεάζει το διαχωριστικό λίστας, το οποίο χρησιμοποιείται για τα ορίσματα κλήσεων συνάρτησης και τον τελεστή σύνδεσης σε αλυσίδα.

Διαχωριστικό δεκαδικών της γλώσσας συντάκτη Διαχωριστικό δεκαδικών του Power Fx Διαχωριστικό λιστών του Power Fx Τελεστής σύνδεσης σε αλυσίδα του Power Fx
, (τελεία) , (τελεία) , (κόμμα) ; (ελληνικό ερωτηματικό)
, (κόμμα) , (κόμμα) ; (ελληνικό ερωτηματικό) ;; (διπλό ελληνικό ερωτηματικό)

Περισσότερες πληροφορίες: Καθολική υποστήριξη

Χωρίς προσανατολισμό σε αντικείμενο

Το Excel δεν είναι προσανατολισμένο σε αντικείμενα και κανένα από τα δύο δεν είναι Power Fx. Για παράδειγμα, σε ορισμένες γλώσσες, το μήκος μιας συμβολοσειράς εκφράζεται ως ιδιότητα της συμβολοσειράς, όπως το "Hello World".length σε JavaScript. Το Excel και το Power Fx αντίθετα αυτό το εκφράζει στα πλαίσια μιας συνάρτησης ως Len( "Hello World" ).

Τα στοιχεία με ιδιότητες και μεθόδους είναι προσανατολισμένα στο αντικείμενο και το Power Fx λειτουργεί εύκολα με αυτά. Όπου είναι δυνατό, όμως, προτιμούμε μια λειτουργική προσέγγιση.

Με δυνατότητα επέκτασης

Οι δημιουργοί μπορούν να δημιουργούν τα στοιχεία τους και τις συναρτήσεις τους χρησιμοποιώντας το ίδιο το Power Fx. Οι προγραμματιστές μπορούν να δημιουργήσουν τα στοιχεία και τις συναρτήσεις τους γράφοντας σε JavaScript.

Φιλικό για προγραμματιστές

Μολονότι οι προγραμματιστές είναι ο κύριος στόχος μας, προσπαθούμε να είμαστε φιλικοί προς τους προγραμματιστές όπου είναι δυνατό. Αν δεν έρχεται σε διένεξη με τις αρχές σχεδιασμού που περιγράφηκαν προηγουμένως, κάνουμε πράγματα με τρόπο που θα εκτιμήσουν οι προγραμματιστές. Για παράδειγμα, το Excel δεν έχει δυνατότητα προσθήκης σχολίων, επομένως χρησιμοποιούμε γραμμή που μοιάζει με C και ενσωματωμένα σχόλια.

Εξέλιξη γλώσσας

Η εξέλιξη των γλωσσών προγραμματισμού είναι απαραίτητη και δύσκολη. Όλοι - δικαίως- ανησυχούν ότι μια αλλαγή, ανεξάρτητα από τις προθέσεις της, μπορεί να σπάσει τον υπάρχοντα κώδικα και να απαιτεί από τους χρήστες να μάθουν ένα νέο μοτίβο. Το Power Fx θεωρεί τη συμβατότητα με προηγούμενες εκδόσεις στα σοβαρά, αλλά πιστεύουμε έντονα ότι δεν θα το πετυχαίνουμε την πρώτη φορά και θα μαθαίνουμε συλλογικά τι είναι καλύτερο ως κοινότητα. Πρέπει να εξελιχθούμε και το Power Fx να έχει σχεδιαστεί για υποστήριξη για εξέλιξης της γλώσσας εξ αρχής.

Κάθε έγγραφο Power Fx που αποθηκεύεται περιλαμβάνει μια σήμανση έκδοσης γλώσσας. Εάν θέλουμε να κάνουμε μια μη συμβατή αλλαγή, θα γράψουμε αυτό που θα ονομάζουμε "back ompat converter" που ξαναγράψει αυτόματα τον τύπο την επόμενη φορά που θα γίνει επεξεργασία. Εάν η αλλαγή είναι κάτι σημαντικό, για το οποίο πρέπει να εκπαιδεύουμε τον χρήστη, θα εμφανιστεί επίσης ένα μήνυμα με μια σύνδεση στα έγγραφα. Με τη χρήση αυτής της εγκατάστασης, εξακολουθούμε να μπορούμε να φορτώνουμε εφαρμογές που έχουν δημιουργηθεί με εκδόσεις προεπισκόπησης του Power Apps πολλών ετών πριν, παρά τις αλλαγές που έχουν συμβεί από τότε.

Για παράδειγμα, παρουσιάσαμε τη συνάρτηση ShowError για να εμφανιστεί ένα banner σφάλματος με κόκκινο φόντο.

Εμφάνιση σφάλματος.

Οι χρήστες το αγάπησαν αλλά μας ζήτησαν να εμφανίζεται ένα banner επιτυχίας (πράσινο φόντο) ή ένα banner με πληροφορίες (μπλε φόντο). Έτσι, σκεφτήκαμε μια πιο γενική συνάρτηση Notify που λαμβάνει ένα δεύτερο όρισμα για το είδος της ειδοποίησης. Θα μπορούσαμε απλώς να προσθέσουμε το Notify και να διατηρήσουμε το ShowError όπως ήταν, αλλά αντί για αυτό, αντικαταστήσαμε το ShowError με το Notify. Έχουμε καταργήσει μια συνάρτηση που είχε χρησιμοποιηθεί προηγουμένως στην παραγωγή και την αντικαταστήσαμε με κάτι άλλο. Επειδή θα υπήρχαν δύο τρόποι για να κάνετε το ίδιο, αυτό θα είχε προκαλέσει σύγχυση - ειδικά για τους νέους χρήστες - και, το πιο σημαντικό, θα ήταν πιο σύνθετο. Κανένας δεν παραπονέθηκε, όλοι εκτίμησαν την αλλαγή και στη συνέχεια προχώρησαν στην επόμενη δυνατότητα ειδοποίησης.

Με αυτόν τον τρόπο φαίνεται η ίδια εφαρμογή όταν φορτώνεται στην πιο πρόσφατη έκδοση του Power Apps. Δεν απαιτήθηκε καμία ενέργεια από τον χρήστη για να συμβεί αυτός ο μετασχηματισμός, έγινε αυτόματα κατά το άνοιγμα της εφαρμογής.

Η συνάρτηση ειδοποίησης αντικαθιστά το ShowError.

Με αυτήν την εγκατάσταση, το Power Fx μπορεί να εξελιχθεί γρηγορότερα και πιο επιθετικά από ό,τι οι περισσότερες γλώσσες προγραμματισμού.

Καμία μη απροσδιόριστη τιμή

Ορισμένες γλώσσες, όπως η JavaScript, χρησιμοποιούν την έννοια μιας απροσδιόριστης τιμής για μη προετοιμασμένες μεταβλητές ή ιδιότητες που λείπουν. Χάρην απλότητας, αποφύγαμε αυτήν την έννοια. Οι παρουσίες που θα ήταν απροσδιόριστες σε άλλες γλώσσες αντιμετωπίζονται είτε ως σφάλμα είτε ως κενή τιμή. Για παράδειγμα, όλες οι μεταβλητές των οποίων η προετοιμασία έχει καταργηθεί ξεκινούν με μια κενή τιμή. Όλοι οι τύποι δεδομένων μπορούν να λαμβάνουν κενή τιμή.

Τύποι δεδομένων
Τελεστές και αναγνωριστικά
Πίνακες
Μεταβλητές
Υποχρεωτική λογική
Καθολική υποστήριξη
Γραμματική έκφρασης
Γραμματική τύπου YAML
Τύποι σε εφαρμογές καμβά