Как реализовать планировщик в Apex? - PullRequest
0 голосов
/ 11 ноября 2010

Я вижу функцию, похожую на планировщик, в salesforce, но она в некоторой степени связана с существующими функциями, которые предоставляет salesforce, и не предоставляет пример исходного кода, насколько мне известно.

Что я хочу сделать, так это создать своюсобственный планировщик, который отправляет простое электронное письмо на основе даты.

Цель:

Пользовательский объект Player имеет поля

startDate : date like '2010-11-01'
email : text field like foo@bar.com
name : player's name like John.

Если сегодняшняя датаза один день до startDate я хочу отправить письмо Игроку.Например, имя игрока - John, а если сегодня - 2010-12-10, а для startDat e одного игрока установлено значение 2010-12-11, отправляется электронное сообщение о том, что "hello John" отправлено.

К сожалению, я не могу найти хороший примерили учебное пособие онлайн или salesforce doc, как это сделать с помощью Apex.Кто-нибудь может указать, с чего начать?

ОБНОВЛЕНИЕ

Я хочу расширить ответ с eyescream.

После настройки планировщика вы можетеустановить, какие последующие действия нужно предпринять, например отправку электронной почты с использованием шаблона, или задать для некоторых полей настраиваемого объекта некоторые значения.

Ниже я нашел полезными для людей, использующих шаблон электронной почты в формате Visualforce.

У меня есть пользовательский объект'alertTester', который имеет ссылку на другой объект 'custom', и даже этот объект 'custom' имеет ссылку на другой объект 'custom1GrandChild', и ко всем отношениям (я думаю, до 3 или 5 слоев) можно получить доступ, как показано ниже.

Я тестировал ниже и отлично работает.Теперь я получаю письмо с моим условием:)

<messaging:emailTemplate subject="Hello" recipientType="User" relatedToType="alertTester__c" >
<messaging:plainTextEmailBody >

{!relatedTo.name}
{!relatedTo.custom__r.name}
{!relatedTo.custom__r.custom1GrandChild__r.name}


</messaging:plainTextEmailBody>
</messaging:emailTemplate>

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Ознакомьтесь с решениями, в которых нет кода, прежде чем углубиться в Apex ...

Оповещение по электронной почте + Правило рабочего процесса должно предоставить вам все функциональные возможности, необходимые в этом сценарии, и включать в себя просто щелчок без кода.

1 голос
/ 11 ноября 2010

Я снова отвечаю на свой вопрос ..

Под ссылкой, найдите schedule

http://www.salesforce.com/us/developer/docs/apexcode/index.htm

Похоже, у Apex есть интерфейс Schedulable, который я могу реализовать и настроить задачу cron.

Ниже приведен пример кода в документе:

global class TestScheduledApexFromTestMethod implements Schedulable {

// This test runs a scheduled job at midnight Sept. 3rd. 2022  


   public static String CRON_EXP = '0 0 0 3 9 ? 2022';

   global void execute(SchedulableContext ctx) {
      CronTrigger ct = [SELECT id, CronExpression, TimesTriggered, NextFireTime
                FROM CronTrigger WHERE id = :ctx.getTriggerId()];

      System.assertEquals(CRON_EXP, ct.CronExpression);
      System.assertEquals(0, ct.TimesTriggered);
      System.assertEquals('2022-09-03 00:00:00', String.valueOf(ct.NextFireTime));

      Account a = [SELECT id, name FROM Account WHERE name = 
                  'testScheduledApexFromTestMethod'];
      a.name = 'testScheduledApexFromTestMethodUpdated';
      update a;
   }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...