• vali Palagiri 1
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 2
    Replies
ERROR::
09:02:02.0 (435391)|CODE_UNIT_STARTED|[EXTERNAL]|01pP0000000Gy1L|Update_policy_status 09:04:07.202 (125202124964)|FATAL_ERROR|Internal Salesforce.com Error 09:04:07.202 (125202204681)|CUMULATIVE_LIMIT_USAGE
  1. Maximum records are showing inprogress status.
Plese find the below class:
global class Update_policy_status implements Database.Batchable<sObject>,Database.Stateful,Database.AllowsCallouts{

global list<string> subscribercontractid = new list<string>();
global list<string> responseid = new list<string>();
global list<string> membercontractid = new list<string>();
global list<string> groupresponseid = new list<string>();
global String query;
global String voidquery;
String csv = 'Policy Id, Sub/Mem_Contract_Id\n';
global String targetObjectname;
global Transaction_Log__c transactionLog;
global String message = System.now()+' : Policy Void Job Started.';
global list<Policy_Void_Criteria__c> UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
//string recname='A-1193844';

global Update_policy_status( list<Policy_Void_Criteria__c> PolicyVoidcriteria , String Objectname ){

query = 'Select id,Contract_or_Rate__c,Field_name__c,Target_Object__c,Voided_key__c,To_be_Voided__c from Policy_Void_Criteria__c where To_be_Voided__c = true and Target_Object__c = \''+Objectname+'\'';
    System.debug('Query Error'+query);
    targetObjectname = Objectname ;
    
}

global Database.QueryLocator start(Database.BatchableContext BC)
   {
        transactionLog = new Transaction_Log__c();
        transactionLog.Started_On__c = System.now();
        transactionLog.Type_of_Transaction__c = 'Policy Void Job';
        transactionLog.Status__c = 'In Progress';
        transactionLog.Logs__c = message;
        insert transactionLog;
        return Database.getQueryLocator(query);
   }
   
global void execute(Database.BatchableContext BC,List<sObject> sObjList)
   {
       system.debug('Execute Error '+sObjList);
    subscribercontractid = new list<string>();
    responseid = new list<string>();
    membercontractid = new list<string>();
    groupresponseid = new list<string>();
    UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
    
   Policyselection((list<Policy_Void_Criteria__c>)sObjList); 
       System.debug('voidquery----'+Database.query(voidquery));
       //added this code
       if(Database.query(voidquery)!=null || !(Database.query(voidquery).isEmpty())){
           UpdatePolicydata(Database.query(voidquery)); 
      
   
       try{
           system.debug('UpdateVoidedstatus Error'+UpdateVoidedstatus);
            update UpdateVoidedstatus;
       }
       catch(Exception e)
       { 
           system.debug('GetMessage Error'+e.getMessage());
           if(message.length()<30000)
            {
                system.debug('error3'+message.length());
                message = message+'\n'+e.getMessage();
                transactionLog.Status__c = 'Failed';
                transactionLog.Ended_On__c = System.now();
                transactionLog.Logs__c = message;
                system.debug('transactionLog Error'+transactionLog);
                update transactionLog;
            }           
       }
       }
   }
      
global void finish(Database.BatchableContext BC)
   { 
        message += '\n'+System.now()+' : Policy Void Job Completed for ' + targetObjectname ;
        transactionLog.Status__c = 'Policy Void Job Completed';
        transactionLog.Ended_On__c = System.now();
        transactionLog.Logs__c = message;
        update transactionLog;
        
        Attachment attach = new Attachment();
        attach.body = Blob.valueOf(csv);
        attach.Name = String.valueOf('Voided_Policy_file.csv');
        DateTime dt = Datetime.now();
        attach.ParentId = transactionLog.id; 
        insert attach;         
   }
    
public void Policyselection(list<Policy_Void_Criteria__c> voidlist){
    system.debug('voidlist error2'+voidlist);
    for (Policy_Void_Criteria__c PV : voidlist)
        {
            if(PV.Target_Object__c == 'vlocity_ins__Policy__c' && PV.Field_name__c == 'Subscriber_Contract_Id__c')
            {
              if(PV.Contract_or_Rate__c == 'SUBSCRIBER_CONTRACT')
              {
                subscribercontractid.add(PV.Voided_key__c);
              }
              else if(PV.Contract_or_Rate__c == 'RATE_RESPONSE')
              {
                responseid.add(PV.Voided_key__c);
              }
              else if(PV.Contract_or_Rate__c == 'GROUP_RATE')
              {
                groupresponseid.add(PV.Voided_key__c);
              }       
            }
            if(PV.Target_Object__c == 'vlocity_ins__PolicyPartyRelationship__c' && PV.Field_name__c == 'External_Id__c')
            {
              if(PV.Contract_or_Rate__c == 'MEMBER_CONTRACT')
              {
                membercontractid.add(PV.Voided_key__c);
              } 
            }
            PV.To_be_Voided__c = false;
            UpdateVoidedstatus.add(PV);
        }
        system.debug('criteria1'+subscribercontractid);
        system.debug('criteria2'+responseid);
        system.debug('criteria3'+groupresponseid);
    if( targetObjectname == 'vlocity_ins__Policy__c') {
        voidquery = 'select Id,Rate_Response__c,Subscriber_Contract_Id__c,Group_Policy_Id__c,Voided__c,Subscriber_Contract__c from vlocity_ins__Policy__c where Voided__c=false and (Rate_Response__c in: responseid OR Rate_Response__c in: groupresponseid OR Subscriber_Contract__c in: subscribercontractid) and (Rate_Response__c != NULL OR Subscriber_Contract__c != NULL)' ;
        system.debug('void query'+voidquery); }
     else if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')
        voidquery = 'select Id,Voided__c,External_Id__c from vlocity_ins__PolicyPartyRelationship__c where Voided__c=false and Member_Contract__c in: membercontractid';
         system.debug('void query1'+voidquery);      
    }   
   
   public void UpdatePolicydata(List<sObject> sObjList)
   {   
   system.debug('sObjList error'+sObjList);
   list<vlocity_ins__Policy__c> Policylist = new list<vlocity_ins__Policy__c>();
   list<vlocity_ins__PolicyPartyRelationship__c> Policyrelationlist = new list<vlocity_ins__PolicyPartyRelationship__c>();
    system.debug('query is'+sobjList.size());
    if(sObjList.size()>0 )
    {
        if(targetObjectname == 'vlocity_ins__Policy__c')  
        { 
            For(vlocity_ins__Policy__c Po : (list<vlocity_ins__Policy__c>)sObjList)
            {   
               system.debug('n is'+po); 
                Po.Voided__c = True ;
                Policylist.add(Po);
                system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);
                if(Po.Subscriber_Contract_Id__c != null && Po.Subscriber_Contract_Id__c != '')
                    { csv += Po.id + ',' + Po.Subscriber_Contract_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
                if(Po.Group_Policy_Id__c != null && Po.Group_Policy_Id__c != '')
                    { csv += Po.id + ',' + Po.Group_Policy_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
            }
            system.debug('n is'+csv);
            ProcessDatainChunk(Policylist);
        }
        if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')  
        {
            For(vlocity_ins__PolicyPartyRelationship__c PPR : (list<vlocity_ins__PolicyPartyRelationship__c>)sObjList)
            {
                PPR.Voided__c = True ;
                Policyrelationlist.add(PPR);
                csv += PPR.id + ',' + PPR.External_Id__c.escapeCsv() + '\n';
            }
            ProcessDatainChunk(Policyrelationlist);
        }
    } 
    System.debug ('############# '+ message); 
   
   }
   public void ProcessDatainChunk(List<sObject> sObjList)
   {
     integer i=0;
     integer j;
     
     list<sObject> lstsObject=new list<sObject>();
     map<id,sObject> mapsObj= new map<id,sObject>();
     
     while(i < sObjList.size())
     {
        for(j=i; j<i+7000; j++)
        {
            if(j<sObjList.size()) mapsObj.put(sObjList[j].id,sObjList[j]);
            else break;
        }
        try{
            update mapsObj.values();
        }
        catch(Exception e)
        {
            message += '\n'+System.now()+' : The Policy Void Update failed ' + e ;
        }
        i=j+1;  
        System.debug ('#############1 '+ message); 
        
     }
   }

}
Hello fiends,

When i execute my batch apex i am getting the fatal error like "SerialBatchApexRangeChunkHandler    Apex CPU time limit exceeded".
Batch Apex:
global class Update_policy_status implements Database.Batchable<sObject>,Database.Stateful,Database.AllowsCallouts{

global list<string> subscribercontractid = new list<string>();
global list<string> responseid = new list<string>();
global list<string> membercontractid = new list<string>();
global list<string> groupresponseid = new list<string>();
global String query;
global String voidquery;
String csv = 'Policy Id, Sub/Mem_Contract_Id\n';
global String targetObjectname;
global Transaction_Log__c transactionLog;
global String message = System.now()+' : Policy Void Job Started.';
global list<Policy_Void_Criteria__c> UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
//string recname='A-1193844';

global Update_policy_status( list<Policy_Void_Criteria__c> PolicyVoidcriteria , String Objectname ){

query = 'Select id,Contract_or_Rate__c,Field_name__c,Target_Object__c,Voided_key__c,To_be_Voided__c from Policy_Void_Criteria__c where To_be_Voided__c = true and Target_Object__c = \''+Objectname+'\'';
targetObjectname = Objectname ;
}

global Database.QueryLocator start(Database.BatchableContext BC)
   {
        transactionLog = new Transaction_Log__c();
        transactionLog.Started_On__c = System.now();
        transactionLog.Type_of_Transaction__c = 'Policy Void Job';
        transactionLog.Status__c = 'In Progress';
        transactionLog.Logs__c = message;
        insert transactionLog;
        return Database.getQueryLocator(query);
   }
   
global void execute(Database.BatchableContext BC,List<sObject> sObjList)
   {   
    subscribercontractid = new list<string>();
    responseid = new list<string>();
    membercontractid = new list<string>();
    groupresponseid = new list<string>();
    UpdateVoidedstatus = new list<Policy_Void_Criteria__c>();
    
   Policyselection((list<Policy_Void_Criteria__c>)sObjList);  
   UpdatePolicydata(Database.query(voidquery)); 
   
       try{
            update UpdateVoidedstatus;
       }
       catch(Exception e)
       { 
           if(message.length()<30000)
            {
                message = message+'\n'+e.getMessage();
                transactionLog.Status__c = 'Failed';
                transactionLog.Ended_On__c = System.now();
                transactionLog.Logs__c = message;
                update transactionLog;
            }           
       }
   }
      
global void finish(Database.BatchableContext BC)
   { 
        message += '\n'+System.now()+' : Policy Void Job Completed for ' + targetObjectname ;
        transactionLog.Status__c = 'Policy Void Job Completed';
        transactionLog.Ended_On__c = System.now();
        transactionLog.Logs__c = message;
        update transactionLog;
        
        Attachment attach = new Attachment();
        attach.body = Blob.valueOf(csv);
        attach.Name = String.valueOf('Voided_Policy_file.csv');
        DateTime dt = Datetime.now();
        attach.ParentId = transactionLog.id; 
        insert attach;         
   }

public void Policyselection(list<Policy_Void_Criteria__c> voidlist){

    for (Policy_Void_Criteria__c PV : voidlist)
        {
            if(PV.Target_Object__c == 'vlocity_ins__Policy__c' && PV.Field_name__c == 'Subscriber_Contract_Id__c')
            {
              if(PV.Contract_or_Rate__c == 'SUBSCRIBER_CONTRACT')
              {
                subscribercontractid.add(PV.Voided_key__c);
              }
              else if(PV.Contract_or_Rate__c == 'RATE_RESPONSE')
              {
                responseid.add(PV.Voided_key__c);
              }
              else if(PV.Contract_or_Rate__c == 'GROUP_RATE')
              {
                groupresponseid.add(PV.Voided_key__c);
              }       
            }
            if(PV.Target_Object__c == 'vlocity_ins__PolicyPartyRelationship__c' && PV.Field_name__c == 'External_Id__c')
            {
              if(PV.Contract_or_Rate__c == 'MEMBER_CONTRACT')
              {
                membercontractid.add(PV.Voided_key__c);
              } 
            }
            PV.To_be_Voided__c = false;
            UpdateVoidedstatus.add(PV);
        }
        system.debug('criteria'+subscribercontractid);
        system.debug('criteria'+responseid);
        system.debug('criteria'+groupresponseid);
        if( targetObjectname == 'vlocity_ins__Policy__c') 
        voidquery = 'select Id,Subscriber_Contract_Id__c,Group_Policy_Id__c,Voided__c from vlocity_ins__Policy__c where Voided__c=false and (Rate_Response__c in: responseid OR Rate_Response__c in: groupresponseid OR Subscriber_Contract__c in: subscribercontractid) and (Rate_Response__c != NULL OR Rate_Response__c != NULL OR Subscriber_Contract__c != NULL)' ;
        else if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')
        voidquery = 'select Id,Voided__c,External_Id__c from vlocity_ins__PolicyPartyRelationship__c where Voided__c=false and Member_Contract__c in: membercontractid';
         system.debug('void query'+voidquery);      
    }   
   
   public void UpdatePolicydata(List<sObject> sObjList)
   {   
   
   list<vlocity_ins__Policy__c> Policylist = new list<vlocity_ins__Policy__c>();
   list<vlocity_ins__PolicyPartyRelationship__c> Policyrelationlist = new list<vlocity_ins__PolicyPartyRelationship__c>();
    system.debug('query is'+sobjList.size());
    if(sObjList.size()>0)
    {
        if(targetObjectname == 'vlocity_ins__Policy__c')  
        { 
            For(vlocity_ins__Policy__c Po : (list<vlocity_ins__Policy__c>)sObjList)
            {   
               system.debug('n is'+po); 
                Po.Voided__c = True ;
                Policylist.add(Po);
                system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);
                if(Po.Subscriber_Contract_Id__c != null && Po.Subscriber_Contract_Id__c != '')
                    { csv += Po.id + ',' + Po.Subscriber_Contract_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
                if(Po.Group_Policy_Id__c != null && Po.Group_Policy_Id__c != '')
                    { csv += Po.id + ',' + Po.Group_Policy_Id__c.escapeCsv() + '\n'; system.debug('targetObjectname == vlocity_ins__Policy__c '+ Po);}
            }
            system.debug('n is'+csv);
            ProcessDatainChunk(Policylist);
        }
        if(targetObjectname == 'vlocity_ins__PolicyPartyRelationship__c')  
        {
            For(vlocity_ins__PolicyPartyRelationship__c PPR : (list<vlocity_ins__PolicyPartyRelationship__c>)sObjList)
            {
                PPR.Voided__c = True ;
                Policyrelationlist.add(PPR);
                csv += PPR.id + ',' + PPR.External_Id__c.escapeCsv() + '\n';
            }
            ProcessDatainChunk(Policyrelationlist);
        }
    } 
    System.debug ('############# '+ message); 
   
   }
   public void ProcessDatainChunk(List<sObject> sObjList)
   {
     integer i=0;
     integer j;
     
     list<sObject> lstsObject=new list<sObject>();
     map<id,sObject> mapsObj= new map<id,sObject>();
     
     while(i<sObjList.size())
     {
        for(j=i; j<i+3000; j++)
        {
            if(j<sObjList.size()) mapsObj.put(sObjList[j].id,sObjList[j]);
            else break;
        }
        try{
            update mapsObj.values();
        }
        catch(Exception e)
        {
            message += '\n'+System.now()+' : The Policy Void Update failed ' + e ;
        }
        i=j+1;  
        System.debug ('############# '+ message); 
        
     }
   }

}

Please help on this.
Hi Folks,


Apex CPU time limit exceeded
Error is in expression '{!importCSVFile}' in component <apex:commandButton> in page fssrscsvuploaded: Class.FSSRSCSVUploaded.importCSVFile: line 73, column 1
An unexpected error has occurred. Your development organization has been notified.

When i upload csv file into object am getting this error.
Find below code:
public with sharing class FSSRSCSVUploaded {
    public Blob csvFileBody {get;set;}
    public string csvAsString {get;set;}
    public string[] csvFileLines {get;set;}
    List<Analyst_Schedule__c> analystlist ;
    List<String> storenames = new List<String>();//Get the all storeNames
    
    public FSSRSCSVUploaded()
    {
        csvFileLines = new String[]{};
            analystlist = new List<Analyst_Schedule__c>();
    }
    public void importCSVFile(){
        
        try{
            if(csvFileBody == null)
            {
                ApexPages.Message Message1 = new ApexPages.Message(ApexPages.severity.INFO,'Please attach AnalystSchedule List');
                ApexPages.addMessage(Message1);
            }
            else
            {
                system.debug('---csvFileBody---'+csvFileBody);
                csvAsString = csvFileBody.toString();
                csvFileLines = csvAsString.split('\n');
                
                for(Integer i=1; i < csvFileLines.size(); i++ )
                {
                    Analyst_Schedule__c annObj = new Analyst_Schedule__c();
                    String[] csvRecordData = csvFileLines[i].split(',');
                    
                    annObj.Name=csvRecordData[0];
                    annObj.Chain__c=csvRecordData[1];
                    //annObj.Location__c=csvRecordData[2];
                    storenames.add(csvRecordData[2]);
                    annObj.Energy_Base__c=csvRecordData[3];
                    annObj.Controller__c=csvRecordData[4];
                    annObj.Schedule_Confirmed__c=csvRecordData[5];
                    analystlist.add(annObj);
                }
                if(analystlist.size() > 0)
                    insert analystlist;
                
                ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.CONFIRM,'insertion was completed');
                ApexPages.addMessage(msg);
            }
        }
        catch (Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.Severity.ERROR,'An error has occured');
            ApexPages.addMessage(errorMessage);
        }
        
        //Query for the AnalystSchedule records that have matching store names
        Map<String, Id> mapIds = new Map<String, Id>();
        for(Store__c sto:[SELECT ID,Name From Store__c where Name IN: storenames])
        {
            
            mapIds.put(sto.Name, sto.Id);
        }
        //Set<Id> setIds=new Set<Id>();
        //set the Store Id for Each storeNames
        for(Integer i=0; i < analystlist.size();)
        {
            Analyst_Schedule__c ana = analystlist[i];
           Id id = mapIds.get(storenames[i]);
            if(id != null)
            {    
                ana.Location__c = id;
            }
            else
            {
                ApexPages.Message msg1 = new ApexPages.Message(ApexPages.Severity.ERROR,'No match for the StoreName');
                ApexPages.addMessage(msg1);
            }
        }
    }
}
Please give anysuggesitions for this solution.
Thanks in Advance.

