APEX Eğitimi: Apex Programlama Sınıfı ve Kodlama Örnekleri

Salesforce'ta Apex nedir?

Tepe Salesforce tarafından Hizmet Olarak Yazılım (SaaS) ve Müşteri İlişkileri Yönetimi (CRM) oluşturmak için geliştirilen, nesne yönelimli ve güçlü tipte bir programlama dilidir. Apex, arka uç veritabanı desteği ve istemci-sunucu arayüzleri sağlayarak geliştiricilerin üçüncü taraf SaaS uygulamaları oluşturmalarına ve sistem olaylarına iş mantığı eklemelerine yardımcı olur.

Apex, geliştiricilerin düğme tıklamaları, ilgili kayıt güncellemeleri ve Visualforce sayfaları gibi sistem olaylarına iş mantığı eklemelerine yardımcı olur. Apex'in söz dizimi benzerdir Java. Salesforce'a kaydolun CRM'in nasıl çalıştığını öğrenmek için

Apex Programlama Dilinin Özellikleri

Salesforce Apex'in önemli özellikleri şunlardır:

  • Apex büyük/küçük harfe duyarlı olmayan bir dildir.
  • Apex kullanarak sObject kayıtları üzerinde INSERT, UPDATE, UPSERT, DELETE gibi DML işlemlerini gerçekleştirebilirsiniz.
  • Apex'te SOQL (salesforce nesne sorgulama dili) ve SOSL (salesforce nesne arama dili) kullanarak sObject kayıtlarını sorgulayabilirsiniz.
  • oluşturmanıza olanak sağlar. ünite testi ve doğrulamak için bunları yürütün kod kapsamı ve kodun apeksteki verimliliği.
  • Apex çok kiracılı bir ortamda yürütülür ve Satış Gücü Bir kullanıcının paylaşılan kaynakları kontrol etmesini engelleyen bazı düzenleyici limitler tanımlamıştır. Salesforce yönetici sınırını aşan herhangi bir kod başarısız olur ve bir hata ortaya çıkar.
  • Salesforce nesnesi apex'te veri türü olarak kullanılabilir. Örneğin -
    Account acc = new Account();

    Burada Hesap standart bir salesforce nesnesidir.

  • Apex, her Salesforce sürümünde otomatik olarak yükseltilir.

Geliştirici Ne Zaman Apex'i Seçmeli?

Apex kodu yalnızca bir iş senaryosu çok karmaşıksa ve Salesforce tarafından sağlanan önceden oluşturulmuş işlevler kullanılarak uygulanamıyorsa yazılmalıdır.

Aşağıda apex kodu yazmamız gereken birkaç senaryo bulunmaktadır:

  • Salesforce'u diğer uygulamalarla entegre eden web hizmetleri oluşturmak.
  • Nesnelere özel doğrulama uygulamak.
  • Bir DML işlemi gerçekleştirildiğinde özel apex mantığını yürütmek için.
  • Mevcut iş akışı akışları ve süreç oluşturucuların işlevleri kullanılarak uygulanamayan işlevleri uygulamak.
  • Kurmak e-posta hizmetleri, e-postaların içeriklerini, başlıklarını ve eklerini apex kodu kullanarak işlemeniz gerekiyor.

Apex'in Çalışma Yapısı

Şimdi bu Apex eğitiminde Apex'in çalışma yapısını öğreneceğiz:

Bir apex kodu için eylem akışı aşağıdaki gibidir:

  • Geliştirici Eylemi: Bir geliştirici tarafından yazılan tüm apex kodu, geliştirici kodu platforma kaydettiğinde apex çalışma zamanı yorumlayıcısı tarafından anlaşılabilecek bir dizi talimat halinde derlenir ve bu talimatlar daha sonra platforma meta veri olarak kaydedilir.
  • Son Kullanıcı Eylemi: Kullanıcı olayı bir apex kodunu çalıştırdığında, platform sunucusu meta verilerden derlenen talimatları alır ve sonucu döndürmeden önce bunları apex yorumlayıcısı aracılığıyla çalıştırır.
Apex'in Çalışma Yapısı
Apex'in Çalışma Yapısı

Apex Sözdizimi

Değişken Beyanı

Apex kesin olarak yazılan bir dil olduğundan, apex'te veri tipine sahip bir değişkenin bildirilmesi zorunludur.

Örneğin:

contact con = new contact(); 

