-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
3Questions
-
2Replies
batch class issue while splitting the data from Source to Target objects.
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
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);
}
}
}
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
- Maximum records are showing inprogress status.
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);
}
}
}
- vali Palagiri 1
- April 29, 2019
- Like
- 0
Help with CPU time limit Exception in batch apex
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.
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.
- vali Palagiri 1
- January 21, 2019
- Like
- 0
CPU Time Exception Error
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
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
- vali Palagiri 1
- July 04, 2018
- Like
- 0
CPU Time Exception Error
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
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
- vali Palagiri 1
- July 04, 2018
- Like
- 0
The component does not contain the correct lightning:card markup, I am getting this error after completation of the below code. I am not sure, what is the mistake here. can anyone help me on this
<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>
<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>
- Nagaraju Mogili 15
- January 02, 2018
- Like
- 0