Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

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 können Sie Plattformereignisse mithilfe von Apex-Auslösern, Flows, Prozessen, einer Lightning-Komponente und einem CometD-basierten Tool 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.

Ferner ist Vertrautheit mit den Konzepten der Streaming-API für dieses Modul hilfreich. Falls noch nicht geschehen, arbeiten Sie das Modul "Lightning-Plattform-API – Grundlagen" durch, ehe Sie mit diesem Modul beginnen.

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 Modul "Grundlagen der Lightning-Plattform-API" haben wir die Analogie von Radar auf einem Piratenschiff verwendet, um die Ereigniserkennung zu veranschaulichen. Diese Analogie funktioniert gut für das Streaming von PushTopic-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 über einen Kanal. Beispiel: eine Auftragserteilungsanwendung.

Ereigniskanal
Ein Stream von Ereignissen, bei dem ein Ereignisproduzent Ereignisnachrichten sendet, die von Ereignisnutzern gelesen werden.

Ereignisconsumer
Ein Abonnent eines Kanals, der Nachrichten auf dem Kanal empfängt. Eine Auftragsabwicklungsanwendung wird beispielsweise über neue Aufträge benachrichtigt.

Das folgende Diagramm veranschaulicht eine ereignisbasierte Softwarearchitektur.

Ein Diagramm mit den Komponenten ereignisbasierter Systeme: Ereignisproduzenten, die Informationen in den Ereignisbus eingeben, der Nachrichten an die Ereignisnutzer sendet

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 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. 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 informiert und erstellt einen Versandauftrag für ein bestimmtes Produkt.

In diesem Diagramm veröffentlicht eine Produktbestellungsanwendung ein Bestellungsereignis in einem Ereignisbus. Verschiedene Lieferantenanwendungen haben den Ereignisbus abonniert und empfangen das Ereignis.

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.

Eine externe Lieferantenanwendung veröffentlicht eine Plattformereignisnachricht für eine Artikelretourenanforderung. In Salesforce hat ein Auslöser den Ereignisbus abonniert und empfängt das Ereignis.

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 dieselben Aktionen mithilfe anderer Salesforce-Funktionen wie Prozessgenerator oder Flows ausführen. Doch bei der Nutzung von Plattformereignissen können Sie von einem ereignisbasierten Programmierungsmodell und einer standardisierten Programmierung in Ihren Anwendungen profitieren.

In diesem Diagramm veröffentlicht eine Anwendung in Salesforce ein Plattformereignis. Ein Auslöser hat diesen Ereigniskanal abonniert und empfängt das Ereignis.

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 sObjects

Ein Plattformereignis ist eine besondere Art von Salesforce-Einheit, die einem sObject auf viele Weisen ähnelt. Eine Ereignisnachricht ist eine Instanz eines Plattformereignisses, vergleichbar mit einem Datensatz, der eine Instanz eines benutzerdefinierten Objekts ist. Im Gegensatz zu benutzerdefinierten Objekten können Sie Ereignisdatensätze auf der Salesforce-Benutzeroberfläche nicht aktualisieren, löschen oder 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 empApi. Als Alternative zu Code können Sie Ereignisse mithilfe deklarativer Tools wie Prozessgenerator und Flow Builder veröffentlichen. Externe Anwendungen veröffentlichen Ereignisse mithilfe der sObject-API und nutzen Ereignisse mithilfe von CometD. Wie Sie sehen, lassen sich Plattformereignisse überaus flexibel einsetzen!

Unterschiede zwischen Plattformereignissen und anderen Streaming-Ereignissen

Was gilt für andere Streaming-Ereignisse? Zu anderen Ereignissen zählen PushTopic- und allgemeine Ereignisse. Bei PushTopic-Ereignissen empfangen Clients Nachrichten zu Änderungen in Salesforce-Datensätzen basierend auf einer vordefinierten Abfrage. Bei allgemeinen Ereignissen können Sie beliebige Nachrichteninhalte (sog. Nutzlasten) senden und empfangen, die nicht unbedingt an Salesforce-Datensätze gebunden sein müssen. Plattformereignisse sind vergleichbar mit allgemeinen Ereignissen, bieten aber mehr Anpassungsmöglichkeiten. Mithilfe von Plattformereignissen können Sie beliebige benutzerdefinierte Daten veröffentlichen. Sie definieren das Schema von Ereignisdaten auf einer bestimmten Ebene als typisierte Felder. Darüber hinaus können Sie Plattformereignisse in nativen Salesforce-Plattformanwendungen und externen Anwendungen gleichermaßen nutzen. Verwenden Sie Plattformereignisse in den folgenden 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 dieser Tabelle werden die Merkmale von allgemeinen und Plattformereignissen verglichen.

Funktion Allgemeines Ereignis Plattformereignis
Definieren des Ereignisschemas als typisierte Felder
Häkchen
Einschließen benutzerdefinierter Nutzlasten Häkchen Häkchen
Veröffentlichen von Ereignissen über eine oder mehrere APIs Häkchen Häkchen
Veröffentlichen von Ereignissen über Apex
Häkchen
Abonnieren über CometD Häkchen Häkchen
Abonnieren über Apex-Auslöser
Häkchen
Deklaratives Veröffentlichen mithilfe von Prozessgenerator und Flow Builder
Häkchen
Hinweis

Hinweis

Einen Vergleich weiterer Ereignistypen finden Sie im Streaming API Developer Guide unter Streaming Event Features.

In der nächsten Lektion beschäftigen wir uns mit dem Definieren eines Plattformereignisses und von Veröffentlichungsereignissen.