burada con değişkeni veri türü olarak contact ile bildirilir.

SOQL Sorgusu

SOQL, Salesforce nesne sorgulama dili anlamına gelir. SOQL, Salesforce veritabanından sObject kayıtlarını almak için kullanılır. Örneğin-

Account acc = [select id, name from Account Limit 1]; 

Yukarıdaki sorgu, Salesforce veritabanından hesap kaydını getirir.

Döngü İfadesi

Döngü ifadesi bir listedeki kayıtlar üzerinde yineleme yapmak için kullanılır. Yineleme sayısı listedeki kayıt sayısına eşittir. Örneğin:

list<Account>listOfAccounts = [select id, name from account limit 100];
// iteration over the list of accounts
for(Account acc : listOfAccounts){
	//your logic
}

Yukarıdaki kod parçacığında listOfAccounts, liste veri türünün bir değişkenidir.

Akış Kontrol Beyanı

Akış kontrolü ifadesi, kodun bazı satırlarını bazı koşullara göre yürütmek istediğinizde faydalıdır.

Örneğin:

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
}

Yukarıdaki kod parçacığı veritabanından hesap kayıtlarını sorgulamak ve liste boyutunu kontrol etmektir.

DML bildirimi

DML, veri işleme dili anlamına gelir. DML ifadeleri, Salesforce veritabanındaki verileri değiştirmek için kullanılır. Örneğin -

Account acc = new Account(Name = ‘ Test Account’);
Insert acc; //DML statement to create account record.

Apex Geliştirme Ortamı

Şimdi bu Apex programlama eğitiminde Apex Geliştirme Ortamı hakkında bilgi edineceğiz:

Apex kodu Salesforce'un hem sandbox hem de developer sürümünde geliştirilebilir.

Kodun deneme ortamında geliştirilip daha sonra üretim ortamına dağıtılması en iyi uygulamadır.

Apex Geliştirme Ortamı

Apex kod geliştirme araçları: Aşağıda Salesforce'un tüm sürümlerinde Apex kodu geliştirmek için kullanılabilen üç araç bulunmaktadır.

  • Force.com Geliştirici Konsolu
  • Force.com IDE'si
  • Salesforce Kullanıcı Arayüzünde Kod DüzenleyiciSiz

Apex'te Veri Türü

Apex tarafından desteklenen veri tipleri şunlardır:

Ilkel

Tamsayı, Double, Uzun, Tarih, Tarih Saat, Dize, Kimlik ve Boolean temel veri türleri olarak kabul edilir. Tüm temel veri türleri referansa göre değil değere göre iletilir.

Koleksiyonlar

Apex'te üç tür koleksiyon mevcuttur

  • Liste: Endekslere dayalı olarak ilkellerin, sObject'lerin, koleksiyonların veya Apex nesnelerinin sıralı bir koleksiyonudur.
  • Küme: Benzersiz ilkellerin sırasız bir koleksiyonu.
  • Harita: İlkel öğeler, sObject'ler, koleksiyonlar veya Apex nesneleri olabilen tekli değerlerle eşlenen benzersiz, ilkel anahtarların koleksiyonudur.

nesne

Bu, Salesforce'taki özel bir veri türüdür. Bir tabloya benzer SQL ve SQL'deki sütunlara benzer alanlar içerir.

Sıralamalar

Enum, sonlu sayıda belirtilen tanımlayıcı kümesinin bir değerini saklayan soyut bir veri türüdür

Sınıflar

nesneler

Apex'te desteklenen herhangi bir veri türünü ifade eder.

Arayüzler

Apex Erişim Belirleyicisi

Apex tarafından desteklenen erişim belirteçleri şunlardır:

Açık Alan

Bu erişim belirticisi, bir ad alanı içindeki bir apex tarafından kullanılacak bir sınıfa, yönteme, değişkene erişim sağlar.

Özel Etkinlik

Bu erişim belirteci, yerel olarak veya kodun bölümü içinde kullanılacak bir sınıfa, yönteme, değişkene erişim sağlar, tanımlanır. Tanımlanmış herhangi bir erişim belirticisi olmayan tüm teknik, değişkenler, varsayılan erişim belirticisi olarak özeldir.

korumalı

Bu erişim belirticisi, Apex sınıfını tanımlayan herhangi bir iç sınıf tarafından kullanılacak bir değişken olan yönteme erişim sağlar.

