Tutorial APEX: Kelas Pemrograman Apex & Contoh Coding
Apa itu Apex di Salesforce?
puncak adalah bahasa pemrograman berorientasi objek dan sangat diketik yang dikembangkan oleh Salesforce untuk membangun Perangkat Lunak sebagai Layanan (SaaS) dan Manajemen Hubungan Pelanggan (CRM). Apex membantu pengembang membuat aplikasi SaaS pihak ketiga dan menambahkan logika bisnis ke peristiwa sistem dengan menyediakan dukungan database back-end dan antarmuka klien-server.
Apex membantu pengembang menambahkan logika bisnis ke peristiwa sistem seperti klik tombol, pembaruan data terkait, dan halaman Visualforce. Apex memiliki sintaks yang mirip dengan Java. Daftar ke Tenaga Penjualan untuk mempelajari cara kerja CRM
Fitur Bahasa Pemrograman Apex
Berikut adalah fitur penting Salesforce Apex:
- Apex adalah bahasa yang tidak peka huruf besar-kecil.
- Anda dapat melakukan operasi DML seperti INSERT, UPDATE, UPSERT, DELETE pada catatan sObject menggunakan apex.
- Anda dapat menanyakan catatan sObject menggunakan SOQL (bahasa kueri objek salesforce) dan SOSL (bahasa pencarian objek salesforce) di apex.
- Memungkinkan Anda membuat tes unit dan jalankan mereka untuk memverifikasi cakupan kode dan efisiensi kode di apex.
- Apex dijalankan di lingkungan multi-penyewa, dan Salesforce telah menetapkan beberapa batasan gubernur yang mencegah pengguna mengendalikan sumber daya bersama. Kode apa pun yang melewati batas gubernur tenaga penjualan gagal, kesalahan muncul.
- Objek Salesforce dapat digunakan sebagai tipe data di apex. Misalnya -
Account acc = new Account();
,di sini Akun adalah objek tenaga penjualan standar.
- Apex secara otomatis ditingkatkan pada setiap rilis Salesforce.
Kapan Pengembang Harus Memilih Apex
Kode Apex hanya boleh ditulis jika skenario bisnis terlalu rumit dan tidak dapat diimplementasikan menggunakan fungsionalitas yang telah dibuat sebelumnya yang disediakan oleh Salesforce.
Berikut ini adalah beberapa skenario di mana kita perlu menulis kode apex:
- Untuk membuat layanan web yang mengintegrasikan Salesforce dengan aplikasi lain.
- Untuk menerapkan validasi khusus pada objek.
- Untuk menjalankan logika apex khusus ketika operasi DML dilakukan.
- Untuk mengimplementasikan fungsionalitas yang tidak dapat diimplementasikan menggunakan alur alur kerja yang ada dan fungsionalitas pembuat proses.
- Untuk mengatur layanan email, Anda perlu menyertakan pemrosesan konten, tajuk, dan lampiran email menggunakan kode apex.
Struktur Kerja Apex
Sekarang dalam tutorial Apex ini, kita akan belajar tentang struktur kerja Apex:
Berikut ini adalah alur tindakan untuk kode apex:
- Tindakan Pengembang: Semua kode apex yang ditulis oleh pengembang dikompilasi menjadi serangkaian instruksi yang dapat dipahami oleh penerjemah runtime apex ketika pengembang menyimpan kode ke platform dan instruksi ini kemudian disimpan sebagai metadata ke platform.
- Tindakan Pengguna Akhir: Saat peristiwa pengguna mengeksekusi kode apex, server platform mendapatkan instruksi yang dikompilasi dari metadata dan menjalankannya melalui juru bahasa apex sebelum mengembalikan hasilnya.
Sintaks Puncak
Deklarasi Variabel
Karena apex adalah bahasa yang diketik dengan kuat, maka wajib untuk mendeklarasikan variabel dengan tipe data di apex.
Sebagai contoh:
contact con = new contact();
di sini variabel con dideklarasikan dengan contact sebagai tipe data.
Kueri SOQL
SOQL adalah singkatan dari bahasa kueri objek tenaga penjualan. SOQL digunakan untuk mengambil catatan sObject dari database Salesforce. Misalnya-
Account acc = [select id, name from Account Limit 1];
Kueri di atas mengambil catatan akun dari database tenaga penjualan.
Pernyataan Lingkaran
Pernyataan loop digunakan untuk mengulangi catatan dalam daftar. Jumlah iterasi sama dengan jumlah record dalam daftar. Misalnya:
list<Account>listOfAccounts = [select id, name from account limit 100]; // iteration over the list of accounts for(Account acc : listOfAccounts){ //your logic }
Dalam cuplikan kode di atas, listOfAccounts adalah variabel tipe data daftar.
Pernyataan Kontrol Aliran
Pernyataan kontrol aliran bermanfaat ketika Anda ingin mengeksekusi beberapa baris kode berdasarkan beberapa kondisi.
Sebagai contoh:
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 }
Cuplikan kode di atas menanyakan catatan akun dari database dan memeriksa ukuran daftar.
pernyataan DML
DML adalah singkatan dari bahasa manipulasi data. Pernyataan DML digunakan untuk memanipulasi data dalam database Salesforce. Misalnya -
Account acc = new Account(Name = ‘ Test Account’); Insert acc; //DML statement to create account record.
Lingkungan Pengembangan Puncak
Sekarang dalam tutorial pemrograman Apex ini, kita akan belajar tentang Apex Development Environment:
Kode Apex dapat dikembangkan dalam edisi sandbox dan pengembang Salesforce.
Merupakan praktik terbaik untuk mengembangkan kode di lingkungan sandbox dan kemudian menerapkannya ke lingkungan produksi.
Alat pengembangan kode Apex: Berikut adalah tiga alat yang tersedia untuk mengembangkan kode Apex di semua edisi Salesforce.
- Konsol Pengembang Force.com
- IDE Force.com
- Editor Kode di Antarmuka Pengguna SalesforceAnda
Tipe Data di Apex
Berikut ini adalah tipe data yang didukung oleh apex:
Primitif
Bilangan bulat Double, Long, Date, Date Time, String, ID, dan Boolean dianggap sebagai tipe data primitif. Semua tipe data primitif diteruskan berdasarkan nilai, bukan referensi.
koleksi
Tiga jenis koleksi tersedia di Apex
- Daftar: Ini adalah kumpulan objek primitif, sObjects, koleksi, atau Apex yang diurutkan berdasarkan indeks.
- Set: Kumpulan primitif unik yang tidak berurutan.
- Peta: Ini adalah kumpulan kunci unik dan primitif yang dipetakan ke nilai tunggal yang dapat berupa objek primitif, sObjects, collections, atau Apex.
sObjek
Ini adalah tipe data khusus di Salesforce. Ini mirip dengan tabel di SQL dan berisi bidang yang mirip dengan kolom di SQL.
Enum
Enum adalah tipe data abstrak yang menyimpan satu nilai dari sekumpulan pengidentifikasi tertentu yang terbatas
Kelas
benda
Ini merujuk pada tipe data apa pun yang didukung di Apex.
Antarmuka
Penentu Akses Apex
Berikut ini adalah penentu akses yang didukung oleh apex:
Publik
Penentu akses ini memberikan akses ke kelas, metode, variabel untuk digunakan oleh puncak dalam namespace.
Swasta
Penentu akses ini memberikan akses ke kelas, metode, variabel untuk digunakan secara lokal atau dalam bagian kode yang ditentukan. Semua teknik, variabel yang tidak memiliki penentu akses apa pun memiliki penentu akses default pribadi.
Terlindung
Penentu akses ini memberikan akses ke metode, variabel untuk digunakan oleh kelas dalam mana pun dalam mendefinisikan kelas Apex.
Aksi
Penentu akses ini memberikan akses ke kelas, metode, variabel untuk digunakan oleh puncak di dalam namespace maupun di luar namespace. Merupakan praktik terbaik untuk tidak menggunakan kata kunci global sampai diperlukan.
Kata kunci di Apex
Dengan berbagi
Jika suatu kelas didefinisikan dengan kata kunci ini, maka semua aturan berbagi yang berlaku untuk pengguna saat ini akan diterapkan dan jika kata kunci ini tidak ada, maka kode akan dieksekusi dalam konteks sistem.
Untuk Contoh:
public with sharing class MyApexClass{ // sharing rules enforced when code in this class execute }
Tanpa berbagi
Jika suatu kelas didefinisikan dengan kata kunci ini, maka semua aturan berbagi yang berlaku untuk pengguna saat ini tidak akan diterapkan.
Untuk Contoh:
public without sharing class MyApexClass{ // sharing rules is not enforced when code in this class execute }
Statis
Sebuah variabel, Metode didefinisikan dengan kata kunci statis yang diinisialisasi satu kali dan dikaitkan dengan kelas. Variabel statis, metode dapat dipanggil dengan nama kelas secara langsung tanpa membuat instance kelas.
Terakhir
Sebuah konstanta, Metode didefinisikan dengan kata kunci terakhir tidak dapat diganti. Misalnya:
public class myCls { static final Integer INT_CONST = 10; }
Jika Anda mencoba mengganti nilai variabel INT_CONST ini, maka Anda akan mendapatkan pengecualian – System.FinalException: Variabel akhir telah diinisialisasi.
Pengembalian
Kata kunci ini mengembalikan nilai dari suatu metode. Misalnya:
public String getName() { return 'Test' ; }
Null
Ini mendefinisikan konstanta nol dan dapat ditugaskan ke variabel. Misalnya
Boolean b = null;
maya
Jika suatu kelas didefinisikan dengan kata kunci virtual, kelas tersebut dapat diperluas dan diganti.
Abstrak
Jika suatu kelas didefinisikan dengan kata kunci abstrak, kelas tersebut harus berisi setidaknya satu metode dengan kata kunci abstrak, dan metode tersebut hanya boleh memiliki tanda tangan.
Misalnya
public abstract class MyAbstrtactClass { abstract Integer myAbstractMethod1(); }
Tali Puncak
String adalah sekumpulan karakter tanpa batas karakter. Misalnya:
String name = 'Test';
Ada beberapa metode bawaan yang disediakan oleh kelas String di Salesforce. Berikut ini adalah beberapa fungsi yang sering dan paling banyak digunakan:
menyingkat (maxWidth)
Metode ini memotong string ke panjang yang ditentukan dan mengembalikannya jika panjang string yang diberikan lebih panjang dari panjang yang ditentukan; jika tidak, ia mengembalikan string asli. Jika nilai untuk variabel maxWidth kurang dari 4, metode ini mengembalikan pengecualian runtime – System.StringException: Lebar singkatan minimum adalah 4
Sebagai contoh:
String s = 'Hello World'; String s2 = s.abbreviate(8); System.debug('s2'+s2); //Hello...
kapitalisasi ()
Metode ini mengubah huruf pertama dari sebuah string menjadi huruf judul dan mengembalikannya.
Sebagai contoh:
String s = 'hello; String s2 = s.capitalize(); System.assertEquals('Hello', s2);
berisi (substring)
Metode ini mengembalikan nilai true jika String yang memanggil metode tersebut berisi substring yang ditentukan.
String name1 = 'test1'; String name2 = 'test2'; Boolean flag = name.contains(name2); System.debug('flag::',+flag); //true
sama dengan(stringOrId)
Metode ini mengembalikan nilai true jika parameter yang diteruskan bukan nol dan menunjukkan urutan karakter biner yang sama dengan string yang memanggil metode tersebut.
Saat membandingkan nilai Id, panjang ID mungkin tidak sama. Misalnya: jika string yang mewakili 15 karakter id dibandingkan dengan objek yang mewakili 18 karakter ID, metode ini mengembalikan nilai true. Misalnya:
Id idValue15 = '001D000000Ju1zH'; Id idValue18 = '001D000000Ju1zHIAR'; Boolean result4 = stringValue15.equals(IdValue18); System.debug('result4', +result4); //true
Dalam contoh di atas, metode yang sama membandingkan 15 karakter Id objek dengan 18 karakter Id objek dan jika kedua id ini mewakili urutan biner yang sama maka akan menghasilkan nilai true.
Gunakan metode ini untuk membuat perbandingan peka huruf besar-kecil.
escapeSingleQuotes(stringToEscape)
Metode ini menambahkan karakter escape (\) sebelum kutipan tunggal dalam string dan mengembalikannya. Metode ini mencegah injeksi SOQL saat membuat kueri SOQL dinamis. Metode ini memastikan bahwa semua tanda kutip tunggal dianggap sebagai string penutup, bukan perintah database.
Sebagai contoh:
String s = 'Hello Tom'; system.debug(s); // Outputs 'Hello Tom' String escapedStr = String.escapeSingleQuotes(s); // Outputs \'Hello Tom\'
hapus (substring)
Metode ini menghapus semua kemunculan substring yang disebutkan dari String yang memanggil metode tersebut dan mengembalikan string yang dihasilkan.
Misalnya
String s1 = 'Salesforce and force.com'; String s2 = s1.remove('force'); System.debug( 's2'+ s2);// 'Sales and .com'
substring(mulaiIndeks)
Metode ini mengembalikan substring dimulai dari karakter di startIndex meluas ke string terakhir.
Untuk Contoh:
String s1 = 'hamburger'; String s2 = s1.substring(3); System.debug('s2'+s2); //burger
balik()
Metode ini membalikkan semua karakter string dan mengembalikannya. Misalnya:
String s = 'Hello'; String s2 = s.reverse(); System.debug('s2::::'+s2);// olleH // Hello
trim(): Metode ini menghapus semua spasi putih di awal string dan mengembalikannya.
nilaiDari(untuk Mengonversi)
Metode ini mengembalikan representasi string dari objek yang diteruskan.
Batas Gubernur Puncak
Batasan pengatur Apex adalah batasan yang diberlakukan oleh mesin runtime Apex untuk memastikan bahwa kode dan proses runway Apex apa pun tidak mengendalikan sumber daya bersama dan tidak melanggar pemrosesan untuk pengguna lain di lingkungan multitenant. Batasan ini diverifikasi terhadap setiap transaksi Apex. Berikut ini adalah batasan pengatur yang ditetapkan oleh Salesforce pada setiap transaksi Apex:
Uraian Teknis | batas |
---|---|
Kueri SOQL yang dapat dilakukan dalam transaksi sinkron | 100 |
Kueri SOQL yang dapat dilakukan dalam transaksi Asinkron | 200 |
Catatan yang dapat diambil dengan kueri SOQL | 50000 |
Catatan yang dapat diambil oleh Database.getQueryLocator | 10000 |
Kueri SOSL yang dapat dilakukan dalam transaksi apex | 20 |
Catatan yang bisa diambil dengan kueri SOSL | 2000 |
Pernyataan DML yang dapat dilakukan dalam transaksi apex | 150 |
Catatan yang dapat diproses sebagai hasil dari pernyataan DML, Approval.process, atau database.emptyRecycleBin | 10000 |
Info yang dapat dilakukan dalam transaksi apex. | 100 |
Batas waktu tunggu kumulatif pada semua pemanggilan yang dilakukan dalam transaksi apex | 120 detik |
Batasi pekerjaan apex yang dapat ditambahkan ke antrian dengan System.enqueueJob | 50 |
Batas waktu eksekusi untuk setiap transaksi Apex | 10 menit |
Batasan karakter yang dapat digunakan di kelas apex dan pemicu | 1 juta |
Batas waktu CPU untuk transaksi sinkron | milidetik 10,000 |
Batas waktu CPU untuk transaksi asinkron | milidetik 60,000 |
Apex Pengambil dan Penyetel
Properti Apex mirip dengan variabel apex. Pengambil dan penyetel diperlukan untuk properti apex. Pengambil dan penyetel dapat digunakan untuk mengeksekusi kode sebelum nilai properti diakses atau diubah. Kode di get accessor dijalankan ketika nilai properti dibaca. Kode dalam pengakses set berjalan ketika nilai properti diubah. Properti apa pun yang memiliki pengakses get dianggap hanya baca, properti apa pun yang memiliki pengakses tetap dianggap hanya menulis, properti apa pun yang memiliki pengakses get dan set dianggap sebagai baca-tulis. Sintaks properti apex:
public class myApexClass { // Property declaration access_modifierreturn_typeproperty_name { get { //code } set{ //code } }
Di sini, access_modifier adalah pengubah akses properti. return_type adalah tipe data properti. property_name adalah nama properti.
Di bawah ini adalah contoh properti apex yang memiliki aksesor get dan set.
public class myApex{ public String name{ get{ return name;} set{ name = 'Test';} } }
Di sini, nama properti adalah nama, dan merupakan properti publik, dan mengembalikan tipe data string.
Tidak wajib untuk memiliki beberapa kode di blok get dan set. Blok ini dapat dikosongkan untuk menentukan properti otomatis. Misalnya:
public double MyReadWriteProp{ get; set; }
Dapatkan dan setel pengakses juga dapat ditentukan dengan pengubah aksesnya. Jika pengakses didefinisikan dengan pengubah, maka pengakses akan menggantikan pengubah akses untuk properti tersebut. Misalnya:
public String name{private get; set;}// name is private for read and public to write.
Kelas Puncak
Kelas apex adalah cetak biru atau templat tempat objek dibuat. Objek adalah turunan dari suatu kelas.
Ada tiga cara membuat kelas apex di Salesforce:
Konsol Pengembang
IDE Force.com
Halaman detail kelas Apex.
Di apex, Anda bisa mendefinisikan kelas luar yang disebut juga kelas tingkat atas, dan Anda juga bisa mendefinisikan kelas di dalam kelas luar yang disebut kelas dalam.
Wajib menggunakan pengubah akses seperti global atau public dalam deklarasi kelas luar.
Tidak perlu menggunakan pengubah akses dalam deklarasi kelas dalam.
Kelas apex didefinisikan menggunakan kata kunci class diikuti dengan nama kelas.
Kata kunci extends digunakan untuk memperluas kelas yang ada dengan kelas apex, dan kata kunci implementasi digunakan untuk mengimplementasikan antarmuka dengan kelas apex.
Salesforce Apex tidak mendukung banyak warisan, kelas apex hanya dapat memperluas satu kelas apex yang ada tetapi dapat mengimplementasikan banyak antarmuka.
Kelas apex dapat berisi konstruktor yang ditentukan pengguna, dan jika konstruktor yang ditentukan pengguna tidak tersedia, konstruktor default akan digunakan. Kode dalam konstruktor dijalankan ketika sebuah instance kelas dibuat.
Sintaks contoh Kelas Apex:
public class myApexClass{ // variable declaration //constructor public myApexClass{ } //methods declaration }
Kata kunci new digunakan untuk membuat instance kelas apex. Di bawah ini adalah sintaks untuk membuat instance kelas apex.
myApexClass obj = new myApexClass();
Pemicu Puncak
Pemicu Apex memungkinkan Anda menjalankan apex khusus sebelum dan sesudah operasi DML dilakukan.
Dukungan Apex mengikuti dua jenis pemicu:
Sebelum pemicu: Pemicu ini digunakan untuk memvalidasi dan memperbarui nilai bidang sebelum rekaman disimpan ke database.
Setelah pemicu: Pemicu ini digunakan untuk mengakses bidang (ID rekaman, bidang TanggalModifikasi Terakhir) yang ditetapkan oleh sistem setelah catatan dimasukkan ke database. Nilai bidang ini dapat digunakan untuk mengubah catatan lain. Catatan yang diaktifkan setelah pemicu bersifat hanya-baca.
Ini adalah praktik terbaik untuk menulis pemicu yang besar. Pemicu yang besar dapat memproses satu rekaman serta beberapa rekaman sekaligus.
Sintaks pemicu apex:
trigger TriggerName on ObjectName (trigger_events) { //Code_block }
Di sini, TriggerName adalah nama pemicu, ObjectName adalah nama objek tempat pemicu ditulis, trigger_events adalah daftar peristiwa yang dipisahkan koma.
Berikut ini adalah kejadian-kejadian yang didukung oleh pemicu apex: sebelum penyisipan, sebelum pembaruan, sebelum penghapusan, setelah penyisipan, setelah pembaruan, setelah penghapusan, setelah pembatalan penghapusan.
Kata kunci statis tidak dapat digunakan dalam pemicu Apex. Semua kata kunci yang berlaku untuk kelas dalam dapat digunakan dalam pemicu Apex.
Ada variabel implisit yang ditentukan oleh setiap pemicu yang mengembalikan konteks run-time. Variabel-variabel ini didefinisikan dalam sistem. Kelas pemicu. Variabel-variabel ini disebut variabel konteks. Tangkapan layar di bawah menunjukkan variabel konteks yang didukung oleh pemicu apex.
Berikut ini adalah pertimbangan variabel konteks dalam pemicu apex:
- Jangan gunakan trigger.new dan trigger.old dalam operasi DML.
- Trigger.new tidak dapat dihapus.
- Trigger.new bersifat hanya baca.
- Trigger.new dapat digunakan untuk mengubah nilai field pada objek yang sama sebelum trigger saja.
Tangkapan layar di bawah mencantumkan pertimbangan tentang tindakan spesifik dalam peristiwa pemicu yang berbeda.
Kelas Batch di Apex
Kelas batch di Salesforce digunakan untuk memproses sejumlah besar catatan yang akan melampaui batas apex governor jika diproses secara normal. Kelas batch mengeksekusi kode secara asinkron.
Berikut ini adalah keuntungan dari kelas batch:
- Kelas batch memproses data dalam potongan-potongan dan jika sebuah potongan gagal diproses dengan sukses, semua potongan yang berhasil diproses tidak dapat diputar kembali.
- Setiap potongan data dalam kelas batch diproses dengan serangkaian batas gubernur baru yang memastikan bahwa kode dijalankan dalam batas eksekusi gubernur.
- Basis data. Antarmuka batchable harus diimplementasikan oleh kelas apex untuk digunakan sebagai kelas batch. Ini menyediakan tiga metode yang harus diimplementasikan oleh kelas batch.
Berikut ini adalah tiga metode yang disediakan oleh Database. Antarmuka batchable:
1.mulai()
Metode ini menghasilkan cakupan rekaman atau objek yang akan diproses oleh metode antarmuka execute. Selama eksekusi batch, metode ini dipanggil sekali saja. Metode ini mengembalikan objek Database.QueryLocator atau Iterable. Jumlah rekaman yang diambil oleh kueri SQL menggunakan objek Database.QueryLocator adalah 50 juta rekaman, tetapi menggunakan iterable, jumlah total rekaman yang dapat diambil oleh kueri SQL hanya 50000. Iterable digunakan untuk menghasilkan cakupan kompleks untuk kelas batch.
Sintaks metode awal:
global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}
2.eksekusi()
Metode ini digunakan untuk memproses setiap potongan data. Untuk setiap potongan rekaman, metode eksekusi dipanggil. Ukuran batch default untuk eksekusi adalah 200 catatan. Metode eksekusi membutuhkan dua argumen:
Referensi ke objek Database.BatchableContext,
Daftar sObjects, seperti List , atau daftar tipe berparameter. Sintaks metode eksekusi:
global void execute(Database.BatchableContext BC, list<P>){}
3.selesai()
Metode finish dipanggil sekali selama eksekusi kelas batch. Operasi pasca-pemrosesan dapat dilakukan dalam metode finish. Misalnya: mengirim email konfirmasi. Metode ini dipanggil saat semua batch diproses. Sintaks metode Finish:
global void finish(Database.BatchableContext BC){}
Objek Database.BatchableContext
Setiap metode Database. Antarmuka batchable memiliki referensi ke objek Database.BatchableContext.
Objek ini digunakan untuk melacak kemajuan pekerjaan batch.
Berikut ini adalah metode instan yang disediakan oleh BatchableContext:
- getChildJobId(): Metode ini mengembalikan ID pekerjaan batch yang sedang diproses.
- getJobId(): Metode ini mengembalikan ID pekerjaan batch.
Di bawah ini adalah sintaks kelas batch:
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 } }
Metode Database.executeBatch
Metode Database.executeBatch digunakan untuk mengeksekusi kelas batch.
Metode ini membutuhkan dua parameter: Instance dari kelas batch yang akan diproses, Parameter opsi untuk menentukan ukuran batch jika tidak ditentukan maka dibutuhkan ukuran default 200.
Sintaks Database.executeBatch :
Database.executeBatch(myBatchObject,scope)
Mengeksekusi nama kelas batch MyBatchClass :
MyBatchClassmyBatchObject = new MyBatchClass(); Id batchId = Database.executeBatch(myBatchObject,100);
Basis data.stateful
Kelas batch tidak memiliki kewarganegaraan secara default. Setiap kali metode eksekusi dipanggil, salinan baru suatu objek diterima, semua variabel kelas diinisialisasi.
Database.stateful diimplementasikan untuk membuat kelas batch menjadi stateful.
Jika kelas batch Anda mengimplementasikan Basis Data , antarmuka stateful, semua variabel instan mempertahankan nilainya, tetapi variabel statis disetel ulang di antara transaksi.
Ringkasan
- Apex adalah tipe yang kuat, berorientasi objek bahasa pemrograman yang dikompilasi dan dijalankan pada platform force.com
- Bahasa pemrograman Apex adalah bahasa yang tidak membedakan huruf besar dan kecil
- Dua jenis alur tindakan di Apex adalah 1) Tindakan pengembang 2) Tindakan pengguna akhir
- Apex membantu Anda membuat layanan web yang mengintegrasikan Salesforce dengan aplikasi lain.
- Tipe data yang didukung oleh apex adalah: 1).Primitive 2) Koleksi 3) sObject, Enums, 4) Kelas, 5) Objek dan Antarmuka
- Publik, Swasta, Dilindungi, dan Global adalah dukungan yang ditentukan oleh Apex
- Kata kunci yang digunakan di Apex adalah : 1) Dengan Berbagi, 2) Tanpa berbagi, 3) Statis, 4) Final 5) Return, 6) Null, 7) Virtual, 8) Abstrak
- String adalah sekumpulan karakter tanpa batas karakter
- Batas gubernur apex adalah batas yang diberlakukan oleh mesin runtime apex untuk memastikan bahwa setiap kode dan proses apex runway
- Pengambil dan penyetel dapat digunakan untuk mengeksekusi kode sebelum nilai properti diakses atau diubah
- Ada tiga cara membuat kelas apex di Salesforce: 1) Konsol Pengembang 2) IDE Force.com dan, 3) halaman detail kelas Apex.
- Pemicu Apex memungkinkan Anda menjalankan apex khusus sebelum dan sesudah operasi DML dilakukan.
- Kelas batch di tenaga penjualan digunakan untuk memproses sejumlah besar catatan yang akan melebihi batas gubernur puncak jika diproses secara normal.