function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Steven Wellman 11Steven Wellman 11 

Getting Apex CPU time limit exceeded

I'm not sure why it's failing when I try to run 1000 records through. Anything I can do? 

Here's my Trigger:
trigger PlaybooksEnrollmentLead on Lead (before update, after update) {
    
    if(trigger.isbefore) {
        Map<Id, Lead> leadMap = new Map<Id, Lead>();
        for(Lead l : trigger.new) {
            Lead oldLead = trigger.oldMap.get(l.Id);
    
            if(oldLead.Playbooks_Play_Name__c != l.Playbooks_Play_Name__c && l.Playbooks_Play_Name__c != null) {
                // Pass this to class that creates new Enrollment
                PlaybooksEnrollmentEngine.CreateRecordLead(trigger.new);
            } else if(oldLead.Playbooks_Play_Status__c != l.Playbooks_Play_Status__c  ||
                       oldLead.Playbooks_Step_Number__c != l.Playbooks_Step_Number__c) {
                leadMap.put(l.Id, l);
                PlaybooksEnrollmentEngine.UpdateEnrollmentLead(leadMap);
            }
        }
    }

    if(trigger.isAfter) {
        Map<Id, Lead> leadMap = new Map<Id, Lead>();
        for(Lead l : trigger.new){
            if(l.IsConverted == TRUE && l.Playbooks_Play_Name__c != null && l.Playbooks_Play_Status__c != 'Failure' && l.Playbooks_Play_Status__c != 'Unenrolled') {
                leadMap.put(l.Id, l);
                PlaybooksEnrollmentEngine.LeadConverted(leadMap);
            }
        }
    }
    
}
And here's my Class:
public class PlaybooksEnrollmentEngine {

    public static void CreateRecordLead(List<Lead> leads) {
        
        // Create a list that inserts the PB Enrollment records
        List<Playbooks_Enrollment__c> insertList = new List<Playbooks_Enrollment__c>();

        for(Lead l : leads){
            // Create new Playbooks Enrollment record
            Playbooks_Enrollment__c pbE = new Playbooks_Enrollment__c();

            pbE.Object_Enrolled__c = 'Lead';
            pbE.Lead__c = l.Id;
            pbE.Name             = l.Playbooks_Play_Name__c;
            pbE.Enroller__c      = l.LastModifiedById;
            pbE.Play_Name__c     = l.Playbooks_Play_Name__c;
            pbE.Next_Step_Due__c = l.Playbooks_Next_Step_Due_Date__c;
            pbE.Play_Status__c   = l.Playbooks_Play_Status__c;
            pbE.Step_Number__c   = l.Playbooks_Step_Number__c; 

            if(!insertList.contains(pbE)){
                insertList.add(pbE);
            }
        }

        insert insertList;
    }
}

It's currently happening when I update the fields to trigger on Before Update, not the conversion part. Any help is appreciated, thanks!
Best Answer chosen by Steven Wellman 11
Andrew GAndrew G
Here is the problem:
//here we start a loop
for(Lead l : trigger.new) {      
            Lead oldLead = trigger.oldMap.get(l.Id);
    
            if(oldLead.Playbooks_Play_Name__c != l.Playbooks_Play_Name__c && l.Playbooks_Play_Name__c != null) {
                // Pass this to class that creates new Enrollment
//here we pass the full list again and again in the loop
                PlaybooksEnrollmentEngine.CreateRecordLead(trigger.new);  
            } else if(oldLead.Playbooks_Play_Status__c != l.Playbooks_Play_Status__c  ||
                       oldLead.Playbooks_Step_Number__c != l.Playbooks_Step_Number__c) {
                leadMap.put(l.Id, l);
                PlaybooksEnrollmentEngine.UpdateEnrollmentLead(leadMap);
            }
        }
if we note the two extra comments, fundamentally we have a loop that is inserting a 1000 records each time.  So if we have 1000 records, we invoke the method to insert 1000 records 1000 times.

Not understanding your full requirement, I would adjust the code that so the first loop creates a list of records.  And then outside that loop invoke the handler class you created.

HTH

Andrew

 

All Answers

Andrew GAndrew G
Here is the problem:
//here we start a loop
for(Lead l : trigger.new) {      
            Lead oldLead = trigger.oldMap.get(l.Id);
    
            if(oldLead.Playbooks_Play_Name__c != l.Playbooks_Play_Name__c && l.Playbooks_Play_Name__c != null) {
                // Pass this to class that creates new Enrollment
//here we pass the full list again and again in the loop
                PlaybooksEnrollmentEngine.CreateRecordLead(trigger.new);  
            } else if(oldLead.Playbooks_Play_Status__c != l.Playbooks_Play_Status__c  ||
                       oldLead.Playbooks_Step_Number__c != l.Playbooks_Step_Number__c) {
                leadMap.put(l.Id, l);
                PlaybooksEnrollmentEngine.UpdateEnrollmentLead(leadMap);
            }
        }