Küresel

Bu erişim belirticisi, bir ad alanı içindeki ve ad alanının dışındaki bir apeks tarafından kullanılacak bir sınıfa, yönteme, değişkene erişim sağlar. Gerekli olmadıkça global anahtar kelimeyi kullanmamak en iyi uygulamadır.

Apex'teki Anahtar Kelimeler

Paylaşarak

Bu anahtar kelimeyle bir sınıf tanımlanmışsa, geçerli kullanıcıya uygulanan tüm paylaşım kuralları uygulanır ve bu anahtar kelime yoksa kod sistem bağlamı altında yürütülür.

Örneğin:

public with sharing class MyApexClass{
// sharing rules enforced when code in this class execute
}

Paylaşmadan

Bu anahtar kelimeyle bir sınıf tanımlanmışsa, geçerli kullanıcıya uygulanan tüm paylaşım kuralları uygulanmaz.

Örneğin:

public without sharing class MyApexClass{
// sharing rules is not enforced when code in this class execute
}

Statik

Statik anahtar kelimeyle tanımlanan Method değişkeni bir kez başlatılır ve sınıfla ilişkilendirilir. Statik değişkenler, yöntemler bir sınıfın örneğini oluşturmadan doğrudan sınıf adına göre çağrılabilir.

Son

Final anahtar sözcüğüyle tanımlanan bir sabit, Yöntem geçersiz kılınamaz. Örneğin:

public class myCls {
static final Integer INT_CONST = 10;
}

Bu INT_CONST değişkeninin değerini geçersiz kılmaya çalışırsanız, bir istisna elde edersiniz – System.FinalException: Final değişkeni zaten başlatıldı.

Dönüş

Bu anahtar kelime bir yöntemden bir değer döndürür. Örneğin:

public String getName() {
return  'Test' ;
}

Null

Boş bir sabiti tanımlar ve bir değişkene atanabilir. Örneğin

 Boolean b = null;

Sanal

Bir sınıf sanal bir anahtar kelimeyle tanımlanmışsa genişletilebilir ve geçersiz kılınabilir.

Soyut

Bir sınıf abstract anahtar sözcüğüyle tanımlanmışsa, abstract anahtar sözcüğünü içeren en az bir yöntem içermeli ve bu yöntemin yalnızca bir imzası olmalıdır.

Örneğin

public abstract class MyAbstrtactClass {
abstract Integer myAbstractMethod1();
}

Apex Dizisi

Bir dize, karakter sınırlaması olmayan bir karakter kümesidir. Örneğin:

String name = 'Test';

Salesforce'taki String sınıfı tarafından sağlanan birkaç yerleşik yöntem vardır. Aşağıda sık ve çoğunlukla kullanılan birkaç işlev yer almaktadır:

kısalt(maxWidth)

Bu yöntem bir dizeyi belirtilen uzunluğa keser ve verilen dizenin uzunluğu belirtilen uzunluktan daha uzunsa döndürür; aksi takdirde orijinal dizeyi döndürür. maxWidth değişkeninin değeri 4'ten azsa, bu yöntem bir çalışma zamanı istisnası döndürür – System.StringException: Minimum kısaltma genişliği 4'tür

Örneğin:

String s = 'Hello World';
String s2 = s.abbreviate(8);
System.debug('s2'+s2); //Hello...

büyük harfle yazmak ()

Bu yöntem, bir dizenin ilk harfini başlık harfine dönüştürür ve onu döndürür.

Örneğin:

String s = 'hello;
String s2 = s.capitalize();
System.assertEquals('Hello', s2);

içerir(alt dize)

Bu yöntem, yöntemi çağıran String belirtilen alt dizeyi içeriyorsa true değerini döndürür.

String name1 = 'test1';
String name2 = 'test2';
Boolean flag = name.contains(name2);
System.debug('flag::',+flag); //true

eşittir(stringOrId)

Bu yöntem, iletilen parametre boş değilse ve yöntemi çağıran dizeyle aynı ikili karakter dizisini gösteriyorsa true değerini döndürür.

Id değerlerini karşılaştırırken ID'lerin uzunlukları eşit olmayabilir. Örneğin: 15 karakterlik kimliği temsil eden bir dize, 18 karakterlik kimliği temsil eden bir nesneyle karşılaştırılırsa bu yöntem true değerini döndürür. Örneğin:

