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

Μεταβλητή δήλωση

Καθώς η 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

Εργαλεία ανάπτυξης κώδικα 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.

Apex Trigger

Apex Trigger

Ακολουθούν η εξέταση της μεταβλητής περιβάλλοντος στην ενεργοποίηση κορυφής:

  • Μην χρησιμοποιείτε το trigger.new και το trigger.old σε λειτουργίες DML.
  • Το Trigger.new δεν μπορεί να διαγραφεί.
  • Το Trigger.new είναι μόνο για ανάγνωση.
  • Το Trigger.new μπορεί να χρησιμοποιηθεί για την αλλαγή των τιμών των πεδίων στο ίδιο αντικείμενο μόνο πριν από την ενεργοποίηση.

Τα παρακάτω στιγμιότυπα οθόνης παραθέτουν τις σκέψεις σχετικά με συγκεκριμένες ενέργειες σε διαφορετικά συμβάντα ενεργοποίησης.

Apex Trigger

Apex Trigger

Κατηγορία παρτίδας στο 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 χρησιμοποιείται για την επεξεργασία μεγάλου αριθμού εγγραφών που θα υπερέβαιναν τα όρια του ρυθμιστή κορυφής εάν υποστούν κανονική επεξεργασία.