apex を使用して Salesforce に同期を実装したいと考えています。
私の要件は、将来のメソッドからフィールドを更新する必要があるということです。
データベースに Counter_ c という名前のフィールドがあり、そのメソッドが 3 つの将来のメソッドを呼び出すメソッドを呼び出しています。これらの将来のメソッドは、カウンター_c の値を 1 ずつインクリメントしようとしますが、フィールドは更新されません。
これが私のコードです:
public void generateReports() {
ReportHistory__c repHst = new ReportHistory__c();
repHst.Counter__c = 0;
insert repHst;
generateReport1(repHst.Id);
generateReport2(repHst.Id);
generateReport3(repHst.Id);
}
@future
public static void generateReport1(Id id) {
List<ReportHistory__c> lstRep = [select Counter__c rom ReportHistory__c where Id = :id];
if(!lstRep.isEmpty()) {
++lstRep[0].Counter__c;
}
update lstRep;
}
@future
public static void generateReport2(Id id) {
List<ReportHistory__c> lstRep = [select Counter__c rom ReportHistory__c where Id = :id];
if(!lstRep.isEmpty()) {
++lstRep[0].Counter__c;
}
update lstRep;
}
@future
public static void generateReport3(Id id) {
List<ReportHistory__c> lstRep = [select Counter__c rom ReportHistory__c where Id = :id];
if(!lstRep.isEmpty()) {
++lstRep[0].Counter__c;
}
update lstRep;
}
上記のコードを実行した後、Counter__c を 3 にする必要があります。しかし、まだ 0 または 1 の場合もあります。
今後のすべての呼び出しで Counter__c の値を 1 ずつ更新するように将来の呼び出しを制御できる方法があれば、助けてください。
ありがとう、ヴィベク