Id idValue15 = '001D000000Ju1zH';
Id idValue18 = '001D000000Ju1zHIAR';
Boolean result4 = stringValue15.equals(IdValue18);
System.debug('result4', +result4); //true

Yukarıdaki örnekte equals yöntemi, 15 karakterlik nesne kimliğini 18 karakterlik nesne kimliğiyle karşılaştırmaktadır ve bu kimliklerin her ikisi de aynı ikili diziyi temsil ediyorsa, true değerini döndürecektir.

Büyük/küçük harfe duyarlı karşılaştırmalar yapmak için bu yöntemi kullanın.

kaçışSingleQuotes(stringToEscape)

Bu yöntem, bir dizedeki herhangi bir tek tırnak işaretinin önüne bir kaçış karakteri (\) ekler ve onu döndürür. Bu yöntem, dinamik bir SOQL sorgusu oluştururken SOQL enjeksiyonunu önler. Bu yöntem, tüm tek tırnak işaretlerinin veritabanı komutları yerine çevreleyen dizeler olarak değerlendirilmesini sağlar.

Örneğin:

String s = 'Hello Tom';
system.debug(s); // Outputs 'Hello Tom'
String escapedStr = String.escapeSingleQuotes(s);
// Outputs \'Hello Tom\'

kaldır(alt dize)

Bu yöntem, söz konusu alt dizenin tüm oluşumlarını, yöntemi çağıran ve sonuç dizesini döndüren String'den kaldırır.

Örneğin

String s1 = 'Salesforce and force.com';
String s2 = s1.remove('force');
System.debug( 's2'+ s2);// 'Sales and .com'

alt dize(startIndex)

Bu yöntem, startIndex'teki karakterden başlayan ve dizenin sonuncusuna kadar uzanan bir alt dize döndürür.

Örneğin:

String s1 = 'hamburger';
String s2 = s1.substring(3);
System.debug('s2'+s2); //burger

tersine çevirmek()

Bu Yöntem, bir dizenin tüm karakterlerini tersine çevirir ve onu döndürür. Örneğin:

String s = 'Hello';
String s2 = s.reverse();
System.debug('s2::::'+s2);// olleH  // Hello

trim(): Bu yöntem, bir dizenin başındaki tüm beyaz boşlukları kaldırır ve onu döndürür.

valueOf(toConvert)

Bu yöntem, nesnede iletilen dize gösterimini döndürür.

Apex Valisi Sınırları

Apex düzenleyici sınırları, herhangi bir pist apex kodunun ve işleminin paylaşılan kaynakları kontrol etmemesini ve çoklu kiracı ortamındaki diğer kullanıcılar için işlemeyi ihlal etmemesini sağlamak için apex çalışma zamanı motoru tarafından uygulanan sınırlardır. Bu sınırlar her apex işlemine göre doğrulanır. Aşağıda, salesforce tarafından her apex işleminde tanımlanan düzenleyici sınırları verilmiştir:

Açıklama Sınırlamak
Eşzamanlı bir işlemde yapılabilen SOQL sorguları 100
Asenkron bir işlemde yapılabilen SOQL sorguları 200
SOQL sorgusu tarafından alınabilecek kayıtlar 50000
Database.getQueryLocator tarafından alınabilecek kayıtlar 10000
Apex işleminde yapılabilecek SOSL sorguları 20
SOSL sorgusu ile alınabilecek kayıtlar 2000
Apex işleminde yapılabilecek DML ifadeleri 150
DML ifadesi, Approval.process veya Database.emptyRecycleBin sonucunda işlenebilen kayıtlar 10000
Apex işleminde yapılabilecek açıklamalar. 100
Bir apex işleminde gerçekleştirilen tüm çağrılarda kümülatif zaman aşımı sınırı 120 saniye
System.enqueueJob ile kuyruğa eklenebilecek apex işlerinin sınırı 50
Her Apex işlemi için yürütme süresi sınırı 10 dakikadır.
Apex sınıfında ve tetikleyicide kullanılabilecek karakterlerin sınırı 1 milyon
Eşzamanlı işlem için CPU zaman sınırı Milisaniye 10,000
Asenkron işlem için CPU zaman sınırı Milisaniye 60,000

Apex Getter ve Setter

