Salesforce 如何在执行批处理作业时将记录的IsProcessed标志设置为True?
在我的自定义对象ERT_Case_Type__c中,我有一个复选框IsProcessed,默认为false 现在,每当执行批处理作业时,我都需要将这个IsProcessed标志设置为True,这是伪代码,现在我要看的是,我需要在下面的伪批处理顶点代码中做哪些确切的更改,以使这个代码在每次批处理后都能使用IsProcessed标志设置为True 全局类CopyerBatch6AM实现数据库。可批处理{Salesforce 如何在执行批处理作业时将记录的IsProcessed标志设置为True?,salesforce,apex,apex-code,salesforce-lightning,soql,Salesforce,Apex,Apex Code,Salesforce Lightning,Soql,在我的自定义对象ERT_Case_Type__c中,我有一个复选框IsProcessed,默认为false 现在,每当执行批处理作业时,我都需要将这个IsProcessed标志设置为True,这是伪代码,现在我要看的是,我需要在下面的伪批处理顶点代码中做哪些确切的更改,以使这个代码在每次批处理后都能使用IsProcessed标志设置为True 全局类CopyerBatch6AM实现数据库。可批处理{ global Database.QueryLocator sta
global Database.QueryLocator start(Database.BatchableContext BC) {
// collect the batches of records or objects to be passed to execute
String query = 'select Case__c, Level_1__c, Level_2__c,Level_3__c FROM ERT_Case_Type__c where createddate = today and IsProcessed Flag = False';
System.debug('ERT Case No is =====>' +query);
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC, List<ERT_Case_Type__c> exeList) {
// process each batch of records
List<Case_Type__c> listCTD = new List<Case_Type__c>();
System.debug('ERT Case No is =====>' +exeList);
for(ERT_Case_Type__c exe : exeList)
{
listCTD.add(new Case_Type__c(Case__c=exe.Case__c,Level_1__c=exe.Level_1__c,Level_2__c=exe.Level_2__c,Level_3__c=exe.Level_3__c));
IsProcessed Flag = True
}
try {
System.debug('ERT Case No is =====>' +listCTD);
insert listCTD;
} catch(Exception e) {
System.debug(e);
}
}
global void finish(Database.BatchableContext BC) {
// execute any post-processing operations
}
}
global Database.QueryLocator启动(Database.BatchableContext-BC){
//收集要传递给执行的记录或对象的批
字符串查询='从ERT_Case_Type_uuc中选择Case_uc、Level_u1_uc、Level_u2_uc、Level_u3_uc,其中createddate=today,IsProcessed Flag=False';
System.debug('ERT案例号====>'+查询);
返回数据库.getQueryLocator(查询);
}
全局void execute(Database.BatchableContext BC,List exeList){
//处理每批记录
List listCTD=新列表();
System.debug('ERT案例编号为===>'+exeList);
用于(ERT\U Case\U Type\U c exe:exeList)
{
添加(新的案例类型案例c(案例c=exe.Case c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c);
IsProcessed标志=True
}
试一试{
系统调试('ERT案例号====>'+listCTD);
插入列表CTD;
}捕获(例外e){
系统调试(e);
}
}
全局void完成(Database.BatchableContext BC){
//执行任何后处理操作
}
}
非常感谢你的帮助
感谢和问候
Carolyn我将在本例中实现Database.Stateful。对不起,我不喜欢断线
global class ertcopybatch3pm implements Database.Batchable<sObject>, Database.Stateful {
private List<ERT_Case_Type__c> processedRecords;
global Database.QueryLocator start(Database.BatchableContext BC) {
processedRecords = new List<ERT_Case_Type__c>();
// collect the batches of records or objects to be passed to execute
String query = 'select Case__c, Level_1__c, Level_2__c,Level_3__c FROM ERT_Case_Type__c where createddate = today and IsProcessed__c = False';
System.debug('ERT Case No is =====>' +query);
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC, List<ERT_Case_Type__c> exeList) {
// process each batch of records
List<Case_Type__c> listCTD = new List<Case_Type__c>();
System.debug('ERT Case No is =====>' +exeList);
for(ERT_Case_Type__c exe : exeList)
{
listCTD.add(new Case_Type__c(Case__c=exe.Case__c,Level_1__c=exe.Level_1__c,Level_2__c=exe.Level_2__c,Level_3__c=exe.Level_3__c));
exe.IsProcessed__c = true;
}
try {
System.debug('ERT Case No is =====>' +listCTD);
insert listCTD;
//only successful batches will be processed in the finish() method
processedRecords.addAll(exeList);
} catch(Exception e) {
System.debug(e);
}
}
global void finish(Database.BatchableContext BC) {
// execute any post-processing operations
update processedRecords;
}
}
全局类ertcopybatch3pm实现Database.Batchable、Database.Stateful{
私有列表处理记录;
global Database.QueryLocator启动(Database.BatchableContext BC){
processedRecords=新列表();
//收集要传递给执行的记录或对象的批
字符串查询='从ERT_Case_Type_uuc中选择Case_uc、Level_u1_uc、Level_u2_uc、Level_u3_uc,其中createddate=today,IsProcessed_uc=False';
System.debug('ERT案例号====>'+查询);
返回数据库.getQueryLocator(查询);
}
全局void execute(Database.BatchableContext BC,List exeList){
//处理每批记录
List listCTD=新列表();
System.debug('ERT案例编号为===>'+exeList);
用于(ERT\U Case\U Type\U c exe:exeList)
{
添加(新的案例类型案例c(案例c=exe.Case c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c,级别c=exe.Level c);
exe.IsProcessed_uuc=true;
}
试一试{
系统调试('ERT案例号====>'+listCTD);
插入列表CTD;
//finish()方法只处理成功的批
processedRecords.addAll(exeList);
}捕获(例外e){
系统调试(e);
}
}
全局void完成(Database.BatchableContext BC){
//执行任何后处理操作
更新processedRecords;
}
}
在开发人员控制台上获取此错误无效类型:来自伪代码“IsProcessed Flag=True”的IsProcessed从对象粘贴了IsProcessed复选框屏幕截图。将代码更改为
IsProcessed\uu c=True代码>现在控制台显示变量不存在:IsProcessed_uuc
不确定发生了什么事情Gits需要一个小的代码更改`listCTD.add(新的Case_Type_uc(Case_uc=exe.Case_uc,Level_u1_uc=exe.Level_u1_uc,Level_u2_uc=exe.Level_u2_uc,Level_u3_uc));ERT_Case_Type_c temporary=新的ERT_Case_Type_c();temporary.id=exe.id;temporary.IsProcessed_uuc=True;更新列表。添加(临时);`谢谢,只有错误显示在第processedRecords.add(exe)行中代码>,控制台显示变量不存在:exe