You need to sign in to do that
Don't have an account?
Vigneshwaran Loganathan
Return batch class execute values to Apex class
I am importing large csv using VF page. Before importing I need to Validate the data. So, I have created a validate method which reads the file and stores in a list(and do validations further). Since the file has nearly >5k records it hits CPU Time limit exception. So, i thought of passing the parsedValues to batch class and get sObject values. Below is the method i have in class,
I need to pass ParsedVal to batch class and return results to Normal class to proceed checking further methods.
Class : SPLImortGildExt
Thanks.!
I need to pass ParsedVal to batch class and return results to Normal class to proceed checking further methods.
Class : SPLImortGildExt
Public list<sObject> csv2sObject(list<List<string>> parsedval) { splitObject = selectedObj.split(','); SPL_BatchCsv2sObject sb = new SPL_BatchCsv2sObject(parsedval); Database.executeBatch(sb,200); return sObj; // Need to get value from Batch apex }
Batch Apex : global void execute(Database.BatchableContext context, SObject[] records) list<sobject> sObj = new list<sobject>(); Schema.sObjectType objectDef = Schema.getGlobalDescribe().get(splitObject[0]).getDescribe().getSObjectType(); for(list<string> head : parsedVal) { for(string col : head) { if(headerMap.containsKey(col.Trim())) headers.add(headerMap.get(col.Trim())); else headers.add(col); } break; } integer rowNum = 0; for(list<string> row : parsedval) { if(rowNum == 0) { rowNum++; continue; } else { sObject thisObj = objectDef.NewsObject(); integer col = 0; for(string colx : row) { string headerName = headers[col].trim(); Try { if((colx.contains('/') || colx.contains('-')) { datex = (colx.contains('/')) ? colx.split('/') : colx.split('-'); thisObj.put(headerName , Tempdate); } else { if(headerName=='active_vod__c') { thisObj.put(headerName , boolean.valueof(colx)); } } } col++; } // closing column for loop sObj.add(thisObj); // Need to pass this values to previous class rowNum++; } //close else } // close for } }Is there a way to acheive this.?
Thanks.!
https://digestsfdc.wordpress.com/2018/08/02/can-we-return-value-from-batch-apex-class/