面倒なのでソースをそのまま張る。
------------------------------------------------>> /** * バッチの実行テスト * 全取引先の数値項目をインクリメント、日付に実行日時をセットするだけ * カスタム項目, batch_Sum__c 数値項目,あらかじめ0を入れること、batchLastUpdateDate__c 日時型 */ global class batchTest implements Database.Batchable呼び出すApex Class 今回はVFからボタン押してます。 実際はスケジューラから実行かな。{ global database.querylocator start(Database.BatchableContext bc){ System.debug('■■■■■■batchTest start■■■■■■'); return Database.getQueryLocator('select Id, Name, batch_Sum__c, batchLastUpdateDate__c from Account'); } global void execute(Database.BatchableContext bc, SObject[] objects){ System.debug('■■■■■■batchTest execute■■■■■■'); System.debug(objects); Account[] accns = new Account[]{}; for(SObject s : objects){ Account a = (Account)s; a.batch_Sum__c = a.batch_Sum__c + 1; a.batchLastUpdateDate__c = system.now(); accns.add(a); System.debug('■ update entity:' + a); } update accns; } global void finish(Database.BatchableContext bc){ system.debug('□□□□□□batchTest finish□□□□□□'); } } ------------------------------------------------<<
------------------------------------------------>>
/**
* バッチできるかな?
*/
public PageReference batch() {
System.debug('■■■■■■batch Btn■■■■■■');
batchTest job = new batchTest();
ID batchprocessid = Database.executeBatch(job);
system.debug(batchprocessid);
return NULL;
}
------------------------------------------------<<
とりあえず、動いた。次は負荷テストか、、、startメソッドのquerylocatorごとにガバナがクリアされるから大量レコード処理できるぜフフン♪みたいなこと書いてあったけど、どうなることやら

4 件のコメント:
このバッチをApex Jobで定期的に
動かすにはどうすればよいですか?
ご教授頂ければ幸いです。
>匿名様
最適なものとしては"Apex Scheduler"機能があげられますがWinter'10現在パイロットリリースのため、運用組織での使用は難しいと考えています。
(試用することをサポートに連絡する必要があります)となると、タイムトリガ等を使用してApexTrigger内による起動も考えられますが未検証です。
お力になれず申し訳ありません。
回答ありがとうございます。
とてもためになりました。
日本語でSFの技術情報を発信してくださっているBlogは少ないので
大変重宝させて頂いています。
これからもがんばってください。
ありがとうございます。2006年から携わっていたこともありナレッジは溜まっているので、折を見て大量に書き出せれば、と思います。
※ゲームやってる時間を割り当てればすぐなんですけど。
コメントを投稿