Apex özelliği apex değişkenine benzer. Bir apex özelliği için alıcı ve ayarlayıcı gereklidir. Alıcı ve ayarlayıcı, özellik değerine erişilmeden veya değiştirilmeden önce kodu yürütmek için kullanılabilir. Get erişimcisindeki kod, bir özellik değeri okunduğunda yürütülür. Set erişimcisindeki kod, bir özellik değeri değiştirildiğinde çalışır. Get erişimcisine sahip olan herhangi bir özellik salt okunur olarak kabul edilir, set erişimcisine sahip olan herhangi bir özelliğin yalnızca yazdığı kabul edilir ve hem get hem de set erişimcisine sahip olan herhangi bir özellik okuma-yazma olarak kabul edilir. Bir apex özelliğinin sözdizimi:

public class myApexClass {
// Property declaration
	access_modifierreturn_typeproperty_name {
	get {
			//code  
		}
		set{
			//code
		}
	}

Burada, erişim_modifier özelliğin erişim değiştiricisidir. return_type özelliğin dataType'ıdır. özellik_adı özelliğin adıdır.

Aşağıda hem get hem de set erişimcisine sahip bir apex özelliği örneği verilmiştir.

public class myApex{
	public String name{
		get{ return name;}
		set{ name = 'Test';}
	}
}

Burada özellik adı name'dir ve bu genel bir özelliktir ve bir dataType dizesi döndürmektedir.

Get ve set bloğunda bazı kodların bulunması zorunlu değildir. Otomatik bir özelliği tanımlamak için bu blok boş bırakılabilir. Örneğin:

public double MyReadWriteProp{ get; set; } 

Get ve set erişimcisi aynı zamanda erişim değiştiricileriyle de tanımlanabilir. Bir erişimci bir değiştiriciyle tanımlanmışsa, bu durumda özelliğin erişim değiştiricisini geçersiz kılar. Örneğin:

public String name{private get; set;}// name is private for read and public to write.

Apeks Sınıfı

Apex sınıfı, nesnelerin oluşturulduğu bir plan veya şablondur. Bir nesne bir sınıfın örneğidir.

Salesforce'ta apex sınıfları oluşturmanın üç yolu vardır:

Geliştirici Konsolu

Force.com IDE'si

Apex sınıfı ayrıntı sayfası.

Apex'te, üst düzey sınıf olarak da adlandırılan bir dış sınıf tanımlayabilir ve ayrıca iç sınıflar adı verilen bir dış sınıf içindeki sınıfları da tanımlayabilirsiniz.

Dış sınıfın bildiriminde global veya public gibi erişim değiştiricilerin kullanılması zorunludur.

İç sınıfların bildiriminde erişim değiştiricisinin kullanılması gerekli değildir.

Bir apex sınıfı, class anahtar sözcüğü ve ardından sınıf adı kullanılarak tanımlanır.

Extends anahtar sözcüğü, mevcut bir sınıfı bir apex sınıfına göre genişletmek için kullanılır ve apps anahtar sözcüğü, bir apex sınıfı tarafından bir arayüz uygulamak için kullanılır.

Salesforce Apex birden fazla mirası desteklemez; bir apex sınıfı yalnızca mevcut bir apex sınıfını genişletebilir ancak birden fazla arabirim uygulayabilir.

Bir apex sınıfı, kullanıcı tanımlı bir kurucu içerebilir ve kullanıcı tanımlı bir kurucu mevcut değilse, varsayılan bir kurucu kullanılır. Bir yapıcıdaki kod, bir sınıfın örneği oluşturulduğunda yürütülür.

Apex Sınıfı örneğinin söz dizimi:

public class myApexClass{
// variable declaration
//constructor
	public myApexClass{
	}
//methods declaration
}

New anahtar sözcüğü bir apex sınıfının örneğini oluşturmak için kullanılır. Aşağıda bir apex sınıfının örneğini oluşturmaya yönelik sözdizimi verilmiştir.

myApexClass obj = new myApexClass();

Apeks Tetikleyici

Apex tetikleyicileri, bir DML işlemi gerçekleştirilmeden önce ve sonra özel apex yürütmenizi sağlar.

Apex aşağıdaki iki tip tetikleyiciyi destekler:

Tetikleyicilerden önce: Bu tetikleyiciler, kayıt veritabanına kaydedilmeden önce alanın değerini doğrulamak ve güncellemek için kullanılır.

After Trigger'lar: Bu tetikleyiciler veritabanına kayıt işlendikten sonra sistem tarafından belirlenen alanlara (record ID, LastModifiedDate alanı) erişmek için kullanılır. Bu alanların değeri diğer kayıtları değiştirmek için kullanılabilir. Tetikleyicilerden sonra tetiklenen kayıtlar salt okunurdur.

Hacimli tetikleyiciler yazmak en iyi uygulamadır. Hacimli bir tetikleyici, tek bir kaydın yanı sıra aynı anda birden fazla kaydı işleyebilir.

Bir apeks tetikleyicisinin sözdizimi:

trigger TriggerName on ObjectName (trigger_events) {
	//Code_block
 }

Burada TriggerName tetikleyicinin adı, ObjectName tetikleyicinin yazılacağı nesnenin adı, tetik_events olayların virgülle ayrılmış listesidir.

Apex tetikleyicilerinin desteklediği olaylar şunlardır: eklemeden önce, güncellemeden önce, silmeden önce, eklemeden sonra, güncellemeden sonra, silmeden sonra, silmeyi geri aldıktan sonra.

Apex tetikleyicisinde statik anahtar kelimeler kullanılamaz. İç sınıflara uygulanabilir tüm anahtar kelimeler bir Apex tetikleyicisinde kullanılabilir.

Çalışma zamanı bağlamını döndüren her tetikleyicinin tanımladığı örtülü değişken vardır. Bu değişkenler sistemde tanımlanmıştır. Tetikleyici sınıf. Bu değişkenlere bağlam değişkenleri denir. Aşağıdaki ekran görüntüsü apex tetikleyicisi tarafından desteklenen bağlam değişkenini göstermektedir.

Apeks Tetikleyici

Apeks Tetikleyici

Aşağıda apex tetikleyicisindeki bağlam değişkeninin dikkate alınması yer almaktadır:

