/** * Class名: AgencyShareUpdateBatch * 理由: 现在只有 Agency_Opportunity__c, 以后会有扩展的可能 */ global class AgencyShareUpdateBatch implements Database.Batchable { global AgencyShareUpdateBatch() { } global Database.QueryLocator start(Database.BatchableContext bc) { return Database.getQueryLocator([SELECT Id , OCSM_Owner__c , Department_Class_Opp__c , Department_Class_Opp__r.OwnerId FROM Agency_Opportunity__c WHERE NeedShareBatch__c = true ]); } global void execute(Database.BatchableContext bc, List scope) { List updList = new List(); for (Agency_Opportunity__c nObj : scope) { if (nObj.Department_Class_Opp__c != null && nObj.OCSM_Owner__c != nObj.Department_Class_Opp__r.OwnerId) { nObj.OCSM_Owner__c = nObj.Department_Class_Opp__r.OwnerId; } updList.add(nObj); } update updList; } global void finish(Database.BatchableContext bc) { // 如果前一个603的batch正在等待状态,则取消掉前一个batch的执行 List lstJobs = [SELECT Id FROM AsyncApexJob WHERE (Status = 'Queued' OR Status = 'Holding') AND ApexClass.Name = 'NFM603Batch']; for (AsyncApexJob job : lstJobs) { try { System.abortJob(job.Id); } catch(Exception ex ) { System.debug(ex); } } Id execBTId = Database.executebatch(new NFM603Batch(),1); } }