Veritabanı Nasıl Kullanılır. Salesforce'ta Toplu Apex Durum Bilgisi
Yayınlanan: 2023-11-21Öncelikle Batch Apex kullanmak istiyorsak Salesforce tarafından sağlanan arayüz Veritabanını uygulayan bir Apex Sınıfı yazmamız gerektiğini anlamalıyız. Batchable yapın ve ardından sınıfı programlı olarak çağırın. Toplu Apex işinin yürütülmesini izlemek veya durdurmak için Kurulum'dan Hızlı Bul kutusuna Apex İşleri yazın ve ardından Apex İşleri'ni seçin.
Bu yazıda Veritabanının güçlü özelliklerine değineceğiz. Batch Apex'te durum bilgisi. Veritabanını Anlamak. Durum bilgisi, toplu iş yürütmeleri genelinde durumu korumak için gereklidir; geliştiricilerin örnek değişkenleri korumasına ve daha karmaşık, duruma duyarlı toplu işlemler yapmasına olanak tanır.
Toplu İş için Sözdizimi:
BatchName global sınıfı Database.Batchable{}'ı uygular
Toplu Sınıf Yöntemleri:
global (Database.QueryLocator | Yinelenebilir) start (Database.BatchableContext bc) { //Burada sorguyu ekleyeceğiz ve sonucu yürütme yöntemine döndüreceğiz } genel geçersiz çalıştırma (Database.BatchableContext BC, liste<P>){ //Mantık burada olmalı } genel geçersiz sonlandırma (Database.BatchableContext BC){ //tüm partilerin işlenmesinden sonra bu yöntem çağrılacak. İçine istediğimiz kodu yazabiliriz. Yürütme yönteminde oluşturulan veya güncellenen tüm kayıtlara e-posta göndermek istiyorsanız beğenin. }
Ayrıca Okuyun: Salesforce'ta Özel Rapor Türü Nasıl Oluşturulur?
Database.Batchable Arayüzünün Uygulanması
Örnek:
BatchAccountUpdate küresel sınıfı Database.Batchable'ı uygular{ String query = 'Hesap WHERE Adından Ad Seçin! = null AND (Ad = \'Virendra Şirketi\' VEYA Ad = \'Virendra Sharma\') '; global Database.QueryLocator start (Database.BatchableContext bc) { // yürütülmek üzere iletilecek kayıt veya nesne gruplarını toplayın return Database.getQueryLocator(sorgu); } genel geçersiz çalıştırma (Database.BatchableContext bc, Kayıtları listele) { // her bir kayıt kümesini işliyoruz (Hesap hesabı: kayıtlar){ acc.Name = acc.Name + 'Güncellendi'; } kayıtları güncelle; } genel geçersiz bitiş (Database.BatchableContext bc){ // herhangi bir işlem sonrası işlemi gerçekleştirin, toplu sınıfı çağırın. BatchUpdateAccountRelatedContacts b = new BatchUpdateAccountRelatedContacts(); Database.executeBatch(b, 200); } }
Veritabanı.Durum bilgisi olan
Aşağıdaki örnek sınıf, bir QueryLocator kullanarak start() yöntemiyle iletilen tüm hesap kayıtlarını bulur ve ilişkili kişileri hesaplarının posta adresiyle günceller. Son olarak, toplu işin sonuçlarını içeren bir e-posta gönderir ve durumu izlemek için Database.Stateful kullandığımız için güncellenen kayıt sayısını gönderir.
Örnek:
Database.AllowsCallout
Batch'teki Database.AllowsCallout, Salesforce'un harici bir sunucuyla entegre edilmesine yardımcı olur. Toplu Apex'te bir belirtme çizgisi kullanmak için, toplu iş sınıfının sınıf tanımında Database.AllowsCallouts arayüzünü kullanmalıyız.
Sözdizimi:
küresel sınıf SearchAndReplace, Database.Batchable ve Database.AllowsCallouts'u uygular{}
Örnek:
Burada Opportunity nesnesini Razorsync.com ile entegre ediyorum
/*
Razorsync'ten hizmet isteği alın ve bunu satış ekibine güncelleyin
*/
Batch_SR_RazorSyncAPI küresel sınıfı, Database.Batchable, Database.AllowsCallouts{'u uygular global Database.QueryLocator başlangıcı (Database.BatchableContext BC){ Dize sorgusu = 'Kimliği SEÇİN, Razorsync_Service_Request_Id__c FROM Opportunity NEREDE Razorsync_Service_Request_Id__c != null VE Razorsync_Job_Status__c != \'İş Bitti\' VE RazorSync_Status__c = \'Başarılı\''; return Database.getQueryLocator(sorgu); } genel geçersiz çalıştırma (Database.BatchableContext BC, Liste kapsamı){ Dize Durumu; for (Fırsatlar : kapsam){ //Servis İsteğini al System.debug(s.Id); Http http1 = yeni Http(); HttpRequest isteği1 = yeni HttpRequest(); request1.setEndpoint('https://DomainName.0.razorsync.com/ApiService.svc/ServiceRequest/'+ s.Razorsync_Service_Request_Id__c); request1.setMethod('GET'); request1.setHeader('Content-Type', 'application/json'); request1.setHeader('Ana Bilgisayar', 'Etki AlanıAdı.0.razorsync.com'); request1.setHeader('İçerik Uzunluğu', '0'); request1.setHeader('Bağlantı', 'Hayatta Tut'); request1.setHeader('SunucuAdı', 'Etki AlanıSunucuAdı'); request1.setHeader('Jeton', 'XXXXXXXXXXXXXXXXXXXXXXX'); HttpResponse yanıtı1 = http1.send(request1); if(response1.getStatusCode() == 200) { Durum; JSONParser ayrıştırıcısı = JSON.createParser(response1.getBody()); while(parser.nextToken() != null) { if( (parser.getCurrentToken() == JSONToken.FIELD_NAME) && (parser.getText() == 'StatusId') || Test.isRunningTest()) { parser.nextToken(); StatusId = ayrıştırıcı.getText(); } } System.debug(StatusId); if(StatusId == String.valueOf(1) || Test.isRunningTest()){ s.Razorsync_Job_Status__c = 'İş Tamamlandı'; s.StageName = 'Kapalı Kazanıldı'; }başka{ s.Razorsync_Job_Status__c = 'Çalışıyor'; } } } güncelleme kapsamı; } genel geçersiz sonlandırma (Database.BatchableContext BC){ } }
Ayrıca Okuyun: Salesforce Commerce Cloud'un Faydaları ve Salesforce'ta Apex'ten Akışların Nasıl Çağrılacağı
Çözüm
Salesforce'ta Batch Apex'te Database.Stateful'un kullanılması, bir toplu işteki farklı yürütme yöntemlerinde durumun korunmasına olanak tanır. Bu, karmaşık veri işlemenin gerekli olduğu ve durumun toplu parçalar arasında tutulması gereken senaryolar için çok önemlidir.
Geliştiriciler Database.Stateful'u uygulayarak veri tutarlılığını sağlayabilir ve büyük veri kümelerini etkili bir şekilde yönetebilir. Ancak aşırı bellek tüketimini ve olası performans sorunlarını önlemek için bu özelliğin dikkatli kullanılması önemlidir.
En iyi uygulamalar arasında durum değişkenlerini minimum düzeyde tutmak ve temel verilere odaklanmak yer alır; böylece Database.Stateful , Salesforce'ta karmaşık, duruma bağlı toplu işleme için güçlü bir araç haline gelir.
Bir satış gücü projesiyle ilgili daha fazla yardım için bizi satış gücü danışmanınız olarak işe alın ve avantajlardan yararlanın.