  • DML işlemlerinde tetikleyici.new ve tetikleyici.old'u kullanmayın.
  • Trigger.new silinemez.
  • Trigger.new salt okunurdur.
  • Trigger.new, yalnızca tetiklemeden önce aynı nesnedeki alanların değerlerini değiştirmek için kullanılabilir.

Aşağıdaki ekran görüntüleri, farklı tetikleyici olaylardaki belirli eylemlerle ilgili dikkat edilmesi gereken noktaları listelemektedir.

Apeks Tetikleyici

Apeks Tetikleyici

Apex'te Toplu Sınıf

Salesforce'taki Batch sınıfı, normal şekilde işlendiğinde apex regülatörü sınırlarını aşacak çok sayıda kaydı işlemek için kullanılır. Batch sınıfı, kodu eşzamansız olarak yürütür.

Toplu sınıfın avantajları şunlardır:

  • Toplu sınıf, verileri parçalar halinde işler ve bir parça başarıyla işlenemezse, başarıyla işlenen tüm parçalar geri alınmaz.
  • Bir toplu iş sınıfındaki her veri parçası, kodun regülatör yürütme limitleri dahilinde yürütülmesini sağlayan yeni bir regülatör limitleri seti ile işlenir.
  • Veri tabanı. Toplu işlenebilir arayüzün toplu sınıf olarak kullanılabilmesi için bir apex sınıfı tarafından uygulanması gerekir. Toplu iş sınıfı tarafından uygulanması gereken üç yöntem sağlar.

Aşağıda Veritabanı tarafından sağlanan üç yöntem bulunmaktadır. Toplu arayüz:

1.başlangıç()

Bu yöntem, arayüz yöntemi execute tarafından işlenecek kayıtların veya nesnelerin kapsamını oluşturur. Batch'in yürütülmesi sırasında yalnızca bir kez çağrılır. Bu yöntem, bir Database.QueryLocator nesnesi veya bir Iterable döndürür. Database.QueryLocator nesnesini kullanarak SQL sorgusu tarafından alınan kayıt sayısı 50 milyon kayıttır ancak bir iterable kullanılarak SQL sorgusu tarafından alınabilecek toplam kayıt sayısı yalnızca 50000'dir. Iterable, batch sınıfı için karmaşık kapsam oluşturmak için kullanılır.

Başlatma yönteminin sözdizimi:

global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}

2.yürüt()

Bu yöntem her bir veri yığınının işlenmesi için kullanılır. Her kayıt yığını için yürütme yöntemi çağrılır. Yürütme için varsayılan toplu iş boyutu 200 kayıttır. Execute yöntemi iki argüman alır:

