Microsoft Dataverse Geschäftsereignisse
Die Automatisierung der Geschäftslogik und die Integration in andere Systeme werden durch Ereignisse getrieben. Wenn in einer Geschäftsanwendung etwas Interessantes passiert, tritt ein Ereignis ein und den Abonnenten stehen das Ereignis beschreibende Daten zur Verfügung, auf die sie reagieren können. Microsoft Dataverse bietet Funktionen zum Weiterleiten von Ereignisdaten an Abonnenten mithilfe der folgenden Anwendungen und Technologien:
- Power Automate-Flows
- Azure-Servicebus
- Azure Event Hub
- Webhooks
- Dataverse-Plug-Ins
Dataverse verfügt über ein robustes Ereignisframework zum Erfassen von Systemereignissen in Dataverse. Sie können auf Ereignisse im System reagieren, indem Sie das Dataverse-Ereignisframework verwenden. Hieran ändert sich nichts. Weitere Informationen: Ereignisframework
Dataverse-Geschäftsereignisse bieten neue Möglichkeiten, um Ereignisse verfügbar zu machen und Ihre Geschäftslogik zusammenzustellen, um asynchron darauf zu reagieren, z. B. den Power Automate Dataverse-Trigger Bei einer ausgeführten Aktion.
Hier sehen Sie einige Beispiele:
Sie verfügen über eine Logik, die Sie anwenden möchten, wenn eine Freigabe für einen Datensatz im Besitz eines Benutzers ausgeführt wird. Die einzige Möglichkeit, um eine Logik für diese
GrantAccess
-Nachricht zu initiieren, die bei der Freigabe eines Datensatzes auftritt, ist über das Dataverse-Ereignisframework, normalerweise über ein Plug-In. Bei Geschäftsereignissen können Sie die Tabelle katalogisieren, wodurch dieGrantAccess
-Nachricht verfügbar gemacht wird.Ein Plug-In-Entwickler kann eine Logik in einem synchronen Plug-In-Code nutzen, die auf bestimmte Bedingungen reagiert, die er an freigegebene Variablen für ein anderes asynchrones Plug-In weitergibt, um eine Automatisierung einzuleiten. Bei einem Geschäftsereignis können Sie eine benutzerdefinierte Aktion aufrufen, die die Details des Ereignisses in den Parametern enthält, anstatt diese Details durch die freigegebenen Variablen der Ereignispipeline zu übergeben. Ein asynchrones Plug-In kann dann auf die benutzerdefinierte Aktion reagieren oder Sie können stattdessen Power Automate verwenden. Es kann auch andere Logik hinzugefügt werden, um auf dieses Ereignis zu reagieren. Dieses Muster bietet größere Flexibilität und die Möglichkeit, die Logik in Ihrem Plug-In-Code zu vereinfachen.
Kataloge und benutzerdefinierte Ereignisse
Dataverse Business-Ereignisse umfasst Konzepte von Dynamics Finanz und Operation Business-Ereignisse zusammen mit dem Dataverse Event Framework, um eine neue Möglichkeit bereitzustellen, Ereignisse zu erkennen und Automatisierung zu erstellen, wenn diese Ereignisse auftreten.
Ereigniskatalog: Da im System sehr viele Ereignisse verfügbar sind, kann es schwierig sein, das richtige zu finden. Ein Ereigniskatalog verbessert die Ereigniserkennung, indem Ereignisse mit einer Lösung verknüpft und in Kategorien organisiert werden.
Ein Katalog enthält nur ausgewählte, hochwertige Ereignisse, die für die Lösung relevant sind. Durch das Hinzufügen eines Ereignisses zu einem Katalog machen Sie das Ereignis verfügbar.
Benutzerdefinierte Ereignisse: Sie können benutzerdefinierte Aktionen als benutzerdefinierte Ereignisse erstellen, weil Dataverse sie mit seinem Ereignisframework verarbeitet.
Diese Ereignisse können Datenänderungen in Dataverse darstellen oder nicht. Sie können benutzerdefinierte APIs ohne jeglichze synchrone Logik verwenden, die lediglich existiert, um Listener zu benachrichtigen, dass ein Ereignis von Interesse eingetreten ist. Sie geben das Ereignis aus, indem Sie die benutzerdefinierte Aktion aufrufen.
Ereigniskatalog
Um ein Geschäftsereignis verfügbar zu machen, muss es katalogisiert werden. Weitere Informationen: Catalog- und CatalogAssignment-Tabellen
Ein Katalog erleichtert das Erkennen des Geschäftsereignisses, da sie nach der enthaltenden Lösung und den für diese Lösung definierten Kategorien gruppiert sind. Der Lösungsherausgeber wählt aus, welche Ereignisse für seine Lösung am relevantesten sind.
Ein Katalog ist eine hierarchische Struktur, bei der die oberste Ebene eine Lösung darstellt. Die nächste Ebene ist dann eine Kategorie. Relevante Tabellen und Ereignisse werden dann einer Kategorie zugeordnet.
Das Folgende stellt beispielsweise einen Katalog für eine Lösung namens Contoso-Kundenverwaltung dar:
- Contoso-Kundenverwaltung
- Tabellen
- Account
- Contact
- Mitgliedschaft
- Kundenereignisse
- Laden betreten
- Website besuchen
- Produkt kaufen
- Produkt zurückgeben
- Tabellen
Dieses Beispiel verwendet Tabellen und Kundenereignisse als Kategorien. Sie können jedoch jede beliebige Kategoriegruppierung verwenden, die für Ihre Lösung sinnvoll ist.
Wenn Ihre Lösung aus mehreren abhängigen Lösungen besteht, können Sie den Stammkatalog in der Basislösung definieren und anschließend zusätzliche Kategorien und zugewiesene Ereignisse zu den abhängigen Lösungen hinzufügen, die diese hinzufügen.
Tabellenereignisse
Wenn eine Tabelle einer Kategorie zugewiesen wird, werden bestimmte an die Tabelle gebundene Vorgänge eingeschlossen. Sie können nicht jeden Vorgang einzeln auswählen. Wenn die Tabelle Vorgänge zum Erstellen, Aktualisieren und Löschen unterstützt, werden diese Ereignisse eingeschlossen.
Zusätzliche Ereignisse im Zusammenhang mit anderen Vorgängen werden ebenfalls eingeschlossen. Wenn die Tabelle beispielsweise im Besitz von Benutzern ist, nimmt sie an sicherheitsrelevanten Ereignissen teil. Der Besitzer eines beliebigen Datensatzes in der Tabelle kann ihn freigeben, die Freigabefunktionen ändern oder die Freigabe des Datensatzes beenden. Vorgänge im Zusammenhang mit der Freigabe werden als GrantAccess
-, ModifyAccess
- und RevokeAccess
-Ereignisse verfügbar gemacht. Abhängig von der Tabelle können auch zusätzliche Ereignisse enthalten sein. Wenn es sich bei der Tabelle um eine virtuelle Tabelle handelt und sie so konfiguriert wurde, dass sie virtuelle Tabellenereignisse unterstützt, werden die OnExternalCreated
-, OnExternalUpdated
- und OnExternalDeleted
-Ereignisse aufgenommen. Weitere Informationen: Aktivieren virtueller Tabellen zur Unterstützung von Dataverse-Ereignissen
Fügen Sie nur diejenigen Tabellen hinzu, die Geschäftsdaten enthalten, die für Abonnenten von Interesse sind. Sie sollten nicht versuchen, jede Tabelle einzuschließen.
Dieselbe Tabelle kann in mehrere Kataloge aufgenommen werden. Wenn Ihre Lösung beispielsweise von Kundendaten in den Dataverse-Kontotabellen oder -Kontakttabellen abhängig ist, sollten Sie diese einschließen. Andere Kataloge können Tabellen aus Ihrer Lösung enthalten.
Benutzerdefinierte Ereignisse
Verwenden Sie Dataverse Custom-API, um angepasste Ereignisse zu erstellen. Jede benutzerdefinierte API erstellt eine neue Dataverse-Nachricht und stellt den Webdienst-Endpunkt bereit, um die benutzerdefinierte API aufzurufen. Weitere Informationen: Benutzerdefinierte APIs erstellen und verwenden.
Benutzerdefinierte Geschäftsereignisse können nur dann Nachrichten senden, wenn ein Ereignis abgeschlossen ist. Das Dataverse-Ereignisframework bietet Funktionen zum Einschließen einer synchronen Logik, die einen Vorgang abbrechen oder die Ausgabe ändern kann, sodass Sie das Verhalten des Systems erweitern können. Viele der gleichen Nachrichten, die mit Geschäftsereignissen bereitgestellt werden, können mithilfe synchroner Logik im Dataverse-Ereignisframework erweitert werden. Nachrichten zu Geschäftsereignissen erfolgen jedoch nur, wenn diese Vorgänge erfolgreich abgeschlossen werden.
Sie können beispielsweise eine benutzerdefinierte API verwenden, die eine Reihe von Vorgängen umfasst, die einen Geschäftsprozess wie beispielsweise Neu zuweisen darstellen, durch den der Besitz eines Datensatzes basierend auf bestimmten Kriterien in einen anderen geändert wird. Oder Eskalieren, wodurch der Prioritätsstatus eines Datensatzes erhöht wird und zusätzliche zugehörige Aufgaben erstellt werden. Wenn Sie eine benutzerdefinierte API auf diese Weise verwenden, definieren Sie neue Ereignisse, die für Abonnenten von Interesse sein könnten. Wenn diese Vorgänge erfolgreich abgeschlossen werden, kann für sie asynchrone Logik ausgelöst werden.
Sie können eine benutzerdefinierte Aktion auch nur aus dem Grund erstellen, damit Abonnenten darauf reagieren können. Externe Ereignisse beschreibt einen speziellen Fall, in dem Ereignisse ihren Ursprung außerhalb von Dataverse haben. Sie können jedoch ebenfalls benutzerdefinierte APIs als Ereignisse mit den gleichen Einstellungen zur Verwendung in Dataverse erstellen. Wenn nur Abonnenten auf Ihre benutzerdefinierte Aktion reagieren sollen, empfehlen wir, den Namen Ihrer benutzerdefinierten Aktion mit On
beginnen zu lassen, beispielsweise OnCustomerPurchase
oder OnVendorPaymentPosted
.
Die benutzerdefinierte API kann für viele verschiedene Zwecke verwendet werden, von denen sich nicht alle auf Vorgänge beziehen, die für die Geschäftslogik interessante Ereignisse darstellen. Aus diesem Grund müssen Geschäftsereignisse katalogisiert werden. Der Besitzer der Lösung, die die benutzerdefinierte API enthält, sollte nur die diejenigen benutzerdefinierten APIs katalogisieren, die hochwertige Ereignisse darstellen. Sie sollten nicht versuchen, jede benutzerdefinierte Aktion zu katalogisieren, die in Ihrer Lösung enthalten ist.
Entwurfsprinzipien
Wenn Sie benutzerdefinierte APIs für die Katalogisierung als Geschäftsereignisse in Ihrer Lösung in Betracht ziehen, verwenden Sie die folgenden Designprinzipien.
Klare Absicht: Die Absicht hinter der Erstellung eines Geschäftsereignisses muss klar verstanden werden. Mit anderen Worten: Was ist der Grund für die Erstellung des Geschäftsereignisses und wie wird es vom Abonnenten verwendet?
Spezifisch: Das Ereignis sollte spezifisch sein, damit ein Abonnent nicht filtern muss, ob er darauf reagieren soll oder nicht. Erstellen Sie keine generischen Geschäftsereignisse, auf die Abonnenten möglicherweise nicht immer reagieren.
Leicht: Das Ereignis sollte nur die Daten enthalten, die zur Beschreibung des Ereignisses erforderlich sind. Wenn der Abonnent zusätzliche Daten benötigt, sollten die Informationen in dem Ereignis den Kontext bereitstellen, damit er sie bei Bedarf abrufen kann.
Nicht zum Übertragen von Daten: Wenn Sie Daten an einen Empfänger übertragen und damit ein Datenexportszenario realisieren möchten, haben Sie keinen guten Anwendungsfall für geschäftliche Veranstaltungen. Tatsächlich ist die Verwendung von Geschäftsereignissen für Datenübertragungsszenarien ein Missbrauch der Geschäftsereignisse.
Benutzerdefinierte Prozessaktionen
Das Konzept der Angepassten Action umfasst sowohl Custom-API als auch Custom Process Actions. Beide erstellen eine neue API, wobei sich lediglich die Art und Weise unterscheidet. Für angepasste Ereignisse empfehlen wir Custom-API.
Benutzerdefinierte Prozessaktionen können auch als Geschäftsereignisse katalogisiert werden. Dies dient der Abwärtskompatibilität, wenn Ihre Lösung bereits benutzerdefinierte Prozessaktionen verwendet, um eine Geschäftslogik einzuschließen, die ein Geschäftsereignis darstellen würde. Sie brauchen diese angepasste Aktion nicht zu migrieren, um die Custom-API zu verwenden.
Für benutzerdefinierte Prozessaktionen gelten jedoch die folgenden Einschränkungen:
- Wie jeder Workflow können sie in der Benutzeroberfläche deaktiviert werden. Sie wissen möglicherweise nicht, wenn jemand Ihre benutzerdefinierte Prozessaktion deaktiviert, bis sie plötzlich nicht mehr funktioniert.
- Bis vor kurzem konnte nicht verhindert werden, dass synchrone Plug-In-Schritte für benutzerdefinierte Prozessaktionen registriert werden. Das bedeutet, dass jeder synchrone Schritte registrieren konnte, die das Verhalten der benutzerdefinierten Prozessaktion ändern oder sogar abbrechen könnten. Jetzt gibt es eine verwaltete Eigenschaft IsCustomProcessingStepAllowedForOtherPublishers, die es einer benutzerdefinierten Prozessaktion ermöglicht, dies zu blockieren. Wenn Sie jedoch Ihre Custom Process Action aktualisieren wollen, um diese Eigenschaft zu setzen, sollten Sie in Erwägung ziehen, sie stattdessen in eine Custom-API umzuwandeln.
Weitere Informationen zu den Unterschieden finden Sie unter Vergleich Custom Process Action und Custom-API
Wenn Ihre benutzerdefinierte Prozessaktion keine Logik im Workflow-Designer enthält und nur auf Plug-Ins angewiesen ist, um Vorgänge auszuführen, können Sie die benutzerdefinierte Prozessaktion wahrscheinlich zu einer benutzerdefinierten API migrieren, um diese Probleme zu mindern.
Die Power Platform-Community hat bereits Tools erstellt, die hierzu verwendet werden können. Siehe das Plugin Custom Action to custom API Converter XrmToolBox.
Hinweis
Von der Community erstellte Tools werden von Microsoft nicht unterstützt. Wenn Sie Fragen oder Probleme mit Community-Tools haben, wenden Sie sich an den Herausgeber des Tools.
Externe Ereignisse
Benutzerdefinierte Ereignisse können Ereignisse darstellen, die in externen Systemen auftreten. Ereignisse, die in externen Systemen auftreten, sind bereits abgeschlossen.
Benutzerdefinierte APIs, die für externe Ereignisse erstellt wurden, sollten folgenden Prinzipien entsprechen:
- Für den Hauptvorgang sollte kein Plug-In-Typ angegeben sein.
- Sie sollten keine synchronen Schrittregistrierungen zulassen.
- Die benutzerdefinierte API Zulässiger benutzerdefinierter Verarbeitungsschritttyp Eigenschaft sollte auf Nur asynchron eingestellt werden. Dadurch wird verhindert, dass für diese API synchrone Schritte angewendet werden.
- Es sollten keine Antworteigenschaften vorhanden sein, nur Anforderungsparameter.
- Ohne synchrone Logik gibt es keine Möglichkeit, Antworteigenschaften festzulegen.
Hinweis
Diese Einstellungen gelten nicht nur für Ereignisse, die außerhalb von Dataverse auftreten. Mit diesen Einstellungen kann eine benutzerdefinierte API auch verwendet werden, um in Dataverse auftretende Ereignisse darzustellen.
Beispiele
Vergleichen wir zwei externe Ereignisbeispiele:
Szenario A: OnCustomerPurchase
Sie haben eine Point-of-Sale-Anwendung und ein Kundenkauf ist ein wichtiges Ereignis, das Sie erfassen möchten. Vielleicht möchten Sie ihnen per E-Mail für den Kauf danken und in Dataverse Informationen über den Gesamtbetrag speichern, den der Kunde ausgegeben hat. Sie können eine OnCustomerPurchase
Custom-API innerhalb von Dataverse definieren. Ihre Point-of-Sale-Anwendung kann Informationen zu diesem Ereignis an Dataverse senden. In Dataverse möchten Sie einen Datensatz mit dem Gesamtbetrag aktualisieren. Anschließend möchten Sie Power Automate verwenden, um sich per E-Mail für den Kauf zu bedanken.
Es mag am effizientesten erscheinen, die Logik zum Berechnen des Gesamtbetrags und zum Aktualisieren des Datensatzes in einem Hauptvorgang der benutzerdefinierten API zu implementieren. Die Einführung einer synchronen Logik auf diese Weise kann jedoch dazu führen, dass die Logik fehlschlagen und einen Fehler an die aufrufende Point-of-Sale-Anwendung zurückgeben könnte. Da das Ereignis bereits aufgetreten ist, muss keine synchrone Logik ausgeführt werden, die dazu führen könnte, dass der Dataverse-Aufruf fehlschlägt. Verlassen Sie sich stattdessen bei der gesamten Logik voll und ganz auf Power Automate. Oder verwenden Sie einen anderen asynchronen Plug-In-Schritt im Ereignis OnCustomerPurchase
, um den Datensatz in Dataverse zu aktualisieren.
Szenario B: OnVendorPaymentPosted
Sie haben eine ERP-Anwendung mit einem Ereignis OnVendorPaymentPosted
und möchten lediglich die Zentralisierung Ihrer Automatisierungslogik vereinfachen. Sie können eine benutzerdefinierte API erstellen, die dieses externe Ereignis darstellt, und die ERP-Anwendung so konfigurieren, dass sie diese Dataverse-API aufruft. Wenn Sie diese benutzerdefinierte API als Ereignis katalogisieren, können Sie den Dataverse Power Automate-Konnektor verwenden, um dieses Ereignis als Trigger zu verwenden.
Dieses Beispiel erwartet in Dataverse lediglich die Registrierung der Aktivierung der asynchronen Logik für das Ereignis.
Aufrufen einer Custom-API aus externen Anwendungen
Die wichtigste Voraussetzung für die Verwendung einer benutzerdefinierten API zum Senden von Geschäftsereignissen besteht darin, dass Ihre Anwendung in der Lage sein muss, autorisierte HTTP-Anforderungen an Dataverse zu senden. Für die Autorisierung verwenden aus anderen Anwendungen stammende Anforderungen in der Regel ein spezielles Anwendungsbenutzerkonto, das in der Dataverse-Umgebung erstellt werden muss. Lizenzierte und authentifizierte Dataverse-Benutzer können auch Anwendungen verwenden, um diese Anforderungen zu senden.
Durch das Entfernen der gesamten synchronen Logik aus der benutzerdefinierten API ist die Wahrscheinlichkeit eines Fehlers, der zum Fehlschlagen des Vorgangs führt, zwar extrem gering, aber nicht unmöglich. Ihre aufrufende Anwendung muss eine Möglichkeit bieten, vorübergehende Fehler zu behandeln, falls der Dataverse-Dienst nicht antwortet, Probleme mit der Netzwerkverbindung auftreten oder Limitfehler für den Dienstschutz zurückgegeben werden.
Um autorisierte Aufrufe an Dataverse über Ihre Anwendung zu aktivieren, muss ein Anwendungsbenutzer für die Dataverse-Umgebung konfiguriert sein. Weitere Informationen: Erstellen von Webanwendungen mit der Server-zu-Server-(S2S)-Authentifizierung.
Verwenden von Geschäftsereignissen zum Auslösen der Automatisierung
Da Geschäftsereignisse zu einem gängigen Muster werden, gibt es mehrere Möglichkeiten, die Automatisierung zu ermöglichen.
Die erste Erfahrung, bei der Geschäftsereignisse verfügbar gemacht werden, ist im Power Automate-Konnektor von Dataverse bei Verwendung des Triggers Bei einer ausgeführten Aktion.
In dieser Erfahrung werden Ereignisse zum Erstellen, Aktualisieren und Löschen für Tabellenereignisse nicht angezeigt. Diese Ereignisse sind bereits bei Verwendung des Triggers Wenn eine Zeile hinzugefügt, geändert oder gelöscht wird verfügbar.
Siehe auch
Catalog- und CatalogAssignment-Tabellen
Aktivieren virtueller Tabellen zur Unterstützung von Dataverse-Ereignissen
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).