このモジュールでは、カンファレンスのスピーカーにリマインダーメールを送信するための一括処理を作成して、実行します。
開発者コンソールで、File > New > Apex Class の順にクリックします。クラス名に SendReminderEmail と入力し、 OK をクリックします。
クラスをglobalに変更してBatchableインターフェースを実装し、そのインターフェースで3つのメソッドを定義します。:
global class SendReminderEmail implements Database.Batchable<sObject> {
global Database.QueryLocator start(Database.BatchableContext bc) {
}
global void execute(Database.BatchableContext bc, List<Speaker__c> scope) {
}
global void finish(Database.BatchableContext bc) {
}
}
3つのインスタンス変数を宣言します(それぞれ、クエリ、メールの件名、メールの本文を格納):
global String query;
global String subject;
global String body;
コンストラクタ を次のように定義します:
global SendReminderEmail(String query, String subject, String body) {
this.query = query;
this.subject = subject;
this.body = body;
}
start() メソッドを次のように実装します:
global Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator(query);
}
execute() メソッドを次のように実装します:
global void execute(Database.BatchableContext bc, List<Speaker__c> scope) {
for (Speaker__c speaker : scope) {
EmailManager.sendMail(speaker.Email__c, this.subject, this.body);
}
}
講演者レコードのいずれか1件に、自分のメールアドレスを割り当てておきます
開発者コンソールで、 Debug > Open Execute Anonymous Window の順にクリックします
次のApexコードを入力します:
String q = 'SELECT First_Name__c, Last_Name__c, Email__c FROM Speaker__c WHERE Email__c != null';
SendReminderEmail batch = new SendReminderEmail(q, '最終確認', 'カンファレンスは来週月曜から開催です!!');
Database.executeBatch(batch);
Execute をクリックします
メールを確認します