APEX Tutorial: Apex Programming Class & Coding Examples
Τι είναι το Apex στο Salesforce;
Κορυφή είναι μια αντικειμενοστραφή και έντονα δακτυλογραφημένη γλώσσα προγραμματισμού που αναπτύχθηκε από τη Salesforce για τη δημιουργία λογισμικού ως υπηρεσία (SaaS) και Διαχείριση Σχέσεων Πελατών (CRM). Το Apex βοηθά τους προγραμματιστές να δημιουργήσουν εφαρμογές SaaS τρίτων και να προσθέσουν επιχειρηματική λογική στα συμβάντα του συστήματος παρέχοντας υποστήριξη βάσης δεδομένων back-end και διεπαφές πελάτη-διακομιστή.
Το Apex βοηθά τους προγραμματιστές να προσθέσουν επιχειρηματική λογική στα συμβάντα του συστήματος, όπως κλικ κουμπιών, σχετικές ενημερώσεις εγγραφών και σελίδες Visualforce. Το Apex έχει παρόμοια σύνταξη με Java. Εγγραφείτε στο Salesforce για να μάθετε πώς λειτουργεί το CRM
Χαρακτηριστικά της γλώσσας προγραμματισμού Apex
Ακολουθούν τα σημαντικά χαρακτηριστικά του Salesforce Apex:
- Το Apex είναι μια γλώσσα χωρίς διάκριση πεζών-κεφαλαίων.
- Μπορείτε να εκτελέσετε λειτουργίες DML όπως INSERT, UPDATE, UPSERT, DELETE σε εγγραφές sObject χρησιμοποιώντας apex.
- Μπορείτε να ρωτήσετε τις εγγραφές sObject χρησιμοποιώντας SOQL (γλώσσα ερωτήματος αντικειμένου salesforce) και SOSL (γλώσσα αναζήτησης αντικειμένων salesforce) στο apex.
- Σας επιτρέπει να δημιουργήσετε ένα δοκιμή μονάδας και εκτελέστε τα για να επαληθεύσετε το κάλυψη κώδικα και την αποτελεσματικότητα του κώδικα στο apex.
- Το Apex εκτελεί σε περιβάλλον πολλαπλών ενοικιαστών και Salesforce έχει ορίσει ορισμένα όρια κυβερνήτη που εμποδίζουν έναν χρήστη να ελέγχει τους κοινόχρηστους πόρους. Οποιοσδήποτε κωδικός υπερβαίνει το όριο του διοικητή της δύναμης πωλήσεων αποτυγχάνει, εμφανίζεται ένα σφάλμα.
- Το αντικείμενο Salesforce μπορεί να χρησιμοποιηθεί ως τύπος δεδομένων στο apex. Για παράδειγμα -
Account acc = new Account();
,εδώ ο Λογαριασμός είναι ένα τυπικό αντικείμενο πωλήσεων.
- Το Apex αναβαθμίζεται αυτόματα με κάθε κυκλοφορία του Salesforce.
Πότε πρέπει ο προγραμματιστής να επιλέξει το Apex
Ο κώδικας Apex θα πρέπει να γράφεται μόνο εάν ένα επιχειρηματικό σενάριο είναι πολύ περίπλοκο και δεν μπορεί να εφαρμοστεί χρησιμοποιώντας την προ-ενσωματωμένη λειτουργικότητα που παρέχεται από το Salesforce.
Ακολουθούν τα λίγα σενάρια όπου πρέπει να γράψουμε κώδικα κορυφής:
- Για να δημιουργήσετε υπηρεσίες web που ενσωματώνουν το Salesforce με άλλες εφαρμογές.
- Για την εφαρμογή προσαρμοσμένης επικύρωσης σε αντικείμενα.
- Για να εκτελέσετε προσαρμοσμένη λογική κορυφής όταν εκτελείται μια λειτουργία DML.
- Για την υλοποίηση λειτουργιών που δεν μπορούν να υλοποιηθούν χρησιμοποιώντας τις υπάρχουσες ροές εργασιών και τη λειτουργικότητα των προγραμμάτων δημιουργίας διεργασιών.
- Για ρύθμιση υπηρεσίες ηλεκτρονικού ταχυδρομείου, πρέπει να συμπεριλάβετε την επεξεργασία των περιεχομένων, των κεφαλίδων και των συνημμένων του email χρησιμοποιώντας τον κωδικό κορυφής.
Δομή εργασίας του Apex
Τώρα σε αυτό το σεμινάριο Apex, θα μάθουμε για τη δομή εργασίας του Apex:
Ακολουθεί η ροή των ενεργειών για έναν κωδικό κορυφής:
- Ενέργεια προγραμματιστή: Όλος ο κώδικας κορυφής που γράφτηκε από έναν προγραμματιστή μεταγλωττίζεται σε ένα σύνολο οδηγιών που μπορούν να γίνουν κατανοητές από τον διερμηνέα χρόνου εκτέλεσης κορυφής όταν ο προγραμματιστής αποθηκεύει τον κώδικα στην πλατφόρμα και αυτές οι οδηγίες αποθηκεύονται στη συνέχεια ως μεταδεδομένα στην πλατφόρμα.
- Ενέργεια τελικού χρήστη: Όταν το συμβάν χρήστη εκτελεί έναν κώδικα κορυφής, ο διακομιστής πλατφόρμας λαμβάνει τις μεταγλωττισμένες οδηγίες από τα μεταδεδομένα και τις εκτελεί μέσω του διερμηνέα κορυφής πριν επιστρέψει το αποτέλεσμα.
Σύνταξη Apex
Μεταβλητή δήλωση
Καθώς η apex είναι γλώσσα έντονης πληκτρολόγησης, είναι υποχρεωτικό να δηλώσετε μια μεταβλητή με τύπο δεδομένων στο apex.
Για παράδειγμα:
contact con = new contact();
Εδώ η μεταβλητή con δηλώνεται με την επαφή ως τύπο δεδομένων.
Ερώτημα SOQL
Το SOQL σημαίνει γλώσσα ερωτημάτων αντικειμένων salesforce. Το SOQL χρησιμοποιείται για την ανάκτηση εγγραφών sObject από τη βάση δεδομένων Salesforce. Για παράδειγμα-
Account acc = [select id, name from Account Limit 1];
Το παραπάνω ερώτημα ανακτά την εγγραφή λογαριασμού από τη βάση δεδομένων salesforce.
Δήλωση βρόχου
Η δήλωση βρόχου χρησιμοποιείται για επανάληψη πάνω από τις εγγραφές σε μια λίστα. Ο αριθμός των επαναλήψεων είναι ίσος με τον αριθμό των εγγραφών στη λίστα. Για παράδειγμα:
list<Account>listOfAccounts = [select id, name from account limit 100]; // iteration over the list of accounts for(Account acc : listOfAccounts){ //your logic }
Στο παραπάνω απόσπασμα κώδικα, το listOfAccounts είναι μια μεταβλητή τύπου δεδομένων λίστας.
Δήλωση ελέγχου ροής
Η δήλωση ελέγχου ροής είναι ευεργετική όταν θέλετε να εκτελέσετε ορισμένες γραμμές του κώδικα με βάση ορισμένες συνθήκες.
Για παράδειγμα:
list<Account>listOfAccounts = [select id, name from account limit 100]; // execute the logic if the size of the account list is greater than zero if(listOfAccounts.size() >0){ //your logic }
Το παραπάνω απόσπασμα κώδικα ρωτά τις εγγραφές λογαριασμού από τη βάση δεδομένων και ελέγχει το μέγεθος της λίστας.
Δήλωση DML
Το DML σημαίνει γλώσσα χειρισμού δεδομένων. Οι δηλώσεις DML χρησιμοποιούνται για τον χειρισμό δεδομένων στη βάση δεδομένων Salesforce. Για παράδειγμα -
Account acc = new Account(Name = ‘ Test Account’); Insert acc; //DML statement to create account record.
Περιβάλλον Ανάπτυξης Apex
Τώρα σε αυτό το σεμινάριο προγραμματισμού Apex, θα μάθουμε για το περιβάλλον ανάπτυξης Apex:
Ο κώδικας Apex μπορεί να αναπτυχθεί είτε στο sandbox είτε στην έκδοση προγραμματιστή του Salesforce.
Αποτελεί βέλτιστη πρακτική η ανάπτυξη του κώδικα στο περιβάλλον sandbox και στη συνέχεια η ανάπτυξη του στο περιβάλλον παραγωγής.
Εργαλεία ανάπτυξης κώδικα Apex: Ακολουθούν τα τρία διαθέσιμα εργαλεία για την ανάπτυξη κώδικα κορυφής σε όλες τις εκδόσεις του Salesforce.
- Κονσόλα προγραμματιστή Force.com
- Force.com IDE
- Επεξεργαστής κώδικα στη διεπαφή χρήστη Salesforce You
Τύπος δεδομένων στο Apex
Ακολουθούν οι τύποι δεδομένων που υποστηρίζονται από το apex:
Πρωτόγονος
Ακέραιος αριθμός, Double, Long, Date, Date Time, String, ID και Boolean θεωρούνται ως πρωτόγονοι τύποι δεδομένων. Όλοι οι πρωτόγονοι τύποι δεδομένων μεταβιβάζονται με τιμή και όχι με αναφορά.
Συλλογές
Τρεις τύποι συλλογής είναι διαθέσιμοι στο Apex
- Λίστα: Είναι μια ταξινομημένη συλλογή από πρωτόγονα, sObjects, συλλογές ή αντικείμενα Apex με βάση δείκτες.
- Σετ: Μια αδιάβλητη συλλογή από μοναδικά πρωτόγονα.
- Χάρτης: Είναι μια συλλογή από μοναδικά, πρωτόγονα κλειδιά που αντιστοιχίζονται σε μεμονωμένες τιμές που μπορεί να είναι πρωτόγονες, sObjects, συλλογές ή αντικείμενα Apex.
sΑντικείμενο
Αυτός είναι ένας ειδικός τύπος δεδομένων στο Salesforce. Είναι παρόμοιο με ένα τραπέζι σε SQL και περιέχει πεδία παρόμοια με στήλες στην SQL.
Τα ποσά
Το Enum είναι ένας αφηρημένος τύπος δεδομένων που αποθηκεύει μια τιμή ενός πεπερασμένου συνόλου καθορισμένων αναγνωριστικών
μαθήματα
Αντικείμενα
Αναφέρεται σε οποιονδήποτε τύπο δεδομένων που υποστηρίζεται στο Apex.
Διασυνδέσεις
Apex Access Specifier
Ακολουθούν ο προσδιοριστής πρόσβασης που υποστηρίζεται από το apex:
Δημόσιο
Αυτός ο προσδιοριστής πρόσβασης δίνει πρόσβαση σε μια κλάση, μέθοδο, μεταβλητή που θα χρησιμοποιηθεί από μια κορυφή εντός ενός χώρου ονομάτων.
Private
Αυτός ο προσδιοριστής πρόσβασης δίνει πρόσβαση σε μια κλάση, μέθοδο, μεταβλητή που θα χρησιμοποιηθεί τοπικά ή εντός της ενότητας του κώδικα, όπως ορίζεται. Όλη η τεχνική, οι μεταβλητές που δεν έχουν καθορισμένο προσδιοριστή πρόσβασης έχουν τον προεπιλεγμένο προσδιοριστή πρόσβασης private.
Προστατευόμενη
Αυτός ο προσδιοριστής πρόσβασης δίνει πρόσβαση σε μια μέθοδο, μεταβλητή που θα χρησιμοποιηθεί από οποιεσδήποτε εσωτερικές κλάσεις εντός του καθορισμού της κλάσης Apex.
Παγκόσμιο
Αυτός ο προσδιοριστής πρόσβασης δίνει πρόσβαση σε μια κλάση, μέθοδο, μεταβλητή που θα χρησιμοποιηθεί από μια κορυφή εντός ενός χώρου ονομάτων καθώς και εκτός του χώρου ονομάτων. Αποτελεί βέλτιστη πρακτική να μην χρησιμοποιείται καθολική λέξη-κλειδί μέχρι να χρειαστεί.
Λέξεις-κλειδιά στο Apex
Με κοινή χρήση
Εάν μια κλάση ορίζεται με αυτήν τη λέξη-κλειδί, τότε όλοι οι κανόνες κοινής χρήσης που ισχύουν για τον τρέχοντα χρήστη επιβάλλονται και εάν αυτή η λέξη-κλειδί απουσιάζει, τότε ο κώδικας εκτελείται στο πλαίσιο του συστήματος.
Για παράδειγμα:
public with sharing class MyApexClass{ // sharing rules enforced when code in this class execute }
Χωρίς κοινή χρήση
Εάν μια κλάση ορίζεται με αυτήν τη λέξη-κλειδί, τότε όλοι οι κανόνες κοινής χρήσης που ισχύουν για τον τρέχοντα χρήστη δεν επιβάλλονται.
Για παράδειγμα:
public without sharing class MyApexClass{ // sharing rules is not enforced when code in this class execute }
Στατικός
Μια μεταβλητή, Μέθοδος ορίζεται με τη στατική λέξη-κλειδί να αρχικοποιείται μία φορά και να συσχετίζεται με την κλάση. Οι στατικές μεταβλητές, οι μέθοδοι μπορούν να καλούνται απευθείας με το όνομα κλάσης χωρίς να δημιουργηθεί η παρουσία μιας κλάσης.
τέλος
Μια σταθερά, Μέθοδος ορίζεται με την τελική λέξη-κλειδί να μην μπορεί να παρακαμφθεί. Για παράδειγμα:
public class myCls { static final Integer INT_CONST = 10; }
Εάν προσπαθήσετε να παρακάμψετε την τιμή για αυτήν τη μεταβλητή INT_CONST, τότε θα λάβετε μια εξαίρεση – System.FinalException: Η τελική μεταβλητή έχει ήδη αρχικοποιηθεί.
απόδοση
Αυτή η λέξη-κλειδί επιστρέφει μια τιμή από μια μέθοδο. Για παράδειγμα:
public String getName() { return 'Test' ; }
Null
Ορίζει μια μηδενική σταθερά και μπορεί να αντιστοιχιστεί σε μια μεταβλητή. Για παράδειγμα
Boolean b = null;
Πραγματικός
Εάν μια κλάση ορίζεται με μια εικονική λέξη-κλειδί, μπορεί να επεκταθεί και να παρακαμφθεί.
Περίληψη
Εάν μια κλάση ορίζεται με αφηρημένη λέξη-κλειδί, πρέπει να περιέχει τουλάχιστον μία μέθοδο με αφηρημένη λέξη-κλειδί και αυτή η μέθοδος θα πρέπει να έχει μόνο μια υπογραφή.
Για παράδειγμα
public abstract class MyAbstrtactClass { abstract Integer myAbstractMethod1(); }
Apex String
Μια συμβολοσειρά είναι ένα σύνολο χαρακτήρων χωρίς όρια χαρακτήρων. Για παράδειγμα:
String name = 'Test';
Υπάρχουν πολλές ενσωματωμένες μέθοδοι που παρέχονται από την κλάση String στο salesforce. Ακολουθούν οι λίγες λειτουργίες που χρησιμοποιούνται συχνά και περισσότερο:
συντομογραφία (maxWidth)
Αυτή η μέθοδος περικόπτει μια συμβολοσειρά στο καθορισμένο μήκος και την επιστρέφει εάν το μήκος της δεδομένης συμβολοσειράς είναι μεγαλύτερο από το καθορισμένο μήκος. Διαφορετικά, επιστρέφει την αρχική συμβολοσειρά. Εάν η τιμή για τη μεταβλητή maxWidth είναι μικρότερη από 4, αυτή η μέθοδος επιστρέφει μια εξαίρεση χρόνου εκτέλεσης – System.StringException: Το ελάχιστο πλάτος συντομογραφίας είναι 4
Για παράδειγμα:
String s = 'Hello World'; String s2 = s.abbreviate(8); System.debug('s2'+s2); //Hello...
κεφαλοποιώ()
Αυτή η μέθοδος μετατρέπει το πρώτο γράμμα μιας συμβολοσειράς σε περίπτωση τίτλου και το επιστρέφει.
Για παράδειγμα:
String s = 'hello; String s2 = s.capitalize(); System.assertEquals('Hello', s2);
περιέχει (υποσυμβολοσειρά)
Αυτή η μέθοδος επιστρέφει true εάν η συμβολοσειρά που καλεί τη μέθοδο περιέχει την καθορισμένη υποσυμβολοσειρά.
String name1 = 'test1'; String name2 = 'test2'; Boolean flag = name.contains(name2); System.debug('flag::',+flag); //true
ισοδυναμεί (stringOrId)
Αυτή η μέθοδος επιστρέφει true εάν η παράμετρος που έχει περάσει δεν είναι μηδενική και υποδεικνύει την ίδια δυαδική ακολουθία χαρακτήρων με τη συμβολοσειρά που καλεί τη μέθοδο.
Κατά τη σύγκριση τιμών αναγνωριστικού, το μήκος των αναγνωριστικών μπορεί να μην είναι ίσο. Για παράδειγμα: εάν μια συμβολοσειρά που αντιπροσωπεύει αναγνωριστικό 15 χαρακτήρων συγκριθεί με ένα αντικείμενο που αντιπροσωπεύει αναγνωριστικό 18 χαρακτήρων, αυτή η μέθοδος επιστρέφει true. Για παράδειγμα:
Id idValue15 = '001D000000Ju1zH'; Id idValue18 = '001D000000Ju1zHIAR'; Boolean result4 = stringValue15.equals(IdValue18); System.debug('result4', +result4); //true
Στο παραπάνω παράδειγμα, η μέθοδος ίσον είναι η σύγκριση του ID αντικειμένου 15 χαρακτήρων με το αναγνωριστικό αντικειμένου 18 χαρακτήρων και εάν και τα δύο αυτά αναγνωριστικά αντιπροσωπεύουν την ίδια δυαδική ακολουθία, θα επιστρέψει true.
Χρησιμοποιήστε αυτή τη μέθοδο για να κάνετε συγκρίσεις με διάκριση πεζών-κεφαλαίων.
escapeSingleQuotes(stringToEscape)
Αυτή η μέθοδος προσθέτει έναν χαρακτήρα διαφυγής (\) πριν από οποιοδήποτε μεμονωμένο εισαγωγικό σε μια συμβολοσειρά και τον επιστρέφει. Αυτή η μέθοδος αποτρέπει την ένεση SOQL ενώ δημιουργεί ένα δυναμικό ερώτημα SOQL. Αυτή η μέθοδος διασφαλίζει ότι όλα τα μεμονωμένα εισαγωγικά θεωρούνται ως περικλείουσες συμβολοσειρές, αντί για εντολές βάσης δεδομένων.
Για παράδειγμα:
String s = 'Hello Tom'; system.debug(s); // Outputs 'Hello Tom' String escapedStr = String.escapeSingleQuotes(s); // Outputs \'Hello Tom\'
αφαίρεση (υποσυμβολοσειρά)
Αυτή η μέθοδος αφαιρεί όλη την εμφάνιση της αναφερόμενης υποσυμβολοσειράς από τη συμβολοσειρά που καλεί τη μέθοδο και επιστρέφει τη συμβολοσειρά που προκύπτει.
Για παράδειγμα
String s1 = 'Salesforce and force.com'; String s2 = s1.remove('force'); System.debug( 's2'+ s2);// 'Sales and .com'
υποσυμβολοσειρά (startIndex)
Αυτή η μέθοδος επιστρέφει μια υποσυμβολοσειρά που ξεκινά από τον χαρακτήρα στο startIndex εκτείνεται μέχρι το τελευταίο της συμβολοσειράς.
Για παράδειγμα:
String s1 = 'hamburger'; String s2 = s1.substring(3); System.debug('s2'+s2); //burger
ΑΝΤΙΣΤΡΟΦΗ()
Αυτή η μέθοδος αντιστρέφει όλους τους χαρακτήρες μιας συμβολοσειράς και την επιστρέφει. Για παράδειγμα:
String s = 'Hello'; String s2 = s.reverse(); System.debug('s2::::'+s2);// olleH // Hello
trim(): Αυτή η μέθοδος αφαιρεί όλα τα κύρια λευκά κενά από μια συμβολοσειρά και την επιστρέφει.
valueOf(toConvert)
Αυτή η μέθοδος επιστρέφει την παράσταση συμβολοσειράς που έχει περάσει στο αντικείμενο.
Apex Governor Limits
Τα όρια κυβερνήτη κορυφής είναι τα όρια που επιβάλλονται από τη μηχανή χρόνου εκτέλεσης apex για να διασφαλιστεί ότι οποιοσδήποτε κώδικας και διεργασίες κορυφής διαδρόμου δεν ελέγχουν τους κοινόχρηστους πόρους και δεν παραβιάζουν την επεξεργασία για άλλους χρήστες στο περιβάλλον πολλαπλών μισθώσεων. Αυτά τα όρια επαληθεύονται σε κάθε συναλλαγή κορυφής. Ακολουθούν τα όρια του κυβερνήτη που ορίζονται από το τμήμα πωλήσεων σε κάθε συναλλαγή κορυφής:
Descriptιόν | Όριο |
---|---|
Ερωτήματα SOQL που μπορούν να γίνουν σε μια σύγχρονη συναλλαγή | 100 |
Ερωτήματα SOQL που μπορούν να γίνουν σε μια Ασύγχρονη συναλλαγή | 200 |
Εγγραφές που μπορούν να ανακτηθούν με ένα ερώτημα SOQL | 50000 |
Εγγραφές που μπορούν να ανακτηθούν από το Database.getQueryLocator | 10000 |
Ερωτήματα SOSL που μπορούν να γίνουν σε μια συναλλαγή κορυφής | 20 |
Εγγραφές που μπορούν να ανακτηθούν με ένα ερώτημα SOSL | 2000 |
Δηλώσεις DML που μπορούν να γίνουν σε μια συναλλαγή κορυφής | 150 |
Εγγραφές που μπορούν να υποβληθούν σε επεξεργασία ως αποτέλεσμα δήλωσης DML, Approval.process ή database.emptyRecycleBin | 10000 |
Επεξηγήσεις που μπορούν να γίνουν σε μια συναλλαγή κορυφής. | 100 |
Σωρευτικό όριο χρονικού ορίου για όλα τα μηνύματα προώθησης που εκτελούνται σε μια συναλλαγή κορυφής | 120 δευτερόλεπτα |
Περιορίστε τις εργασίες κορυφής που μπορούν να προστεθούν στην ουρά με το System.enqueueJob | 50 |
Χρονικό όριο εκτέλεσης για κάθε συναλλαγή Apex | 10 λεπτά |
Περιορίστε τους χαρακτήρες που μπορούν να χρησιμοποιηθούν σε μια κλάση κορυφής και ένα έναυσμα | 1 εκατομμύρια |
Χρονικό όριο CPU για σύγχρονη συναλλαγή | 10,000 χιλιοστά του δευτερολέπτου |
Χρονικό όριο CPU για ασύγχρονη συναλλαγή | 60,000 χιλιοστά του δευτερολέπτου |
Apex Getter και Setter
Η ιδιότητα Apex είναι παρόμοια με τη μεταβλητή apex. Το Getter και το Setter είναι απαραίτητα σε μια ιδιότητα κορυφής. Το Getter και το Setter μπορούν να χρησιμοποιηθούν για την εκτέλεση κώδικα πριν γίνει πρόσβαση ή αλλαγή της τιμής της ιδιότητας. Ο κώδικας στο get accessor εκτελείται όταν διαβάζεται μια τιμή ιδιότητας. Ο κωδικός στο σύνολο πρόσβασης εκτελείται όταν αλλάζει μια τιμή ιδιότητας. Οποιαδήποτε ιδιότητα που έχει get accessor θεωρείται μόνο για ανάγνωση, οποιαδήποτε ιδιότητα που έχει set accessor θεωρείται ότι γράφει μόνο οποιαδήποτε ιδιότητα που έχει και get και set accessor θεωρείται ως read-write. Σύνταξη μιας ιδιότητας κορυφής:
public class myApexClass { // Property declaration access_modifierreturn_typeproperty_name { get { //code } set{ //code } }
Εδώ, το access_modifier είναι ο τροποποιητής πρόσβασης της ιδιότητας. return_type είναι το dataType της ιδιότητας. Το όνομα_ιδιότητας είναι το όνομα της ιδιότητας.
Παρακάτω είναι ένα παράδειγμα ιδιότητας κορυφής που έχει και get και set accessor.
public class myApex{ public String name{ get{ return name;} set{ name = 'Test';} } }
Εδώ, το όνομα της ιδιότητας είναι όνομα και είναι δημόσια ιδιοκτησία και επιστρέφει μια συμβολοσειρά dataType.
Δεν είναι υποχρεωτικό να υπάρχει κάποιος κωδικός στο μπλοκ get and set. Αυτά τα μπλοκ μπορούν να μείνουν κενά για να οριστεί μια αυτόματη ιδιότητα. Για παράδειγμα:
public double MyReadWriteProp{ get; set; }
Το Get and set accessor μπορεί επίσης να οριστεί με τον τροποποιητή πρόσβασής του. Εάν ένα στοιχείο πρόσβασης ορίζεται με έναν τροποποιητή, τότε αντικαθιστά τον τροποποιητή πρόσβασης για την ιδιότητα. Για παράδειγμα:
public String name{private get; set;}// name is private for read and public to write.
Apex Class
Μια κλάση κορυφής είναι ένα προσχέδιο ή πρότυπο από το οποίο δημιουργούνται αντικείμενα. Ένα αντικείμενο είναι το παράδειγμα μιας κλάσης.
Υπάρχουν τρεις τρόποι δημιουργίας κλάσεων κορυφής στο Salesforce:
Κονσόλα προγραμματιστή
Force.com IDE
Σελίδα λεπτομερειών κλάσης Apex.
Στο apex, μπορείτε να ορίσετε μια εξωτερική κλάση που ονομάζεται επίσης κλάση ανώτατου επιπέδου και μπορείτε επίσης να ορίσετε κλάσεις μέσα σε μια εξωτερική κλάση που ονομάζεται εσωτερικές κλάσεις.
Είναι υποχρεωτική η χρήση τροποποιητή πρόσβασης όπως καθολικός ή δημόσιος στη δήλωση της εξωτερικής κλάσης.
Δεν είναι απαραίτητο να χρησιμοποιήσετε τροποποιητή πρόσβασης στη δήλωση εσωτερικών κλάσεων.
Μια κλάση κορυφής ορίζεται χρησιμοποιώντας λέξη-κλειδί κλάσης ακολουθούμενη από το όνομα της κλάσης.
Η λέξη-κλειδί Extends χρησιμοποιείται για την επέκταση μιας υπάρχουσας κλάσης κατά μια κλάση κορυφής και η λέξη-κλειδί υλοποίησης χρησιμοποιείται για την υλοποίηση μιας διεπαφής από μια κλάση κορυφής.
Το Salesforce Apex δεν υποστηρίζει πολλαπλές κληρονομιές, μια κλάση apex μπορεί να επεκτείνει μόνο μια υπάρχουσα κλάση κορυφής, αλλά μπορεί να εφαρμόσει πολλαπλές διεπαφές.
Μια κλάση κορυφής μπορεί να περιέχει κατασκευαστή που ορίζεται από το χρήστη και εάν δεν είναι διαθέσιμος κατασκευαστής που ορίζεται από το χρήστη, χρησιμοποιείται ένας προεπιλεγμένος κατασκευαστής. Ο κώδικας σε έναν κατασκευαστή εκτελείται όταν δημιουργείται μια παρουσία μιας κλάσης.
Παράδειγμα σύνταξης της κλάσης Apex:
public class myApexClass{ // variable declaration //constructor public myApexClass{ } //methods declaration }
Η νέα λέξη-κλειδί χρησιμοποιείται για τη δημιουργία μιας παρουσίας μιας κλάσης κορυφής. Παρακάτω είναι η σύνταξη για τη δημιουργία μιας παρουσίας μιας κλάσης κορυφής.
myApexClass obj = new myApexClass();
Apex Trigger
Οι ενεργοποιήσεις Apex σάς επιτρέπουν να εκτελέσετε προσαρμοσμένη κορυφή πριν και μετά την εκτέλεση μιας λειτουργίας DML.
Η υποστήριξη Apex ακολουθεί δύο τύπους ενεργοποίησης:
Πριν από τους κανόνες ετικέτας: Αυτοί οι κανόνες ετικέτας χρησιμοποιούνται για την επικύρωση και την ενημέρωση της τιμής του πεδίου πριν την αποθήκευση της εγγραφής στη βάση δεδομένων.
After triggers: Αυτοί οι κανόνες ετικέτας χρησιμοποιούνται για πρόσβαση στα πεδία (αναγνωριστικό εγγραφής, πεδίο LastModifiedDate) που έχει οριστεί από το σύστημα μετά από μια εγγραφή που έχει δεσμευτεί στη βάση δεδομένων. Αυτές οι τιμές πεδίων μπορούν να χρησιμοποιηθούν για την τροποποίηση άλλων εγγραφών. Οι εγγραφές που ενεργοποιούνται μετά από έναυσμα είναι μόνο για ανάγνωση.
Είναι η καλύτερη πρακτική να γράφετε ογκώδεις σκανδάλες. Μια ογκώδης σκανδάλη μπορεί να επεξεργαστεί μια μεμονωμένη εγγραφή καθώς και πολλές εγγραφές ταυτόχρονα.
Σύνταξη μιας ενεργοποίησης κορυφής:
trigger TriggerName on ObjectName (trigger_events) { //Code_block }
Εδώ, TriggerName είναι το όνομα του κανόνα ετικέτας, ObjectName είναι το όνομα του αντικειμένου στο οποίο θα γραφτεί ο κανόνας ετικέτας, το trigger_events είναι η λίστα συμβάντων διαχωρισμένων με κόμματα.
Ακολουθούν τα συμβάντα που υποστηρίζονται από τους ενεργοποιητές κορυφής: πριν από την εισαγωγή, πριν από την ενημέρωση, πριν από τη διαγραφή, μετά την εισαγωγή, μετά από μια ενημέρωση, μετά τη διαγραφή, μετά την αναίρεση διαγραφής.
Οι στατικές λέξεις-κλειδιά δεν μπορούν να χρησιμοποιηθούν σε έναν κανόνα ετικέτας Apex. Όλες οι λέξεις-κλειδιά που ισχύουν για τις εσωτερικές κλάσεις μπορούν να χρησιμοποιηθούν σε έναν κανόνα Apex.
Υπάρχουν σιωπηρές μεταβλητές που ορίζονται από κάθε έναυσμα που επιστρέφει το περιβάλλον χρόνου εκτέλεσης. Αυτές οι μεταβλητές ορίζονται στο σύστημα. Κατηγορία σκανδάλης. Αυτές οι μεταβλητές ονομάζονται μεταβλητές περιβάλλοντος. Το παρακάτω στιγμιότυπο οθόνης δείχνει τη μεταβλητή περιβάλλοντος που υποστηρίζεται από το apex trigger.
Ακολουθούν η εξέταση της μεταβλητής περιβάλλοντος στην ενεργοποίηση κορυφής:
- Μην χρησιμοποιείτε το trigger.new και το trigger.old σε λειτουργίες DML.
- Το Trigger.new δεν μπορεί να διαγραφεί.
- Το Trigger.new είναι μόνο για ανάγνωση.
- Το Trigger.new μπορεί να χρησιμοποιηθεί για την αλλαγή των τιμών των πεδίων στο ίδιο αντικείμενο μόνο πριν από την ενεργοποίηση.
Τα παρακάτω στιγμιότυπα οθόνης παραθέτουν τις σκέψεις σχετικά με συγκεκριμένες ενέργειες σε διαφορετικά συμβάντα ενεργοποίησης.
Κατηγορία παρτίδας στο Apex
Η κλάση παρτίδας στο salesforce χρησιμοποιείται για την επεξεργασία μεγάλου αριθμού εγγραφών που θα υπερέβαιναν τα όρια του ρυθμιστή κορυφής εάν υποστούν κανονική επεξεργασία. Η κλάση δέσμης εκτελεί τον κώδικα ασύγχρονα.
Ακολουθούν τα πλεονεκτήματα της κατηγορίας παρτίδας:
- Η κλάση δέσμης επεξεργάζεται τα δεδομένα σε κομμάτια και εάν ένα κομμάτι αποτύχει να επεξεργαστεί με επιτυχία, όλα τα κομμάτια που υποβλήθηκαν σε επεξεργασία με επιτυχία δεν επαναφέρονται.
- Κάθε κομμάτι δεδομένων σε μια τάξη παρτίδας υποβάλλεται σε επεξεργασία με ένα νέο σύνολο ορίων ρυθμιστή που διασφαλίζουν ότι ο κώδικας εκτελείται εντός των ορίων εκτέλεσης του ρυθμιστή.
- Βάση δεδομένων. Η διασύνδεση με δυνατότητα παρτίδας πρέπει να υλοποιηθεί από μια κλάση κορυφής που θα χρησιμοποιηθεί ως κλάση παρτίδας. Παρέχει τρεις μεθόδους που πρέπει να εφαρμοστούν από την τάξη παρτίδας.
Ακολουθούν οι τρεις μέθοδοι που παρέχονται από τη βάση δεδομένων. Διασύνδεση με δυνατότητα παρτίδας:
1.start()
Αυτή η μέθοδος δημιουργεί το εύρος των εγγραφών ή των αντικειμένων προς επεξεργασία από τη μέθοδο διεπαφής που εκτελείται. Κατά την εκτέλεση της παρτίδας, καλείται μόνο μία φορά. Αυτή η μέθοδος επιστρέφει είτε ένα αντικείμενο Database.QueryLocator είτε ένα Iterable. Ο αριθμός των εγγραφών που ανακτώνται από το ερώτημα SQL χρησιμοποιώντας το αντικείμενο Database.QueryLocator είναι 50 εκατομμύρια εγγραφές, αλλά χρησιμοποιώντας έναν επαναληπτικό, ο συνολικός αριθμός εγγραφών που μπορούν να ανακτηθούν από το ερώτημα SQL είναι μόνο 50000. Το Iterable χρησιμοποιείται για τη δημιουργία σύνθετου πεδίου για την κατηγορία παρτίδας.
Σύνταξη της μεθόδου έναρξης:
global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}
2.execute()
Αυτή η μέθοδος χρησιμοποιείται για την επεξεργασία κάθε κομματιού δεδομένων. Για κάθε κομμάτι εγγραφών καλείται η μέθοδος εκτέλεσης. Το προεπιλεγμένο μέγεθος παρτίδας για την εκτέλεση είναι 200 εγγραφές. Η μέθοδος εκτέλεσης παίρνει δύο ορίσματα:
Μια αναφορά στο αντικείμενο Database.BatchableContext,
Μια λίστα sObjects, όπως Λίστα ή μια λίστα παραμετροποιημένων τύπων. Σύνταξη της μεθόδου εκτέλεσης:
global void execute(Database.BatchableContext BC, list<P>){}
3.finish()
Η μέθοδος φινιρίσματος καλείται μία φορά κατά την εκτέλεση της κλάσης παρτίδας. Οι εργασίες μετά την επεξεργασία μπορούν να εκτελεστούν στη μέθοδο φινιρίσματος. Για παράδειγμα: αποστολή του email επιβεβαίωσης. Αυτή η μέθοδος καλείται όταν υποβληθεί σε επεξεργασία όλη η παρτίδα. Σύνταξη της μεθόδου Finish:
global void finish(Database.BatchableContext BC){}
Database.BatchableContext αντικείμενο
Κάθε μέθοδος της Βάσης Δεδομένων. Η διασύνδεση με δυνατότητα Batchable έχει μια αναφορά στο αντικείμενο Database.BatchableContext.
Αυτό το αντικείμενο χρησιμοποιείται για την παρακολούθηση της προόδου της ομαδικής εργασίας.
Ακολουθούν μέθοδοι παραδείγματος που παρέχονται από το BatchableContext:
- getChildJobId(): Αυτή η μέθοδος επιστρέφει το αναγνωριστικό μιας δέσμης εργασίας που τελεί υπό επεξεργασία.
- getJobId(): Αυτή η μέθοδος επιστρέφει το αναγνωριστικό της δέσμης εργασίας.
Παρακάτω είναι η σύνταξη μιας κατηγορίας παρτίδας:
global class MyBatchClass implements Database.Batchable<sObject> { global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) { // collect the batches of records or objects to be passed to execute } global void execute(Database.BatchableContextbc, List<P> records){ // process each batch of records } global void finish(Database.BatchableContextbc){ // execute any post-processing operations } }
Μέθοδος Database.executeBatch
Η μέθοδος Database.executeBatch χρησιμοποιείται για την εκτέλεση μιας κλάσης παρτίδας.
Αυτή η μέθοδος παίρνει δύο παραμέτρους: Παρουσίαση της κλάσης παρτίδας προς επεξεργασία, παράμετρος Επιλογών για τον καθορισμό του μεγέθους παρτίδας, εάν δεν έχει καθοριστεί, παίρνει το προεπιλεγμένο μέγεθος 200.
Σύνταξη του Database.executeBatch :
Database.executeBatch(myBatchObject,scope)
Εκτέλεση ονόματος ομάδας παρτίδας MyBatchClass :
MyBatchClassmyBatchObject = new MyBatchClass(); Id batchId = Database.executeBatch(myBatchObject,100);
Βάση δεδομένων.stateful
Η κατηγορία παρτίδας είναι ανιθαγενής από προεπιλογή. Κάθε φορά που καλείται η μέθοδος execute λαμβάνεται ένα νέο αντίγραφο ενός αντικειμένου, αρχικοποιούνται όλες οι μεταβλητές της κλάσης.
Το Database.stateful υλοποιείται για να γίνει μια κλάση παρτίδας σε κατάσταση κατάστασης.
Εάν η τάξη παρτίδας σας εφάρμοσε το βάση δεδομένων , κατάστασης διεπαφής όλες οι μεταβλητές στιγμιότυπου διατηρούν τις τιμές τους, αλλά οι στατικές μεταβλητές επαναφέρονται μεταξύ της συναλλαγής.
Σύνοψη
- Το Apex είναι ένα ισχυρά πληκτρολογημένο, αντικειμενοστρεφές γλώσσα προγραμματισμού που μεταγλωττίζεται και εκτελείται στην πλατφόρμα force.com
- Η γλώσσα προγραμματισμού Apex είναι μια γλώσσα χωρίς διάκριση πεζών-κεφαλαίων
- Δύο τύποι ροής ενεργειών στο Apex είναι 1) Ενέργεια προγραμματιστή 2) Ενέργεια τελικού χρήστη
- Το Apex σάς βοηθά να δημιουργήσετε υπηρεσίες web που ενσωματώνουν το Salesforce με άλλες εφαρμογές.
- Οι τύποι δεδομένων που υποστηρίζονται από το apex είναι: 1).Primitive 2) Collections 3) sObject, Enums, 4) Classes, 5) Objects and Interfaces
- Το Δημόσιο, το Ιδιωτικό, το Προστατευμένο και το Καθολικό καθορίζονται για υποστήριξη από την Apex
- Οι λέξεις-κλειδιά που χρησιμοποιούνται στο Apex είναι: 1) Με κοινή χρήση, 2) Χωρίς κοινή χρήση, 3) Στατικές, 4) Τελικές 5) Επιστροφή, 6) Μηδενικές, 7) Εικονικές, 8) Περίληψη
- Μια συμβολοσειρά είναι ένα σύνολο χαρακτήρων χωρίς όρια χαρακτήρων
- Τα όρια κυβερνήτη κορυφής είναι τα όρια που επιβάλλονται από τη μηχανή χρόνου εκτέλεσης apex για να διασφαλιστεί ότι οποιοσδήποτε κωδικός και διεργασίες κορυφής διαδρόμου
- Το Getter και το Setter μπορούν να χρησιμοποιηθούν για την εκτέλεση κώδικα πριν γίνει πρόσβαση ή αλλαγή της τιμής της ιδιότητας
- Υπάρχουν τρεις τρόποι δημιουργίας κλάσεων apex στο Salesforce: 1) Κονσόλα προγραμματιστή 2) Force.com IDE και, 3) Σελίδα λεπτομερειών κλάσης Apex.
- Οι ενεργοποιήσεις Apex σάς επιτρέπουν να εκτελέσετε προσαρμοσμένη κορυφή πριν και μετά την εκτέλεση μιας λειτουργίας DML.
- Η κλάση παρτίδας στο salesforce χρησιμοποιείται για την επεξεργασία μεγάλου αριθμού εγγραφών που θα υπερέβαιναν τα όρια του ρυθμιστή κορυφής εάν υποστούν κανονική επεξεργασία.