Wie Scheduler in Apex implementieren?
-
08-10-2019 - |
Frage
Ich sehe Scheduler wie Feature in Salesforce, aber es ist etwas mit bestehenden Funktionen gebunden, dass Salesforce bieten und kein Beispielquellcode vorgesehen soweit meine Forschung geht.
Was ich tun möchte, ist meine eigenen Scheduler zu erstellen, basierend auf Datum einfache E-Mail sendet.
Ziel:
Benutzerdefinierte Objekt Player
hat Felder
startDate : date like '2010-11-01'
email : text field like foo@bar.com
name : player's name like John.
Wenn das heutige Datum einen Tag vor dem Startdate ist, möchte ich E-Mail an den Spieler senden.
So ist zum Beispiel Name des Spielers John
und wenn heute 2010-12-10
und ein Spieler startDat
e ist, auf 2010-12-11
, E-Mail sagen "hello John"
gesendet wird.
Leider kann ich nicht gutes Beispiel oder Tutorial online oder Salesforce doc finden, wie dies mit Apex zu tun. Könnte jemand Punkt, wo loszulegen?
UPDATE
Ich mag die Antwort von eyescream.
verlängern
Nach dem Scheduler einstellen, können Sie festlegen, welche Aktion folgen wie nehmen E-Mail zu senden mit Vorlage oder Set benutzerdefinierte Objektfelder auf einige Werte.
Unten fand ich nützlich für Leute mit E-Mail-Vorlage in Visual Format.
Ich habe benutzerdefinierte Objekt ‚alertTester‘, die sich auf ein anderes Objekt ‚custom‘ hat und auch dieses Objekt ‚custom‘ hat Verweis auf ein anderes Objekt ‚custom1GrandChild‘ und alle die Beziehung (bis zu 3 oder 5 Schichten glaube ich) kann sein zugegriffen wie unten.
Ich habe unten getestet und funktioniert einwandfrei. Jetzt bin ich empfange E-Mail mit meinem Zustand Satz:)
<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>
Lösung
Schauen Sie sich Lösungen, den Code beinhaltet nicht, bevor Sie tief tauchen Apex werden ...
E-Mail + Workflow-Regel sollten Sie mit allen Funktionen bieten Sie in diesem Szenario müssen und beinhalten nur ohne Code klicken.
Andere Tipps
I'm answering to my own question again..
Below link, search for schedule
http://www.salesforce.com/us/developer/docs/apexcode/index.htm
Looks like Apex has Schedulable interface that I can implements and set up cron task.
Below is sample code provided in the doc:
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;
}
}