if we note the two extra comments, fundamentally we have a loop that is inserting a 1000 records each time.  So if we have 1000 records, we invoke the method to insert 1000 records 1000 times.

Not understanding your full requirement, I would adjust the code that so the first loop creates a list of records.  And then outside that loop invoke the handler class you created.

HTH

Andrew

 
This was selected as the best answer
nguyen tainguyen tai
Nằm mơ thấy trúng số (an ủi, độc đắc, đặc biệt, Vietlot, kiến thiết) mang điềm báo gì?
Nếu bạn nằm mơ thấy trúng xổ số (https://xsmb99.me/) độc đắc (đặc biệt) hoặc trúng an ủi mang điềm báo trong tương lai sắp tới bạn đang có hoặc được tạo điều kiện, cơ hội để bức phá, thăng tiến trong công việc, sự nghiệp. Nằm mơ thấy trúng số liên quan đến những con số như số 68 và 86, mơ thấy trúng vé số kiến thiết thì số 08 và 28.
Giấc mơ trúng số khá phổ biến ở mọi người
Trong tất cả các loại giấc mơ thì có lẽ có rất nhiều người mơ thấy mình trúng số độc đắc hoặc trúng Vietlot, trúng số an ủi. Đây là một giấc mơ phổ biến và là mong ước cả trong mơ lẫn đời thực của mọi người.
Ai ai cũng ao ước được một lần đổi đời nhờ tấm vé số kia. Tuy nhiên, giấc mơ trúng vé số cũng không phải là giấc mơ ngẫu nhiên mà ai ai cũng có thể mơ thấy được.
Chiêm bao về việc trúng vé số là một điềm báo khá chuẩn xác về những điều sắp xảy đến trong tương lai và mọi khía cạnh trong cuộc sống, cả gia đình, tình cảm lẫn công việc, thậm chí đến cả sự an nguy của bản thân bạn. Chính vì thế đối với những ai mơ thấy mình trúng vé số thì nên tìm hiểu kỹ những ý nghĩa mà nó mang lại nhầm chuẩn bị tâm lý đón nhận và ứng phó.
Bài viết dưới đây Netmode đã tổng hợp được những lý giải và phân tích đáng tin cậy từ các chuyên gia đối với việc chiêm bao, nằm mơ thấy trúng vé số an ủi hoặc trúng độc đắc, hãy cùng tham khảo ngay nhé!
1. Nằm mơ thấy trúng số là điềm gì?
Một trong những điều may mắn nhất đối với bản thân, gia đình hay bất cứ người nào đó chính là việc trúng số. Gia đình bạn sẽ đổi vận, trở nên sung túc và giàu có hơn trước. Tuy nhiên, giấc mơ trúng số không chỉ mang điềm lành mà đôi khi còn có thể tiềm ẩn những điều tai quái không thể lường trước được.
Có khá nhiều viễn cảnh mơ về trúng số, với nhiều tình tiết khác nhau mang một màu sắc khác nhau. Mỗi giấc mơ mang một ý nghĩa khác biệt mà chúng ta không thể nào biết hết được. Dưới đây, Netmode đã tổng hợp một số lý giải đáng tin cậy về giấc mơ trúng số giúp các bạn có thể tham khảo:
Theo như ông bà xưa quan niệm thì nếu ai nằm mơ thấy mình trúng số thì rất có thể trong thời gian tới bạn sẽ bị hao tiền tốn của. Đối với những ai có tâm lý lúc nào cũng nghĩ đến tiền bạc thì hay nằm mơ giấc mơ này. Điều này chỉ làm cho tâm trí bạn càng ngày càng mệt mỏi hơn.
Chính vì thế, khi làm bất cứ chuyện gì liên quan đến tiền bạn cũng nên suy tính thật cẩn thận. Đừng nên quá mạo hiểm khi bản thân mình chưa hiểu rõ công việc đó hoặc vung tiền quá mức để làm một việc gì đó dẫn tới suy kiệt.
Bạn nằm mơ thấy người thân trúng số
Gia đình bạn sắp gặp được điều may mắn nếu bạn nằm mơ thấy người thân trúng số. Gia đình bạn sẽ có những tháng ngày bình yên và mọi chuyện phiền lo sẽ được giải quyết nhanh chóng.
Gia đình bạn sẽ vượt qua được khó khăn trước mắt. Những dự định mới, việc làm ăn buôn bán sắp tới sẽ có bước tiến triển tốt đẹp hơn. Gia đình bạn sẽ trở nên hòa thuận và sống một cuộc sống sung túc nhất kể từ thời điểm này.
Bạn nằm mơ thấy đang đi lãnh tiền trúng số
Bạn sắp nhận được một số tiền nhỏ nếu bạn nằm mơ thấy bạn đang đi lãnh tiền trúng số. Những khoản đầu tư từ trước tới giờ, dồn sức dồn tâm vào xây dựng việc làm ăn buôn bán sẽ có một khoản lợi nhuận hậu hĩnh dành cho bạn. Muốn tăng cơ hội trúng số bạn có thể đến dự đoán xổ số 3 miền bắc trung nam miễn phí (https://xsmb99.me/du-doan-xo-so-soi-cau.html) để tìm được những con số may mắn
Ngoài ra, sắp tới bạn sẽ phát tài nhờ buôn bán. Cơ hội làm giàu sẽ nhanh chóng đến với bạn nhờ vào việc móc nối các mối quan hệ có được và tận dụng triệt để cơ hội làm ăn.
Mơ thấy người chết về cho số
Hãy ghi nhớ kỹ những con số trong giấc mơ khi bạn mơ thấy người đã khuất về đưa số. Đây là một cơ hội tuyệt vời bạn không nên bỏ qua bởi con số này dành cho bạn.
Những con số trong giấc mộng thường giúp khá nhiều người đổi đời ngay sau đó. Bạn hãy nhanh chóng tìm kiếm những con số đó ngay cho bản thân. Không lâu sau đó bạn sẽ trở nên giàu có vì được thần may mắn ghé thăm đấy.
Mơ thấy người khác đưa vé số trúng cho mình
Thời điểm báo hiệu bạn sắp tỏa sáng trong công việc chính là mơ thấy người khác đưa vé số trúng cho mình. Có thể bạn sẽ được đồng nghiệp ngưỡng mộ hơn trong công việc vì được cấp trên cân nhắc vào vị trí cao hơn.
Bạn sẽ nhận được sự giúp đỡ từ người xung quanh chỉ trong thời gian ngắn và giá trị bản thân bạn sẽ tăng lên. Trong tương lai gần bạn sẽ có thể trở thành người có đức cao vọng trọng.
2. Mơ thấy trúng số độc đắc có ý nghĩa gì?
Những ai thích sưu tầm vé số và mua chúng thường là những người mong muốn được một lần trúng số. Bởi vì nếu vào giải độc đắc thì cuộc đời mọi người sẽ bước sang trang mới. Nếu bạn trúng giải cao nhất, bạn sẽ sở hữu tiền tỷ trong tay và trở thành người giàu có trong phút chốc.
Vinh hoa phú quý đang chờ đón bạn phía trước
Tuy nhiên, những giấc mơ liên quan đến trúng số thường mang nhiều hàm ý bí ẩn. Để có thể hiểu chính xác những điều mà giấc mơ muốn báo hiệu cho chúng ta thì hãy tham khảo những lý giải chính xác dưới đây:
Khác với những giấc mơ khác, giấc mơ về trúng số sẽ báo hiệu vận mệnh và tương lai của bạn trong thời gian tới một cách chính xác nhất. Trong tương lai bạn đang có cơ hội bức phá và thăng tiến trong công việc dựa trên những cơ sở, cơ hội sẵn có. Tuy nhiên, bạn nên dành nhiều thời gian hơn để bồi dưỡng thêm kiến thức và thực lực của chính mình.
– Một thông báo cho thấy hiện tại cuộc sống của bạn đang rất hạnh phúc, sung túc. Cuộc sống vô cùng bình yên và thoải mái khi bạn chiêm bao thấy số 2.
– Cuộc sống của bạn đang vô cùng bình yên và thoải mái nếu bạn nằm mơ thấy số 3. Bên cạnh đó đời sống vật chất và tinh thần của bạn đang rất hạnh phúc, sung túc.
– Bạn nên xem xét lại sức khỏe và công việc của mình nếu bạn mơ thấy số 4. Sức khỏe bạn sẽ sụt giảm và gặp nhiều khó khăn nếu bạn còn làm việc quá sức. Bên cạnh đó, bạn cũng sẽ bị hao tốn tiền bạc.
– Bạn nên kiềm chế bản thân mình nếu bạn nằm mơ thấy con số 5. Những hành động nóng nảy, tự phát của bạn sẽ khiến người khác tổn thương.
– Xin chúc mừng đến những bạn nằm mơ thấy số 6 vì bạn sắp gặp vận may đấy. Bạn sẽ đạt được nhiều thành công như mong đợi nếu bạn bắt tay vào dự án mới.
Ngoài ra, bạn có thể đến chuyên mục xổ số miền bắc (https://xsmb99.me/xsmb-xo-so-mien-bac.html) để dò vé số hoặc tìm xem kết quả xổ số miền bắc.