Dieser Text wurde mit dem automatisierten Übersetzungssystem von Salesforce übersetzt. Nehmen Sie an unserer Umfrage teil, um Feedback zu diesem Inhalt zu geben und uns mitzuteilen, was Sie als Nächstes sehen möchten.
Lesen Sie hier unsere Aktualisierungspläne.
Systeme demonstrieren automatisiertes Verhalten, indem sie es Unternehmen ermöglichen, wichtige Ziele schneller und skalierbarer zu erreichen. Durch die gesunde Automatisierung können sich Benutzer auf hochwertige Arbeit konzentrieren und die Zeit für sich wiederholende manuelle Aufgaben oder komplexe Dateneingaben reduzieren.
Meistens bedeutet Automatisierung, Geschäftsprozesse von einem Formular in ein anderes zu übersetzen: von einem papierbasierten Formular in ein digitales Formular, von einem alten System in ein neues. Jede Geschäftsprozessübersetzung bietet die Möglichkeit zur Transformation.
Bei der Transformation geht es nicht darum, neue Technologien zu verwenden, um störende und verwirrende Änderungen für Benutzer einzuführen. Bei der Transformation geht es darum, einfachere Möglichkeiten für die Arbeit zu schaffen, Unternehmen ein reibungsloses Wachstum zu ermöglichen und es Geschäftsbenutzern zu ermöglichen, sich stärker auf das zu konzentrieren, was für ihre Beteiligten wirklich wichtig ist. Aus architektonischer Sicht geht es dabei darum, Aufgaben zu identifizieren, die komplett entfallen oder automatisch bearbeitet werden können. Sie erfordert eine klare Verbindung zwischen der Art und Weise, wie Technologie verwendet wird, und ihren messbaren Auswirkungen auf das Unternehmen.
Wichtiger Hinweis zur Automatisierung mit Salesforce: Sie kann mit einer Vielzahl von Tools durchgeführt werden, wobei programmgesteuerte und deklarative Fertigkeiten verwendet werden. Beim Entwerfen von gut strukturierten Automatisierungen geht es nicht darum, sich für die Erstellung mit nur einem Automatisierungstool zu entscheiden. Es geht darum, konsistente und vorhersehbare Ansätze zu verwenden und Teams in die Lage zu versetzen, die von Ihnen entworfenen Automatisierungen zu entwickeln, zu testen, bereitzustellen und zu warten. Ihre Automatisierungen sollten eine möglichst wartungsfreundliche und lesbare Form annehmen.
In diesem Abschnitt wird erläutert, wie Automatisierungen entworfen und refaktoriert werden, damit Unternehmen wichtige Ziele schneller und skalierbarer erreichen können. Sie können die Architektur Ihrer Automatisierungen in Salesforce verbessern, indem Sie sich auf Effizienz und Datenintegrität konzentrieren.
Beim Erstellen von Effizienz in Ihren Automatisierungen geht es nicht darum, wie gewohnt mit Salesforce-Technologien Geschäfte neu zu erstellen. Es geht darum, die wichtigsten Kennzahlen und Geschäftsergebnisse, für die Teams verantwortlich sind, genau zu verstehen und die Funktionseinheiten innerhalb und über die von Ihnen automatisierte Arbeit hinweg anzuzeigen. Es geht darum, zu ermitteln, wie Sie mit Ihren Automatisierungen Muster erstellen können, die es dem Unternehmen ermöglichen, effektiver und schneller zu arbeiten und dabei den richtigen Maßstab zu schaffen.
Effiziente Automatisierungslogik macht Ihre Systeme zu Folgendem:
- Skalierbarer und nützlicher für das Unternehmen
- Hilfreicher für Benutzer
- Besser anpassbar und in der Lage, die sich ändernden Geschäftsanforderungen zu erfüllen
Sie können die Effizienz Ihrer Automatisierungen durch Prozessdesign und Betriebslogik verbessern.
Das Prozessdesign beinhaltet die Definition der Art und Weise, wie Arbeit erledigt wird. Die Entwicklung wirklich effizienter und effektiver Prozesse bedeutet, dass Ihre Designs nicht nur aktuelle Arbeitsweisen widerspiegeln. Es ist wichtig, ineffektive oder unklare Schritte zu identifizieren und zu entfernen. Optimierte Prozesse sollten ohne unnötige Schritte einen messbaren Geschäftswert schaffen (siehe KPIs). Unklare oder unnötige Schritte werden wahrscheinlich zu technischen Schulden führen und zu nicht wartbaren Automatisierungen führen.
Oftmals liegt die Verantwortung für das Erkennen und Dokumentieren von Geschäftsprozessen in der Verantwortung eines Geschäftsanalysten oder sogar eines Systemadministrators. Architekten sind dafür verantwortlich, mit diesen Mitgliedern Ihres Teams zusammenzuarbeiten, um sicherzustellen, dass Ihre Prozessentwürfe technisch fundiert und gut strukturiert sind. Wenn Sie Ihr Knowledge über Salesforce Platform so früh wie möglich anwenden, kann Ihr Team Prozesse identifizieren, die durch Automatisierung oder Prozesse optimiert werden sollen, die geändert werden müssen, um kostspielige Anpassungen zu vermeiden.
Berücksichtigen Sie zum Erstellen optimierter Prozesse für Salesforce Folgendes:
-
Definieren Sie Prozesse sorgfältig. Prozesse mit unklaren Zwecken oder mehrdeutigen Definitionen werden zum Zeitpunkt des Designs eher falsch interpretiert. Dies führt zu fehlerhaften Designs, die auf Annahmen basieren, was zu falschen oder ineffizienten Automatisierungen führt. Stellen Sie sicher, dass die Geschäftsprozesse, die Sie automatisieren möchten, die folgenden Standards erfüllen:
- Auf eine einzelne, bestimmte Funktion beschränkt (siehe Funktionseinheiten)
- Hat klar definierte, messbare Ausgaben (siehe Geschäftswert)
- Hat klar definierte Ein- und Ausgaben
-
Machen Sie Prozessschritte deutlich.* Auch wenn es manchmal verlockend sein kann, zusätzliche Schritte hinzuzufügen, die "in Zukunft hilfreich sein könnten", ist dies niemals ein guter Ansatz. Jeder Schritt in einer Automatisierung ist für das Ergebnis des Gesamtprozesses relevant. Stellen Sie sicher, dass jeder Prozessschritt die folgenden Merkmale aufweist:
- Führt eine bestimmte, detaillierte Aufgabe aus (siehe zusammensetzbar)
- Erforderlich, damit der Prozess seine definierte Ausgabe generiert (alle nicht wesentlichen Schritte entfernen)
- Kann mit einer minimalen Anzahl an Ressourcen abgeschlossen werden
- Verwendet vorhandene Systemdaten, statt nach Möglichkeit nach Benutzereingaben zu fragen (siehe Interagieren).
- Bietet Eingabeoptionen, die Benutzer verstehen können, ohne wissen zu müssen, wie die zugrunde liegenden Systeme funktionieren (Siehe hilfreich)
Die folgende Liste der Muster und Anti-Muster zeigt, wie eine ordnungsgemäße (und schlechte) Optimierung in einer Salesforce-Organisation aussieht. Sie können sie verwenden, um Ihre Automatisierungsentwürfe vor dem Erstellen zu validieren oder Automatisierungen zu identifizieren, die weiter optimiert werden müssen.
Weitere Informationen zu den von Salesforce verfügbaren Prozessautomatisierungstools finden Sie unter Für Automatisiert relevante Tools.
Die Betriebslogik befasst sich damit, wie effektiv ein Prozess von seinem Design in eine tatsächliche Implementierung übersetzt wird. Automatisierungen mit starker Betriebslogik funktionieren weiterhin gut, unabhängig von Spitzen bei Transaktionsvolumen oder der Anzahl der gleichzeitig ausgeführten Instanzen. Logisch fundierte Automatisierungen helfen Unternehmen, einfacher skaliert zu werden, um bei höheren Anforderungen zu arbeiten. Die Integration einer starken Betriebslogik in Ihre Automatisierungen hängt direkt mit der allgemeinen Zuverlässigkeit Ihres Systems zusammen.
Automatisierungen, die nicht effektiv funktionieren, bieten schlechte Benutzer- und Kundenerfahrungen, was zu potenziellen Umsatzverlusten und zum Verlust des Customer Trust führt. Sie haben auch höhere Wartungskosten und können zu Engpässen werden, die zugehörige Prozesse verzögern und zu allgemeinen Problemen mit der Systemleistung beitragen.
Berücksichtigen Sie zum Erstellen einer effektiven Betriebslogik in Automatisierungen Folgendes:
- Stellen Sie sicher, dass jeder, der Automatisierungen erstellt, den richtigen Weg dafür kennt. Schlechte Designentscheidungen können mit jeder Art von Automatisierungstool getroffen werden. Code ist nicht weniger anfällig für Fehler oder schlechte Implementierungsoptionen als klickbasierte Tools. Bei der Verwendung hartcodierter Referenz-IDs handelt es sich beispielsweise um ein Anti-Pattern, das in Flow und Code angezeigt wird. Klickbasierte Tools sollten nicht als Lizenz angesehen werden, damit jeder und jede eine Automatisierung in die Produktion freigeben kann. Jedes Teammitglied, das eine Automatisierung erstellt, muss wissen, wie sie richtig erstellt wird. Weitere Informationen zur Definition und Anwendung effektiver Standards in Ihren Systemen finden Sie unter Lesbarkeits- und Designstandards.
- Dokumentieren Sie alle Ausführungspfade eindeutig. Die zunehmende Nutzung von Automatisierungen erhöht nicht nur potenzielle Datenvolumen, sondern auch ungeplante Aufrufkontexte. Sie müssen verstehen, wie unterschiedliche Automatisierungen aufgerufen werden können, und sicherstellen, dass in allen Automatisierungen mit mehreren Eingangspunkten ordnungsgemäße Transaktionssteuerungen (siehe Datenverarbeitung) angezeigt werden. Bildschirm-Flows werden beispielsweise nicht mit Massendaten geladen, wohl aber mit Apex-Auslösern und ausgelösten (und automatisch gestarteten) Flows. Die klare Dokumentation geplanter und potenzieller Ausführungspfade für Automatisierungen ist ein wichtiger Aspekt, um zu verstehen, welche logischen Bedingungen Sie während der Implementierung berücksichtigen müssen.
- Alle Datenvorgänge (einschließlich SOQL) „in Massenvorgängen“ verarbeiten. Jeder Datenvorgang (Einfügen, Aktualisieren usw.) sollte für Sammlungen ausgeführt werden. Immer. Ohne Ausnahmen. Dies wird unter "Massenvorgang" verstanden. Obwohl die Plattform Singleton-Datenvorgänge unterstützen kann, sollten Sie niemals zulassen, dass Singleton-Muster implementiert werden.
- Verwenden Sie SOSL für Suchvorgänge. Es besteht ein Irrglaube, dass Datenvorgänge nicht für über SOSL zurückgegebene Datensätze ausgeführt werden können. Es stimmt, dass DML nicht direkt anhand von SOSL-Ergebnissen aufgerufen werden kann. Code kann jedoch SOSL-Ergebnisse analysieren und eine Sammlung erstellen, auf die in DML- oder Datenbankklassenmethoden verwiesen werden kann. Die wichtigsten Unterschiede zwischen SOSL und SOQL sind die Rückgabetypen für jeden und wie sie auf generalisierte oder Platzhaltersuchen reagieren. SOSL kann für verschiedene sObject-Typen verwendet werden (deshalb unterscheidet sich der Rückgabetyp) und Platzhalter- und generalisierte Zeichenfolgensuchen können mit besserer Leistung als SOQL verarbeitet werden.
- Behandeln Sie SOQL wie einen Datenvorgang. Verwenden Sie SOQL nicht zum Suchen von Datensätzen, sondern zum Eingrenzen Ihrer Datenvorgänge. SOQL- und Datenvorgänge können sich sehr ähnlich auf die Leistung der zugrunde liegenden relationalen Datenbank auswirken. SOQL kann sogar einen expliziten DML-Indikator übergeben, der Datenbankzeilen im Vorgriff auf Datenvorgänge sperrt. Stellen Sie zum Erstellen skalierbarer Automatisierungen sicher, dass Sie SOQL mit einer ähnlichen Sorgfaltspflicht behandeln: Verwenden Sie es nicht ohne sehr spezifische, wohlgeformte Auswahlkriterien, lassen Sie keine Fremdfeldverweise zu und fordern Sie einen sorgfältigen Abgleich von Datentypen zwischen Feldern und Filtereingaben in der
WHERE-Anweisungslogik. Ihr Code sollte auch über entsprechende Steuerelemente verfügen, um sicherzustellen, dass eine Abfrage niemals in nicht in Massenvorgängen ausgeführten Kontexten oder anhand von Null- oder Leerfilterkriterien ausgeführt wird. - Konzentrieren Sie sich bei synchronen Vorgängen streng auf die Arbeit, die einem Benutzer in Echtzeit hilft. Identifizieren Sie während Ihrer Prozessoptimierung Logik, die für die von Benutzern in Echtzeit oder nahezu in Echtzeit durchzuführenden Vorgänge relevant ist und die in eine asynchrone (asynchrone) Transaktion zurückgestellt werden kann. Weitere Überlegungen zum Entwerfen von Synchronisierungs-/asynchronen Vorgängen finden Sie unter Datenverarbeitung.
Die folgende Liste der Muster und Anti-Muster zeigt, wie eine ordnungsgemäße (und schlechte) Betriebslogik in der Salesforce-Automatisierung aussieht. Sie können sie verwenden, um Ihre Automatisierungsentwürfe vor dem Erstellen zu validieren oder Automatisierungen zu identifizieren, die weiter optimiert werden müssen.
Weitere Informationen zu den von Salesforce verfügbaren Tools, die Ihnen bei der Skalierungsplanung helfen können, finden Sie unter Für Automatisiert relevante Tools.
Automatisierungs-KPIs messen die Auswirkungen einer Automatisierung im Zeitverlauf. Ohne sie können Sie nicht sagen, ob eine Automatisierung wirklich einen Mehrwert für Ihr Unternehmen bringt oder eine ungewollte Komplexität für Ihre Benutzer schafft. Jede von Ihnen erstellte Automatisierung sollte an eine klare, messbare Reihe von KPIs gebunden sein.
Gute KPIs werden durch einen messbaren Wert zusammen mit einem zugeordneten Zeitrahmen definiert. Beispiele:
- [X Zahl] Gesparte Arbeitsstunden pro Monat
- Verarbeitungsfehler durch manuelle Dateneingabe um [Y%] pro Woche reduziert
Sobald Sie über klare, messbare KPIs verfügen, müssen Sie auch verstehen, ob und wie eine Automatisierung in Salesforce Daten generiert, die für die Berichterstattung über diese KPIs relevant sind.
Die folgende Liste der Muster und Anti-Muster zeigt, wie richtige (und schlechte) KPIs in Bezug auf Salesforce-Automatisierungen aussehen. Sie können diese verwenden, um Ihre vorhandenen KPIs zu validieren, oder ermitteln, wo Sie KPIs vor dem Erstellen besser identifizieren müssen.
Weitere Informationen zu den von Salesforce verfügbaren Tools für Hilfe bei KPIs finden Sie unter Relevante Tools für Automatisiert.
In der folgenden Tabelle finden Sie eine Auswahl an Mustern, nach denen in Ihrer Organisation gesucht (oder die erstellt) werden soll, sowie Anti-Muster, die vermieden oder behoben werden sollen.
✨ Entdecken Sie mehr Muster für Effizienz im Explorer für Muster und Anti-Muster.
| Muster | Anti-Muster | |
|---|---|---|
| Prozessdesign | In Ihrer Organisation:
- Jeder Flow dient einem einzelnen, spezifischen Zweck - Jeder Schritt führt eine bestimmte, detaillierte Aufgabe aus - Flows sind in einer hierarchischen Struktur organisiert, die aus einem Haupt-Flow und unterstützenden Subflows besteht - Alle Benutzereingaben haben einen klaren Zweck innerhalb des Flows - Benutzer werden nur aufgefordert, Daten anzugeben, wenn vorhandene Systemdaten nicht verwendet werden können |
In Ihrer Organisation:
- Flows dienen mehreren Zwecken und erfordern zusätzliche Eingaben, um Kontext bereitzustellen - Flows erfordern Eingaben, deren Daten nicht verwendet werden - Gruppen von verwandten Schritten enthalten Funktionen, die sich mit Gruppen von Schritten in anderen Flows überschneiden - Flows fragen nach Benutzereingaben, wenn gespeicherte Daten stattdessen verwendet werden können |
| In Apex:
- Jede Klasse dient einem einzelnen, spezifischen Zweck - Jede Methode führt eine bestimmte, detaillierte Aufgabe aus - Alle Eingabevariablen haben einen klaren Zweck innerhalb der Klasse - Codeausführung erfordert eine minimale Anzahl an Ressourcen |
In Apex:
- Klassen dienen mehreren Zwecken - Methoden führen mehrere Aufgaben aus oder Methoden führen Aufgaben aus, die nicht mit dem angegebenen Zweck der Klasse übereinstimmen, zu der sie gehören - Eingabevariablen werden in Methoden nicht verwendet - Methoden rufen unnötig Daten aus der Datenbank oder aus externen Systemen ab |
|
| Betriebslogik | Im Flow:
- Keine Variablen beziehen sich auf hartcodierte Werte (für Datensatztypen, Benutzer usw.) - Alle automatisch gestarteten Flows und Prozesse verwenden Entscheidungs- und/oder Pausenelemente, um Eingabekriterien auszuwerten und Endlosschleifen oder Ausführungen bei großen Datenmengen zu verhindern - Flows (einschließlich Prozessen) übergeben Logik in Kontexten mit großem Datenvolumen an Apex - Subflows werden für die Abschnitte eines Prozesses verwendet, die im gesamten Unternehmen wiederverwendet werden müssen |
Im Flow:
- Variablen haben hartcodierte Werte - Flows (einschließlich Prozessen) müssen vor dem Laden von Massendaten manuell deaktiviert werden - Flows (einschließlich Prozessen) lösen Hinweise zu "unbehandelten Ausnahmen" aus - Selbst einfache Flows verursachen regelmäßig Fehler in Bezug auf Obergrenzen - Teile eines Flows werden über Flows hinweg wiederholt, statt Subflows zu verwenden |
| In Apex:
- Keine Variablen beziehen sich auf hartcodierte Werte (für Datensatztypen, Benutzer usw.) - Alle Platzhalterkriterien werden in SOSL angezeigt - SOQL ist in Try-Catch eingeschlossen
- In einer Schleife wird keine SOQL angezeigt - SOQL-Anweisungen sind selektiv, einschließlich: -- keine Verwendung von LIKE-Vergleichen oder Teiltextvergleichen
-- Vergleichsoperatoren verwenden positive Logik (d. h. EINSCHLIESST, IN) als primäre oder einzige Logik
-- Verwendung von = NULL, != NULL ist selten und/oder folgt immer einem positiven Vergleichsoperator
-- es werden keine LIMIT 1-Anweisungen angezeigt
-- keine Verwendung des Stichworts ALL ROWS
| In Apex:
- Variablen haben hartcodierte Werte - SOSL wird selten oder nicht konsequent für Platzhalterauswahlkriterien verwendet - SOQL ist nicht in Try-Catch eingeschlossen
- SOQL wird in Schleifen angezeigt - SOQL-Anweisungen sind nicht selektiv, einschließlich: -- Gefällt mir und Platzhalterfilterkriterien werden angezeigt
-- Vergleiche mit den Kriterien NOT, NOT IN werden als primärer oder einziger Vergleichsoperator verwendet
-- = NULL, != NULL-Kriterien werden als primärer oder einziger Vergleichsoperator verwendet
-- LIMIT 1-Anweisungen werden angezeigt
-- Stichwort ALL ROWS wird verwendet
| |
| In Ihren Designstandards und in Ihrer Dokumentation:
- Geplante und potenzielle Ausführungspfade für Automatisierungen sind klar umrissen - Die Anwendungsfälle für synchrone und asynchrone Vorgänge innerhalb von Automatisierungen sind als Teil von Designstandards klar umrissen |
In Ihren Designstandards und in Ihrer Dokumentation:
- Automatisierungsaufruf wird nicht dokumentiert - Anwendungsfälle für synchrone und asynchrone Vorgänge werden nicht behandelt |
|
| KPIs | In Ihrer Dokumentation:
- Ausgaben für jede Automatisierung sind messbar und zeitgebunden - Verantwortliche Beteiligte werden für jeden KPI aufgelistet |
In Ihrer Dokumentation:
- KPIs sind für Automatisierungen nicht vorhanden oder weisen unklare Zeitrahmen für Messungen auf - KPIs sind ohne verantwortliche Beteiligte vorhanden |
| In Berichten und Dashboards:
- Alle Kennzahlen zu KPIs sind in mindestens einem Bericht oder Dashboard enthalten |
In Berichten und Dashboards:
- KPI-Berichte sind nicht vorhanden oder es fehlen Berichte mit Kennzahlen zu einigen KPIs |
Bei der Datenintegrität geht es darum, wie gut ein System genaue und vollständige Daten verwaltet. Die Salesforce Platform verfügt über eine zuverlässige, integrierte Verarbeitungslogik, die die Integrität der in der relationalen Datenbank einer einzelnen Organisation gespeicherten Daten schützt. Eine der Grundlagen für die Erstellung gesunder Automatisierungen besteht darin, das integrierte Verhalten der Datenintegrität von Salesforce zu verstehen und sicherzustellen, dass alle Ihre Automatisierungsdesigns mit diesem Verhalten übereinstimmen (und es anerkennen).
Die größten Anti-Patterns im Automatisierungsdesign ergeben sich daraus, dass die leistungsstarken Datenintegritätsservices von Salesforce nicht erkannt und Standardfunktionen nicht verwendet werden, die diese Services nutzen. Damit Sie Automatisierungen entwerfen können, die die Datenintegrität schützen und aufrechterhalten, müssen Sie mit der grundlegenden Reihenfolge des Betriebsverhaltens von Salesforce vertraut sein.
Die ordnungsgemäße Erweiterung der Datenintegrität in Ihre benutzerdefinierten Automatisierungen bedeutet, dass Ihr System:
- ohne manuelle Eingriffe bei Massen- und großen Datenmengen arbeiten,
- Erzwingen von Benutzersicherheitsrichtlinien bei Bedarf und Wechseln zum Systemkontext bei Bedarf,
- treten während der Laufzeit Fehler auf und folgen vorhersehbaren Wiederherstellungs- oder Fehlerpfaden.
Durch die richtige Datenverarbeitung und Fehlerbehandlung können Sie die Datenintegrität in Ihre Salesforce-Automatisierungen verbessern.
Der erste Schritt zum Entwerfen einer ordnungsgemäßen Datenverarbeitung in Salesforce besteht darin, zu verstehen, wie die Multi-Mandanten-Plattform Transaktionen verarbeitet. Dazu gehört auch das Verständnis der integrierten Reihenfolge der Ausführungsverhalten, die die Salesforce Platform verwendet, um die Datenintegrität bei Datenvorgängen auf Datensatzebene sicherzustellen. Weitere Informationen zu den Auswirkungen dieses Verhaltens finden Sie unter Datenbankmanipulation in Salesforce Architecture Basics.
Die schlechte Datenverarbeitung in Ihren Automatisierungen kann zu den am schwierigsten zu identifizierenden und vollständig zu behebenden Anti-Patterns gehören. Die rekursive und sich überschneidende Ausführungsreihenfolge der Plattform kann es erschweren, festzustellen, woher die Probleme stammen. Der spezifische Abschnitt des Codes oder Flows, der einen fatalen Fehler auslöst oder die Obergrenzen überschreitet, ist möglicherweise nicht die Ursache für ein zugrunde liegendes Datenverarbeitungsproblem.
Transaktionsbewusstsein ist der Schlüssel zur Erstellung von Automatisierungen, die mit Salesforce zuverlässig und skalierbar funktionieren. Das bedeutet, dass jeder Schritt in einer Automatisierung mit dem Knowledge, wo er sich in Bezug auf die plattformgesteuerte Ausführungsreihenfolge befindet, ausgelegt ist, seine Funktion ordnungsgemäß ausführen kann und Informationen ordnungsgemäß an den nächsten Schritt weitergibt.
Unabhängig vom verwendeten Automatisierungstool folgt die richtige Transaktionswahrnehmung ähnlichen Mustern und erfordert allgemeine Überlegungen:
- Angenommen, jede Automatisierung wird aufgefordert, große Datenmengen ohne vorherige Ankündigung jederzeit auszuführen. Automatisierungen sollten Pfade aufweisen, die die Batch- oder Massenausführung ermöglichen (siehe Skalierbarkeit).
- Mischen Sie System- und Benutzerkontextdatenvorgänge nicht in derselben Transaktion.
- Reservieren Sie Synchronisierungsdatenvorgänge für vorherige Kontexte und verwenden Sie asynchrone Vorgänge für alle Aktionen nachher.
- Verwenden Sie Messaging und Benachrichtigungen, um zu vermeiden, dass Benutzer Erfahrungen in der Anwendung erstellen, bei denen sie auf Daten warten müssen, die auf den Ergebnissen eines asynchronen Vorgangs basieren.
Neben dem Transaktionsbewusstsein gibt es noch eine zweite Dimension der Datenverarbeitung: das Wissen, wann Logik in verschiedenen Ausführungskontexten ausgeführt werden muss. Zu den häufigen Gründen für die Aufteilung von Automatisierungen in verschiedene Ausführungskontexte zählen:
- Großes Volumen und/oder komplexe Datenvorgänge
- Durch Massenvorgänge kann nicht garantiert werden, dass große Datenmengen ordnungsgemäß verarbeitet werden. Wenn das Volumen der in einer Automatisierung enthaltenen Datenvorgänge pro Transaktionsobergrenze überschreitet, müssen Sie Datenvorgänge mit Funktionen ausführen, die für große Datenmengen spezifisch sind (z. B. über Batch-Apex oder die Bulk 2.0-API). Diese weisen unterschiedliche Transaktionsobergrenzen auf, die für große Datenmengen geeignet sind.
- Datenvorgänge, die komplexe Beziehungshierarchien durchlaufen oder komplexe Neuberechnungen (ohne Formelfelder) datensatzübergreifend durchführen müssen, können bei Massenvorgängen die Obergrenzen pro Transaktion leicht überschreiten. Überlegen Sie, wie störend eine Aktualisierung eines Datensatzes in Bezug auf die Vorgänge mit den zugehörigen Daten oder die SOQL ist, die zum Ausführen nachfolgender Aktionen im System erforderlich sind.
- Die an der gesamten Kette einer Automatisierung beteiligten sObject-Typen können es erfordern, dass Sie Datenvorgänge in separate Transaktionen aufteilen, um gemischte DML-Fehler zu vermeiden.
- Logik, die im Benutzer- oder Systemkontext ausgeführt werden muss
- Die Salesforce Platform erzwingt die Freigabe und Sichtbarkeit im Benutzerkontext. Wenn Sie Vorgänge ausführen müssen, die über die Berechtigungsebenen der Benutzer Ihrer Automatisierung hinausgehen, müssen Sie sicherstellen, dass diese Vorgänge im Systemkontext ausgeführt werden.
- Unterschiedliche Tools werden in unterschiedlichen Kontexten ausgeführt:
- Apex wird standardmäßig im Systemkontext ausgeführt. Mithilfe von Freigabestichwörtern in einer Apex Klassendefinition können Sie steuern, ob und wie Apex Verhaltensweisen Freigaberegeln auf Benutzerebene erzwingen.
- Flow weist kein einzelnes Standardverhalten auf. Ein Flow wird im Benutzer- oder Systemkontext ausgeführt, je nachdem, wie der Flow gestartet wird. Sie haben die Möglichkeit, die Freigabe im Systemkontext zu erzwingen.
- Prozesse (d. h. mit dem Prozessgenerator erstellte Automatisierungen) werden ohne Freigabeüberlegungen im Systemkontext ausgeführt. (Hinweis: Es wird empfohlen, Low-Code-Automatisierungen mit Flow zu erstellen.
- Logik, die asynchron ausgeführt werden muss
- Externe Systemvorgänge: Synchrone Callouts oder Aktionen, die auf externe Daten zugreifen, sind in keinem Plattform-Rollback-Verhalten enthalten. Um diese Verhaltensweisen nutzen zu können, müssen Sie Aktionen, die externe Systeme betreffen, in separate Transaktionen platzieren (mit asynchronen Apex-Methoden, asynchronen Pfaden oder aufrufbaren Aktionen).
- Eventing and messaging (Ereignis und Messaging): Platzieren Sie alle Aktionen im Zusammenhang mit Messaging oder Ereignissen mithilfe von asynchronen Apex-Methoden in nachgeordneten Kontexten, um den Fluss von Ereignissen oder Nachrichten im Zusammenhang mit Datenvorgängen zu steuern (und das Plattform-Rollback-Verhalten zu nutzen).
Die folgende Liste der Muster und Anti-Muster zeigt, wie eine ordnungsgemäße (und schlechte) Datenverarbeitung in Salesforce-Automatisierungen aussieht. Sie können sie verwenden, um Ihre Automatisierungsentwürfe vor dem Erstellen zu validieren oder Automatisierungen zu identifizieren, die neu faktorisiert werden müssen, um die Datenverarbeitung zu verbessern.
Weitere Informationen zu den von Salesforce für die Datenverarbeitung in der Automatisierung verfügbaren Tools finden Sie unter Für Automatisiert relevante Tools.
Die Fehlerverarbeitung ist für die Datenintegrität entscheidend. Dank der starken Fehlerbehandlung kann Ihr System zudem besser skaliert und altern und ist widerstandsfähiger.
Eine unsachgemäße Fehlerbehandlung in Automatisierungen kann zu Folgendem führen:
- Datensatzinkonsistenzen und andere Datenintegritätsprobleme
- Senden ungenauer Benachrichtigungen an Benutzer und andere Systeme
- Verschwenden von Zeit und Ressourcen bei manueller oder wiederholter Verarbeitung
- Gesamtmangel an Trust in einem System
Bei der Fehlerbehandlung in Automatisierungen muss jeder ausgeführte Prozess die Möglichkeit haben, einen Fehler nach Informationen zu analysieren, auf Logik zuzugreifen, was die nächsten Schritte auf Fehlerinformationen basieren sollten, und dann den richtigen Pfad zu befolgen. Diese Funktionen müssen nicht bei jeder Automatisierung immer wieder neu erstellt werden (das ist ein Optimierungs-Anti-Pattern). Stattdessen sollte jede Automatisierung im System in der Lage sein, eine Verbindung mit den entsprechenden Komponenten zur Fehlerbehandlung herzustellen.
Stellen Sie sich die folgenden Fragen, um die richtigen Fehlerbehandlungssteuerungen in Ihre Automatisierungen zu integrieren:
- Was ist ein "fataler" Fehler?
- Was ist ein Fehler, der behoben werden kann?
- Wie kann die Automatisierung bei Automatisierungen, die durch Benutzeraktionen ausgelöst werden, Fehler erkennen und den Benutzer benachrichtigen, bevor er versucht, Änderungen zu übernehmen?
Sobald Sie sich entschieden haben, wie Sie mit diesen Fehlern umgehen, können Sie mit der effektiven Fehlerverarbeitung in Ihre Automatisierungen beginnen. Die folgende Liste der Muster und Anti-Muster zeigt, wie eine ordnungsgemäße (und schlechte) Fehlerverarbeitung in einer Salesforce-Automatisierung aussieht. Sie können sie verwenden, um Ihre Automatisierungsentwürfe vor dem Erstellen zu validieren oder Automatisierungen zu identifizieren, die neu faktorisiert werden müssen, um die Fehlerverarbeitung zu verbessern.
Weitere Informationen zu den von Salesforce für die Fehlerbehandlung verfügbaren Tools finden Sie unter Für Automatisiert relevante Tools.
In der folgenden Tabelle finden Sie eine Auswahl an Mustern, nach denen in Ihrer Organisation gesucht (oder die erstellt) werden soll, sowie Anti-Muster, die vermieden oder behoben werden sollen.
✨ Entdecken Sie weitere Muster für die Datenintegrität im Explorer für Muster und Anti-Muster.
| Muster | Anti-Muster | |
|---|---|---|
| Datenverarbeitung | In Ihrem Datenwörterbuch:
- Feldebenendaten und Priorisierungslogik für alle Datenquellen und Data-Lake-Objekte vorhanden - Feldzuordnung von Data-Lake-Objekt zu Datenmodellobjekt vorhanden |
In Ihrem Datenwörterbuch:
- Feldebenendaten und Priorisierungslogik für Datenquellen und Data-Lake-Objekte sind nicht enthalten - Die Feldzuordnung von Data-Lake-Objekten zu Datenmodellobjekten ist nicht enthalten |
| In Ihrem Apex:
- Alle synchronen DML-Anweisungen oder Datenbankklassen-Methoden werden vor Auslöserausführungskontexten ausgeführt - Asynchrone Apex Aufrufe verwenden Warteschlangen, um komplexe DML transaktionsübergreifend zu verketten - Batch Apex wird ausschließlich für große Datenmengen verwendet - @future Apex wird nicht oder sparsam für Callouts oder Systemobjekt-DML verwendet |
In Ihrem Apex:
- DML-Anweisungen werden regelmäßig in Code angezeigt, der nach Auslöserkontexten aufgerufen wird - Asynchrones Apex wird selten verwendet - Asynchrone Apex Funktionen werden beliebig verwendet, einschließlich: -- Künftige Methoden und warteschlangenfähiger Apex werden inkonsistent oder austauschbar verwendet -- Datenbankvorgänge verfügen nicht über eine klare, konsistente Logik, um die Ausführung bei Bedarf an Batch Apex weiterzugeben |
|
| Im Flow:
- Alle im Benutzerkontext gestarteten Flows abstrahieren alle Systemkontexttransaktionen in Subflows, die konsistent nach einem Pausenelement platziert werden, um eine neue Transaktion zu erstellen - Komplexe Sequenzen zugehöriger Datenvorgänge werden mit Orchestrator erstellt (anstatt mehrere Subflows innerhalb eines monolithischen Flows aufzurufen) - Bei allen durch einen Datensatz ausgelösten Flows werden Auslöserreihenfolgenwerte ausgefüllt - Flows mit externen System-Callouts oder langfristigen Prozessen verwenden asynchrone Pfade |
Im Flow:
- Große monolithische Flows versuchen, komplexe Sequenzen von zugehörigen Datenoperationen (mit oder ohne Subflows) zu koordinieren - Durch einen Datensatz ausgelöste Flows verwenden keine Auslöserreihenfolgenattribute oder keine durchgängigen Werte für Auslöserreihenfolgen - Asynchrone Pfade werden nicht einheitlich oder gar nicht verwendet |
|
| In Ihrer Organisation:
- Schlichtungsregeln für die Identitätsbestimmung folgen der Priorisierungslogik in Ihrem Datenwörterbuch |
In Ihrer Organisation:
- Schlichtungsregeln für die Identitätsbestimmung folgen nicht der Priorisierungslogik im Datenwörterbuch |
|
| Fehlerbehandlung | In Apex:
- Code umschließt alle DML-, SOQL-, Callout- und anderen wichtigen Prozessschritte in Testfangblöcken
- Benutzerdefinierte Ausnahmen werden verwendet, um erweiterte Fehlermeldungen und Logik zu erstellen - In asynchronen und Massenkontexten werden anstelle von DML Datenbankklassenmethoden verwendet - Datenbankklassenmethoden können ausschließlich für alle Datenvorgänge (anstelle von DML) verwendet werden |
In Apex:
- DML, SOQL, Callouts oder andere wichtige Prozessschritte werden nicht konsistent in Try-Catch-Blöcke eingeschlossen
- System.debug-Anweisungen werden im Produktionscode angezeigt (und nicht auskommentiert)
- Es werden keine Datenbankklassenmethoden verwendet - Datenvorgänge werden ausschließlich mit DML ausgeführt |
| In Lightning Web Components (LWC):
- JavaScript umschließt alle Datenvorgänge und wichtigen Prozessschritte in If ()- oder Over If ()-Blöcken
- Alle @wire-Funktionen verwenden die von der API bereitgestellten Daten- und Fehlereigenschaften
- Alle wenn (Fehler)- oder wenn (Fehler)-Anweisungen Logik enthalten, um Fehler zu verarbeiten und informative Meldungen bereitzustellen |
In LWC:
- JavaScript verwendet nicht konsistent wenn () oder wenn () mit Datenvorgängen oder wichtigen Prozessschritten blockiert wird
- @wire-Funktionen verwenden keine Daten und Fehlereigenschaften der API (oder verwenden sie nicht einheitlich)
- Wenn überhaupt verwendet, wenn (Fehler) oder wenn (Fehler)-Anweisungen keine Logik enthalten, um Fehler zu verarbeiten und nützliche Fehlermeldungen bereitzustellen |
|
| In Aura:
- JavaScript umschließt alle Datenvorgänge und wichtigen Prozessschritte in Test-Catch-Blöcken
- In Testfangblöcken wird nativer JavaScript-Fehler in throw-Anweisungen verwendet (keine Verwendung von $A.error())
- Alle behebbaren Fehlerlogiken werden in Fanganweisungen angezeigt und bieten klare Benutzermeldungen |
In Aura:
- JavaScript umschließt Datenvorgänge und wichtige Prozessschritte nicht konsistent in Test-Catch-Blöcken
- Komponenten verwenden $A.error()
- Die behebbare Fehlerlogik wird in Fanganweisungen nicht konsistent angezeigt und Fehlermeldungen an Benutzer sind nicht eindeutig |
|
| Im Flow:
- Bildschirm-Flows verwenden konsistent Fehler-Konnektoren, um Benutzern Fehler anzuzeigen - Benutzerdefinierte Fehlermeldungen werden für Fehler konfiguriert, die auf dem Bildschirm angezeigt werden - Flows mit Datenvorgängen, Callouts und anderen wichtigen Verarbeitungslogiken weisen Fehlerpfade für alle wichtigen Aktionen auf |
Im Flow:
- Flows verwenden Fehlerpfade nicht einheitlich oder überhaupt - Benutzerdefinierte Fehlermeldungen werden nicht verwendet, sodass Benutzern die Standardmeldung "Ein nicht bearbeiteter Fehler ist in diesem Flow aufgetreten" angezeigt wird |
Beim Konzept des Geschäftswerts geht es im Kontext der Automatisierung darum, wie gut Prozesse messbare positive Auswirkungen auf die Beteiligten haben. Im Idealfall können Benutzer durch die Prozessautomatisierung weniger Zeit mit sich wiederholenden Aufgaben mit geringem Wert verbringen. Außerdem wird die Datenintegrität erhöht, indem manuelle Verarbeitungsaktivitäten, die zu Fehlern führen könnten, vermieden werden. Ähnlich wie beim Prozessdesign erfordert das Identifizieren und Bereitstellen von Automatisierungen, die den tatsächlichen Geschäftswert steigern, Arbeit, die über die grundlegende Entdeckung und Geschäftsanalyse hinausgeht.
Manchmal scheint es, als ob die beste Möglichkeit, dem Unternehmen einen Mehrwert zu bieten, darin besteht, einfach jeden von einem Geschäftsbenutzer angeforderten Prozess zu automatisieren, entweder in der Reihenfolge, in der er in Ihrem Rückstand (oder in der Ticketing-Warteschlange) angezeigt wird, oder basierend auf politischen Faktoren in Ihrer Organisation. Dies kann zu zwei verwandten Problemen führen: der Erstellung von Automatisierungen in einer suboptimalen Reihenfolge und der Erstellung der falschen Automatisierungen. Das erste Problem, die schlechte Priorisierung, verhindert, dass Prozesse mit hohem Wert implementiert werden, wenn sie es sollten, was das Wachstum potenziell verlangsamt. Das zweite Problem, die Erstellung falscher Automatisierungen, verzögert nicht nur die Bereitstellung hochwertiger Automatisierungen, sondern führt auch zu Zeitverschwendung, unnötigen Kosten und erhöhter Frustration bei den Zustellungsteams.
Sie können einen höheren Geschäftswert erzielen, indem Sie sich auf KPIs und die Priorisierung konzentrieren.
| Tool | Beschreibung | Effizienz | Datenintegrität | Geschäftswert |
|---|---|---|---|---|
| Apex Batching | Zusammenfassen von Batch-Datensätzen und Verarbeiten verwaltbarer Blöcke | X | X | |
| Künftige Apex-Methoden | Apex Methoden im Hintergrund asynchron ausführen | X | X | |
| Apex Queueing | Hinzufügen von Apex Aufträgen zu einer Warteschlange und Überwachen dieser Aufträge | X | X | |
| Apex Scheduler | Asynchrones Ausführen von Apex Klassen zu angegebenen Zeiten | X | X | |
| Genehmigungen | Angeben der erforderlichen Schritte zum Genehmigen von Datensätzen | X | X | |
| Asynchronous Apex | Apex Code asynchron ausführen | X | X | |
| Automatische Aktionen | Ausführen von Feldaktualisierungen, E-Mail-Sendungen und anderen Aktionen im Hintergrund | X | X | |
| Einstein Next Best Action | Anzeigen der richtigen Empfehlungen an die richtigen Personen zur richtigen Zeit | X | X | |
| E-Mail-Benachrichtigung | Erstellen und Senden automatisierter E-Mails | X | X | |
| Eskalationsaktionen | Angeben automatisierter Aktionen für Kundenvorgangseskalationen | X | X | |
| Feldaktualisierung | Aktualisieren von Feldwerten anhand der Automatisierung | X | X | |
| Flow Builder | Erstellen von Automatisierungen mit einer Zeigen-und-Klicken-Oberfläche | X | X | |
| Flow-Erweiterungen | Zugreifen auf gespeicherte Variablen als Komponenteneingaben in Flows | X | ||
| Bibliothek für Flow-Vorlagen | Verwenden von Vorlagen zum Entwerfen branchenspezifischer Flows | X | X | |
| Flow-Auslöser | Automatisieren komplexer Geschäftsprozesse | X | ||
| Aufrufbare Aktionen | Hinzufügen von Apex-Funktionen zu Flows | X | X | |
| Orchestrator | Erstellen und Verwalten von Automatisierungen in mehreren Schritten | X | X | |
| Ausgehende Nachricht | Senden von Informationen aus einem automatisierten Prozess mit Belegen und Wiederholungen | X | ||
| Plattformereignisse mit Flow veröffentlichen | Veröffentlichen von Ereignissen über Benutzerinteraktionen und Automatisierungen | X | ||
| Abfrageoptimierung | Verwenden von Selektivität und Indizes zum Verbessern der Leistung von Abfragen, Berichten und Listenansichten | X | X | |
| Salesforce-Flow | Erstellen deklarativer Prozessautomatisierungen mit Flow Builder | X | X | |
| Benachrichtigungen mit Flows senden | Senden von Nachrichten über SMS, WhatsApp oder Facebook Messenger | X | X | |
| Benachrichtigungen mit Prozessen senden | Senden von Nachrichten über SMS, WhatsApp oder Facebook Messenger | X | X | |
| Modifikator 'SOQL FÜR AKTUALISIEREN' | Sperren von Datensätzen zum Verhindern von Race-Bedingungen und Thread-Sicherheitsproblemen | X | ||
| Strategy Builder | Identifizieren von Empfehlungen, die auf Datensatzseiten angezeigt werden sollen | X | X | |
| Subflows | Reduzieren der Flow-Komplexität durch Wiederverwendung | X | ||
| Plattformereignisse mit Flow abonnieren | Empfangen von über Automatisierungen veröffentlichten Nachrichten | X | ||
| Aufgabenaktionen | Bestimmen von Zuweisungsdetails, die einem Benutzer von einer Automatisierung bereitgestellt werden | X |
| Ressource | Beschreibung | Effizienz | Datenintegrität | Geschäftswert |
|---|---|---|---|---|
| Obergrenzen für Apex Execution | Erfahren Sie, wie das Apex-Laufzeitmodul Obergrenzen durchsetzt | X | X | |
| Batch-Verwaltungsressourcen | Erstellen, Verwalten, Planen und Überwachen von Batchaufträgen | X | X | |
| Bewährte Vorgehensweisen für SOQL und SOSL | Verbessern der Abfrageleistung von Anwendungen mit großen Datenvolumen | X | ||
| Vorlage 'Designstandards' | Erstellen von Designstandards für Ihre Organisation | X | X | X |
| Flow-Massenverarbeitung in Transaktionen | Entwerfen von Flows für Inkassovorgänge | X | X | |
| Überlegungen zu Flow-Daten | Informationen zu durch einen Zeitplan ausgelösten Flows für Batchdaten | X | X | |
| Flow-Debugging | Testen und Beheben von Fehlern bei Flows | X | ||
| Verarbeitung von Anforderungen | Erfahren Sie, wie Salesforce Aufträge schnell verarbeitet und Fehler minimiert | X | X | |
| KPI-Tabellenblattvorlage | Bestimmen des Geschäftswerts einer bestimmten Kennzahl | X | X | |
| Aufrufbare Aktionen zum Senden von Callouts an externe Systeme | Aufrufen externer Systeme über einen Flow mit Apex | X | ||
| Gemischte DML-Vorgänge | Wissen, welche sObjects zusammen für DML in derselben Transaktion verwendet werden können | X | X | |
| Ausführungsreihenfolge | Verstehen der Reihenfolge von Ereignissen für Einfügungen, Aktualisierungen und Aktualisierungen | X | X | |
| Häufig gestellte Fragen zum Abfrageplan | Optimieren von Abfragen mit großen Datenmengen | X | X | |
| Überlegungen zu durch einen Zeitplan ausgelösten Flows | Grundlegendes zu den besonderen Verhaltensweisen von durch einen Zeitplan ausgelösten Flows | X | ||
| Transaktionssteuerung | Generieren eines Speicherpunkts, der den aktuellen Datenbankstatus angibt | X | X | |
| Was geschieht, wenn ein Flow fehlschlägt? | Grundlegendes zur Fehlerbehandlung in Flows | X | X | |
| Bewährte Vorgehensweisen für die Workflow-Automatisierung | Erste Schritte mit der Salesforce-Automatisierung | X | X | X |
| Arbeiten mit sehr großen SOQL-Abfragen | Schreiben effizienterer SOQL-Abfragen | X |
Helfen Sie uns, Salesforce Well-Architected für Sie relevant zu halten. Nehmen Sie an unserer Umfrage teil, um Feedback zu diesen Inhalten zu geben und uns mitzuteilen, was Sie als Nächstes sehen möchten.