面倒なのでソースをそのまま張る。
------------------------------------------------>> /** * バッチの実行テスト * 全取引先の数値項目をインクリメント、日付に実行日時をセットするだけ * カスタム項目, 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年から携わっていたこともありナレッジは溜まっているので、折を見て大量に書き出せれば、と思います。
※ゲームやってる時間を割り当てればすぐなんですけど。
コメントを投稿