Thanks,
Khadhar
Hi Folks,


Apex CPU time limit exceeded
Error is in expression '{!importCSVFile}' in component <apex:commandButton> in page fssrscsvuploaded: Class.FSSRSCSVUploaded.importCSVFile: line 73, column 1
An unexpected error has occurred. Your development organization has been notified.

When i upload csv file into object am getting this error.
Find below code:
public with sharing class FSSRSCSVUploaded {
    public Blob csvFileBody {get;set;}
    public string csvAsString {get;set;}
    public string[] csvFileLines {get;set;}
    List<Analyst_Schedule__c> analystlist ;
    List<String> storenames = new List<String>();//Get the all storeNames
    
    public FSSRSCSVUploaded()
    {
        csvFileLines = new String[]{};
            analystlist = new List<Analyst_Schedule__c>();
    }
    public void importCSVFile(){
        
        try{
            if(csvFileBody == null)
            {
                ApexPages.Message Message1 = new ApexPages.Message(ApexPages.severity.INFO,'Please attach AnalystSchedule List');
                ApexPages.addMessage(Message1);
            }
            else
            {
                system.debug('---csvFileBody---'+csvFileBody);
                csvAsString = csvFileBody.toString();
                csvFileLines = csvAsString.split('\n');
                
                for(Integer i=1; i < csvFileLines.size(); i++ )
                {
                    Analyst_Schedule__c annObj = new Analyst_Schedule__c();
                    String[] csvRecordData = csvFileLines[i].split(',');
                    
                    annObj.Name=csvRecordData[0];
                    annObj.Chain__c=csvRecordData[1];
                    //annObj.Location__c=csvRecordData[2];
                    storenames.add(csvRecordData[2]);
                    annObj.Energy_Base__c=csvRecordData[3];
                    annObj.Controller__c=csvRecordData[4];
                    annObj.Schedule_Confirmed__c=csvRecordData[5];
                    analystlist.add(annObj);
                }
                if(analystlist.size() > 0)
                    insert analystlist;
                
                ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.CONFIRM,'insertion was completed');
                ApexPages.addMessage(msg);
            }
        }
        catch (Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.Severity.ERROR,'An error has occured');
            ApexPages.addMessage(errorMessage);
        }
        
        //Query for the AnalystSchedule records that have matching store names
        Map<String, Id> mapIds = new Map<String, Id>();
        for(Store__c sto:[SELECT ID,Name From Store__c where Name IN: storenames])
        {
            
            mapIds.put(sto.Name, sto.Id);
        }
        //Set<Id> setIds=new Set<Id>();
        //set the Store Id for Each storeNames
        for(Integer i=0; i < analystlist.size();)
        {
            Analyst_Schedule__c ana = analystlist[i];
           Id id = mapIds.get(storenames[i]);
            if(id != null)
            {    
                ana.Location__c = id;
            }
            else
            {
                ApexPages.Message msg1 = new ApexPages.Message(ApexPages.Severity.ERROR,'No match for the StoreName');
                ApexPages.addMessage(msg1);
            }
        }
    }
}
Please give anysuggesitions for this solution.
Thanks in Advance.

Thanks,
Khadhar
<aura:component controller="MyContactListController" implements="flexipage:availableForRecordHome,force:hasRecordId" access="global" >
<aura:attribute name="recordId" type="Id" />
<aura:attribute name="Account" type="Account" />
<aura:attribute name="Contacts" type="Contact" />
<aura:attribute name="Columns" type="List" />

<force:recordData aura:id="accountRecord"
                  recordId="{!v.recordId}"
                  targetFields="{!v.Account}"
                  layoutType="FULL"
                  />

<lightning:card iconName="standard:contact" title="{! 'Contact List for ' + v.Account.Name}">
    <ul>
    <lightning:datatable data="{! v.Contacts }" columns="{! v.Columns }" hideCheckboxColumn="true"/></ul> 
     </lightning:card>
    <aura:handler name="init" value="{!this}" action="{!c.myAction}" />
</aura:component>