スケージュール可能なApex一括処理バッチの実装

SalesforceにApex一括処理バッチを実装するため、Database.Batchableインタフェースを継承したApexクラスを作成する必要があります、 次のサンプルソースのように:

一括処理バッチの実行

上記作成されたら、Database.executebatchメソッドでバッチの実行ができます。

スケージュールApexジョブ

これで一定の時間間隔で一括処理バッチを実行させたい場合、Schedulableインタフェースを継承したもう1つのApexクラスが必要です。 次のサンプルソースのようになります:

画面からスケージュールApexジョブ

設定 / 開発 / Apexクラス画面から”Apexをスケージュール”ボタンをクリックして、新たなスケージュールジョブの設定ができます。
apex-classes-salesforce-developer-edition schedule-apex-user-interface 上記の設定が完了したら、設定 / ジョブ / スケジュール済みジョブ画面にてジョブの実行状況の監視、設定管理や削除などができます。
scheduled-jobs

ApexコードからスケージュールApexジョブ

ApexコードにSystem.scheduleメソッドを使ってスケージュールApexジョブの新規もできます。

次はいつくスケージュール時間の書き方例です。

Expression Description
0 0 13 * * ? Class runs every day at 1 PM.
0 0 22 ? * 6L Class runs the last Friday of every month at 10 PM.
0 0 10 ? * MON-FRI Class runs Monday through Friday at 10 AM.
0 0 20 * * ? 2010 Class runs every day at 8 PM during the year 2010.
詳しい情報は こちらをご参考ください。

ここまで、Database.Batchable<sObject>を継承したスケージュール可能なApex一括処理バッチを実装しましたが、 このようなApexバッチのstart部分にはsObjectクエリと結果しか使えません。

集計クエリと結果のSOQL、例:SUM(), MAX(), COUNT()、を使用したい場合、こちらの投稿に従って実装が可能です!
Using Aggregate SOQL queries/results in Batch Apex

Enjoy it!