Database.BatchableContext nesnesine bir başvuru,

List gibi sObject'lerin listesi veya parametreli türlerin bir listesi. Yürütme yönteminin sözdizimi:

global void execute(Database.BatchableContext BC, list<P>){}

3.bitir()

Finish yöntemi, toplu sınıfın yürütülmesi sırasında bir kez çağrılır. Finish yönteminde son işlem işlemleri gerçekleştirilebilir. Örneğin: onay e-postasını gönderme. Bu yöntem, tüm toplu iş işlendiğinde çağrılır. Finish yönteminin sözdizimi:

global void finish(Database.BatchableContext BC){}

Database.BatchableContext nesnesi

Veritabanının her yöntemi. Batchable arayüzünün Database.BatchableContext nesnesine bir referansı vardır.

Bu nesne toplu işin ilerlemesini izlemek için kullanılır.

BatchableContext tarafından sağlanan örnek yöntemler şunlardır:

  • getChildJobId(): Bu yöntem, o anda işlenmekte olan bir toplu işin kimliğini döndürür.
  • getJobId(): Bu yöntem toplu işin kimliğini döndürür.

Aşağıda bir toplu iş sınıfının sözdizimi verilmiştir:

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 Yöntem

Database.executeBatch yöntemi bir toplu iş sınıfını yürütmek için kullanılır.

Bu yöntem iki parametre alır: İşlenecek toplu iş sınıfının örneği, toplu iş boyutunu belirtmek için Seçenekler parametresi belirtilmemişse varsayılan boyut olan 200'ü alır.

Database.executeBatch'in sözdizimi:

Database.executeBatch(myBatchObject,scope)

MyBatchClass toplu sınıf adı yürütülüyor:

MyBatchClassmyBatchObject = new MyBatchClass(); 
Id batchId = Database.executeBatch(myBatchObject,100);

Veritabanı.durum bilgisi olan

Batch sınıfı varsayılan olarak durum bilgisizdir. Yürütme yöntemi her çağrıldığında, bir nesnenin yeni bir kopyası alınır, sınıfın tüm değişkenleri başlatılır.

Database.stateful, bir toplu iş sınıfını durum bilgisi olan hale getirmek için uygulanır.

Toplu sınıfınız uyguladıysa veritabanı , durum bilgisi olan arayüzde tüm örnek değişkenler değerlerini korur, ancak statik değişkenler işlem arasında sıfırlanır.

ÖZET

  • Apex güçlü bir şekilde yazılmış, nesne yönelimli bir yazılımdır. Programlama dili Force.com platformunda derlenen ve çalıştırılan
  • Apex programlama dili büyük/küçük harfe duyarlı olmayan bir dildir
  • Apex'te iki tür eylem akışı vardır: 1) Geliştirici eylemi 2) Son kullanıcı eylemi
  • Apex, Salesforce'u diğer uygulamalarla entegre eden web hizmetleri oluşturmanıza yardımcı olur.
  • Apex tarafından desteklenen veri türleri şunlardır: 1).İlkel 2) Koleksiyonlar 3) sObject, Enums, 4) Sınıflar, 5) Nesneler ve Arayüzler
  • Genel, Özel, Korumalı ve Global, Apex tarafından belirtilen destektir
  • Apex'te kullanılan anahtar kelimeler şunlardır: 1) Paylaşımlı, 2) Paylaşımsız, 3) Statik, 4) Final 5)Return, 6)Null, 7) Virtual, 8) Abstract
  • Bir dize, karakter sınırlaması olmayan bir karakter kümesidir
  • Apex regülatörü sınırları, herhangi bir pist apex kodunun ve işleminin
  • Alıcı ve ayarlayıcı, özellik değerine erişilmeden veya değiştirilmeden önce kodu yürütmek için kullanılabilir
  • Salesforce'ta apex sınıfları oluşturmanın üç yolu vardır: 1)Geliştirici Konsolu 2)Force.com IDE ve 3) Apex sınıfı ayrıntı sayfası.
  • Apex tetikleyicileri, bir DML işlemi gerçekleştirilmeden önce ve sonra özel apex yürütmenizi sağlar.
  • Salesforce'taki toplu iş sınıfı, normal şekilde işlenmesi durumunda apeks düzenleyici sınırlarını aşacak çok sayıda kaydı işlemek için kullanılır.