Grundlegendes zur ereignisorientierten Softwarearchitektur
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Auflisten der Komponenten einer ereignisbasierten Softwarearchitektur
- Erläutern der Vorteile einer ereignisorientierten Softwarearchitektur
- Beschreiben von Anwendungsfällen für die Funktion "Plattformereignisse"
- Beschreiben der Merkmale eines Plattformereignisses
Bevor Sie mit diesem Modul starten
Wir wissen, dass Sie unbedingt loslegen möchten! Ehe Sie sich jedoch an die Arbeit in diesem Modul begeben, sollten Sie mit einigen Konzepten vertraut sein, um dieses Modul absolvieren zu können.
Dieses Modul zeigt Ihnen, wie Sie Plattformereignisse veröffentlichen können, indem Sie Apex, REST-API, Flows und Prozesse nutzen. Außerdem wird in diesem Modul behandelt, wie Sie neben anderen Methoden mit Apex-Auslösern Plattformereignisse abonnieren. Um dieses Modul verstehen zu können, sollten Sie mit mindestens einer dieser Technologien vertraut sein. Um die praktische Aufgabe in diesem Modul bewältigen zu können, sollten Sie Kenntnisse über Apex-Auslöser haben. Hier finden Sie eine Liste mit einem Trail und Modulen, anhand derer Sie Apex erlernen können.
- Wenn Sie keine Vorkenntnisse in einer objektorientierten Programmiersprache haben, wählen Sie diesen Trail: Entwickeln von Apex-Programmierkenntnissen
- Wenn Sie mit einer objektorientierten Programmiersprache vertraut sind, sehen Sie sich diese Module an: Apex – Grundlagen und Datenbank, Apex-Auslöser und Apex-Tests.
Auch Vertrautheit mit den Konzepten von Pub/Sub-API ist für dieses Modul hilfreich, aber nicht erforderlich. Informationen zur Pub/Sub-API finden Sie in der Dokumentation zur Pub/Sub-API.
Grundlegendes zur ereignisorientierten Softwarearchitektur
Hat Ihr Auftragsabwicklungssystem ein Paket versendet? Müssen Ihre Druckerkassetten ausgetauscht werden? Ganz egal, wozu Sie benachrichtigt werden möchten: die Salesforce-Plattform für Benachrichtigungen im Unternehmen sorgt für die sichere und skalierbare Übermittlung benutzerdefinierter Benachrichtigungen innerhalb von Salesforce und aus externen Quellen. Mithilfe von Plattformereignissen können Sie Ihre Systeme überwachen und Änderungen an andere Systeme übermitteln.
Grundlage einer ereignisgesteuerten Kommunikation ist ein auf Veröffentlichung und Abonnements basierendes Modell: Ein Sender überträgt eine Nachricht, die von einem oder mehreren Empfängern empfangen wird. Dies ist vergleichbar mit einer Funkübertragung: Ein Sendemast überträgt ein Funksignal, das von Empfängern empfangen wird, sobald sie die richtige Frequenz eingestellt haben.
Wie bei einer Funkübertragung erfolgt die ereignisbasierte Kommunikation vom Sender zum Empfänger. Ereignisse werden unabhängig davon gesendet, ob die Empfänger empfangsbereit sind, und Empfänger bestätigen nicht den Empfang eines Ereignisses. Ereignisbasierte Kommunikation erfolgt in Echtzeit, als genauer gesagt, nahezu in Echtzeit. Funkwellen werden mit Lichtgeschwindigkeit übertragen, aber ereignisbasierte Software- und Hardwaresysteme weisen in der Regel Latenzen auf.
Im Trailhead-Modul "Lightning-Plattform-API – Grundlagen" haben wir die Analogie von Radar auf einem Piratenschiff verwendet, um die Ereigniserkennung zu veranschaulichen. Diese Analogie funktioniert gut für das Streaming von Datenänderungserfassungs-Ereignissen, die auf Änderungen in Salesforce-Datensätzen basieren. Dieses Kommunikationsmodell erfordert nur einen Abonnenten. Doch bei Plattformereignissen gibt es zwei Teilnehmer an der Kommunikation: einen Sender und einen Empfänger. Sie bilden die beiden Komponenten einer ereignisorientierten Architektur.
Komponenten ereignisorientierter Systeme
Ehe wir fortfahren, möchten wir einige Begriffe definieren.
Ereignis
Eine Änderung eines Status, die in einem Geschäftsprozess von Bedeutung ist. Die Erteilung eines Auftrags ist beispielsweise ein bedeutendes Ereignis, da die Auftragsabwicklung den Eingang einer Benachrichtigung erwartet, ehe ein Auftrag verarbeitet wird.
Ereignisnachricht
Eine Nachricht, die Daten zum Ereignis enthält. Wird auch Ereignisbenachrichtigung genannt. Eine Ereignisnachricht kann beispielsweise eine Benachrichtigung zu einer Auftragserteilung sein, die Informationen zum Auftrag enthält.
Ereignisproduzent
Der Urheber einer Ereignisnachricht. Beispiel: eine Auftragserteilungsanwendung.
Ereigniskanal
Ein Stream von Ereignissen, bei dem ein Ereignisproduzent Ereignisnachrichten sendet, die von Ereignisnutzern gelesen werden. Bei Plattformereignissen ist der Kanal für ein einzelnes Plattformereignis vorgesehen oder ein benutzerdefinierter Kanal, der Ereignisnachrichten für mehrere Plattformereignisse zusammenfasst.
Ereignisnutzer
Ein Abonnent eines Kanals, der Nachrichten auf dem Kanal empfängt. Eine Auftragsabwicklungsanwendung wird beispielsweise über neue Aufträge benachrichtigt.
Ereignisbus
Ein mandantenfähiger Multicloud-Ereignisspeicher und -Übermittlungsservice, der auf einem Veröffentlichen/Abonnieren-Modell basiert. Der Ereignisbus ermöglicht das Abrufen gespeicherter Ereignisnachrichten zu einem beliebigen Zeitpunkt während des Aufbewahrungszeitraums. Der Ereignisbus basiert auf einem zeitlich geordneten Protokoll, das sicherstellt, dass Ereignisnachrichten in der Reihenfolge ihres Eingangs bei Salesforce gespeichert und zugestellt werden.
Das folgende Diagramm veranschaulicht eine ereignisbasierte Softwarearchitektur.
Im Gegensatz zu Kommunikationsmodellen nach dem Anforderung/Antwort-Prinzip sind in einer auf einem ereignisorientierten basierenden Softwarearchitektur Ereignisproduzenten von Ereignisnutzern entkoppelt. Dadurch wird das Kommunikationsmodell in verbundenen Systemen vereinfacht. Es müssen keine Anforderungen an einen Server gerichtet werden, um Informationen zu einem bestimmten Zustand abzurufen. Stattdessen abonniert ein System einen Ereigniskanal und wird benachrichtigt, sobald neue Zustände auftreten. Eine beliebige Anzahl von Ereignisnutzern kann dieselben Ereignisse empfangen und darauf reagieren. Sobald ein Ereignis eintritt, empfangen Systeme diese Informationen und können darauf nahezu in Echtzeit reagieren. Systeme, die Ereignisse senden, und andere, die Ereignisse empfangen, weisen keine Abhängigkeiten voneinander auf, mit Ausnahme der Semantik des Nachrichteninhalts.
Die Salesforce-Plattform für Benachrichtigungen im Unternehmen bietet die Vorteile einer ereignisorientierten Softwarearchitektur. Plattformereignisse sind die Ereignisnachrichten, die Ihre Anwendungen senden und empfangen. Sie vereinfachen das Kommunizieren von Änderungen und Reagieren darauf, ohne dass Sie komplexe Logik schreiben müssen. Ereignisproduzenten und -abonnenten kommunizieren über Plattformereignisse miteinander. Ein oder mehrere Abonnenten können dasselbe Ereignis überwachen und Aktionen ausführen.
Angenommen, eine Nachrichtenagentur namens Cloud News sendet Ereignisse an abonnierende Clients mit den neuesten Informationen zu Verkehrs- und Straßenverhältnissen in einer Bergregion. Die Inhalte dieser Ereignisse sind nicht bloß die Nachrichten selbst, sondern auch zugehörige Details wie die Dringlichkeit der Nachricht und der Ort des Vorfalls. Abonnenten können diese Ereignisse empfangen und bestimmen, welche Aktionen basierend auf der Dringlichkeit der Nachricht erfolgen sollen.
Das ist alles gut und schön, doch was sind reale Fälle, in denen Sie Plattformereignisse verwenden können? Selbstredend ist die Nutzung von Plattformereignissen nicht auf Nachrichtenagenturen beschränkt. Es folgen einige nützliche Anwendungsbereiche.
Beispiele für die Nutzung von Plattformereignissen
Lassen Sie uns einen Blick auf einige Geschäftsszenarien werfen, in denen Plattformereignisse zum Einsatz kommen. In diesen Szenarien kommunizieren Salesforce und externe Systeme über Plattformereignisnachrichten. Im ersten Szenario benachrichtigt eine Anwendung in Salesforce externe Anwendungen zur Auftragsabwicklung über einen Produktversandauftrag. Im zweiten Szenario benachrichtigt eine externe Produktanwendung Salesforce über Artikelretouren. Das letzte Szenario veranschaulicht, wie Ereignisnachrichten in Salesforce mithilfe von Auslösern genutzt werden.
Plattform zu externer Anwendung: Auftragsabwicklung in einer Lieferantenanwendung
Wenn in Salesforce eine Opportunity als "Gewonnen" geschlossen wird, hat Ihr Unternehmen einen Abschluss mit einem Kunden erzielt. Angenommen, Sie arbeiten mit einem Lieferanten zusammen, um zu einer Opportunity gehörige Produkte zu versenden. Jeder Lieferant hat eine externe Anwendung zum Verarbeiten von Versandaufträgen für bestimmte Produkte. Die externe Anwendung überwacht Plattformereignisse. Beim Schließen einer Opportunity wird ein Auslöser, der Teil der Produktbestellungsanwendung in Salesforce ist, ausgelöst und eine Plattformereignisnachricht wird veröffentlicht. Jede Lieferantenanwendung wird über das Ereignis benachrichtigt. Der für den Versand des jeweiligen Produkts zuständige Lieferant erstellt die Sendung.
Externe Anwendung zu Plattformanwendung: Verarbeiten von Artikelretouren in Salesforce
Angenommen, ein Kunde möchte einen erworbenen Artikel an einen Lieferanten zurückgeben. Ein externes System sendet Artikelretourenanforderungen zur Verarbeitung an Salesforce. Das externe System veröffentlicht ein Plattformereignis, um Salesforce auf die Artikelretoure aufmerksam zu machen. Ein Ereignis-Listener (Auslöser) in Salesforce empfängt das Ereignis und führt verschiedene Aktionen aus. Der Auslöser kann beispielsweise den Vertriebsmitarbeiter auf die Retoure aufmerksam machen und eine Bestätigungs-E-Mail an den Kunden senden.
Plattform zu Plattform: Neuzuweisen von Lead-Datensätzen
Wenn ein Lead in Salesforce zugewiesen ist, wird ein Lead-Auslöser ausgelöst, der offene Opportunities und Kundenvorgänge im Zusammenhang mit dem Lead-Inhaber sucht. Basierend auf den zugehörigen Datensätzen veröffentlicht der Auslöser ein Ereignis, das von einer Salesforce-Anwendung empfangen wird. Auf Grundlage der Ereignisinformationen weist die Anwendung den Lead neu zu und erstellt einen Chatter-Post.
In diesem Szenario können Sie die gleichen Aktionen mithilfe von Flow Builder ausführen. Doch bei der Nutzung von Plattformereignissen können Sie von einem ereignisbasierten Programmierungsmodell und einer standardisierten Programmierung in Ihren Anwendungen profitieren.
Merkmale von Plattformereignissen
Nun, da Sie eine Vorstellung davon haben, wann Plattformereignisse verwendet werden sollten, wollen wir ihre Komponenten und Merkmale eingehender untersuchen.
Sie legen die benutzerdefinierten Daten fest, die Plattformereignisse enthalten. Ebenso wie benutzerdefinierte Objekte werden Plattformereignisse in Salesforce von Ihnen definiert. Sie erstellen die Definition eines Plattformereignisses, indem Sie ihr einen Namen geben und benutzerdefinierte Felder hinzufügen. Hier sehen Sie eine Beispieldefinition benutzerdefinierter Felder für ein Nachrichtenereignis für die Agentur Cloud News.
Feldbezeichnung/-name |
API-Feldname |
Feldtyp |
---|---|---|
Standort |
Location__c |
Text Länge: 100 |
Dringend |
Urgent__c |
Kontrollkästchen |
News Content |
News_Content__c |
Textfeld (Lang) |
Plattformereignisse und Salesforce-Objekte
Ein Plattformereignis ist eine besondere Art von Salesforce-Einheit, die einem Salesforce-Objekt auf viele Weisen ähnelt. Eine Ereignisnachricht ist eine Instanz eines Plattformereignisses, vergleichbar mit einem Datensatz, der eine Instanz eines Salesforce-Objekts ist. Im Gegensatz zu Datensätzen können Sie Ereignisnachrichten nicht aktualisieren oder löschen und auch nicht auf der Salesforce-Benutzeroberfläche anzeigen.
Für Plattformereignisse können Sie Lese- und Erstellungsberechtigungen festlegen. Benutzern können Sie in Profilen oder Berechtigungssätzen Berechtigungen erteilen.
Verwenden von Plattformereignissen in nativen und externen Apps
Plattformereignisse ermöglichen den Fluss von Ereignisnachrichten innerhalb von Salesforce bzw. an oder von externen Anwendungen. Anwendungen auf der Salesforce-Plattform verwenden zum Veröffentlichen von Ereignissen eine Apex-Methode und zum Nutzen von Ereignissen einen Apex-Auslöser oder die Lightning-Komponente "Emp API". Als Alternative zum Programmieren können Sie Ereignisse auch mit dem deklarativen Tool Flow Builder veröffentlichen. Externe Anwendungen veröffentlichen Ereignisse mithilfe der Pub/Sub-API oder der Daten-APIs und nutzen Ereignisse mithilfe der Pub/Sub-API. Wie Sie sehen, lassen sich Plattformereignisse überaus flexibel einsetzen!
Verwenden Sie Plattformereignisse in diesen Fällen:
- Zum Senden und Empfangen benutzerdefinierter Ereignisdaten mit einem vordefinierten Schema
- Zum Veröffentlichen oder Abonnieren von Ereignissen in Apex
- Für ein flexibles Veröffentlichen und Verarbeiten von Ereignissen auf der Salesforce-Plattform
In der nächsten Lektion beschäftigen wir uns mit dem Definieren eines Plattformereignisses und von Veröffentlichungsereignissen.
Ressourcen