Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ereignisse fördern die Automatisierung von Geschäftslogik und Integration in andere Systeme. 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 Flüsse
- Azure Service Bus
- Azure Event Hub
- Webhooks
- Dataverse-Plugins
Dataverse verfügt über ein robustes Ereignisframework zum Erfassen von Systemereignissen in Dataverse. Sie können mithilfe des Dataverse Event Frameworks auf Ereignisse innerhalb des Systems reagieren. Dieses Framework ändert sich nicht. Weitere Informationen finden Sie unter Event Framework.
Dataverse Business-Ereignisse bieten neue Möglichkeiten, Ereignisse verfügbar zu machen und Ihre Geschäftslogik zu erstellen, um asynchron darauf zu reagieren, z. B. die Power Automate Dataverse When eine Aktion ausgeführt wird Trigger.
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 Plugin. Mithilfe von Geschäftsereignissen können Sie die Tabelle katalogisieren , die dieGrantAccessNachricht verfügbar macht.Ein Plug-In-Entwickler verfügt möglicherweise über eine Logik im synchronen Plug-In-Code, der auf einen bestimmten Satz von Bedingungen reagiert. Der Entwickler übergibt diese Bedingungen an freigegebene Variablen, damit ein anderes asynchrones Plug-In eine Automatisierung initiieren kann. Indem Sie ein Geschäftsereignis nutzen, anstatt Details über die freigegebenen Variablen der Ereignispipeline weiterzugeben, können Sie eine benutzerdefinierte Aktion aufrufen, die die Details des Ereignisses in den Parametern enthält. Ein asynchrones Plug-In kann dann auf die benutzerdefinierte Aktion reagieren, oder Sie können stattdessen Power Automate verwenden. Sie können weitere Logik hinzufügen, 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 Geschäftsereignisse kombinieren Konzepte aus Dynamics Finance and Operations Business Events mit dem Dataverse Event Framework. Diese Kombination bietet eine neue Möglichkeit, Ereignisse zu erkennen und Automatisierung zu erstellen, wenn diese Ereignisse auftreten.
Ereigniskatalog: Bei so vielen im System verfügbaren Ereignissen 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. Sie machen ein Ereignis verfügbar, indem Sie es einem Katalog hinzufügen.
Benutzerdefinierte Ereignisse: Sie können benutzerdefinierte Aktionen als benutzerdefinierte Ereignisse erstellen, da Dataverse sie mithilfe des Ereignisframeworks verarbeitet.
Diese Ereignisse stellen möglicherweise Datenänderungen innerhalb von Dataverse dar, oder sie sind nicht vorhanden. Sie können benutzerdefinierte APIs ohne synchrone Logik verwenden, die nur zum Benachrichtigen von Listenern vorhanden sind, dass ein Interessantes ereignis aufgetreten ist. Sie geben das Ereignis aus, indem Sie die benutzerdefinierte Aktion aufrufen.
Ereigniskatalog
Um ein Geschäftsereignis verfügbar zu machen, müssen Sie es katalogisieren. Weitere Informationen finden Sie in den Tabellen "Katalog" und "CatalogAssignment".
Ein Katalog gruppiert Geschäftsereignisse nach der enthaltenen Lösung und den dafür definierten Kategorien. Der Lösungsherausgeber wählt aus, welche Ereignisse für seine Lösung am relevantesten sind.
Ein Katalog ist eine hierarchische Struktur, in der die oberste Ebene eine Lösung darstellt. Die nächste Ebene ist eine Kategorie. Sie weisen einer Kategorie relevante Tabellen und Ereignisse zu.
Die folgende Struktur stellt beispielsweise einen Katalog für eine Lösung namens Contoso Customer Management dar:
- Contoso-Kundenverwaltung
- Tabellen
- Konto
- Kontakt
- Mitgliedschaft
- Kundenereignisse
- Habe den Laden betreten
- Website besuchen
- Produkt kaufen
- Produkt zurückgeben
- Tabellen
In diesem Beispiel werden Tabellen und Kundenereignisse als Kategorien verwendet, sie können jedoch jede 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 dann zusätzliche Kategorien und zugewiesene Ereignisse zu den abhängigen Lösungen hinzufügen.
Tabellenereignisse
Wenn Sie einer Kategorie eine Tabelle zuweisen, schließen Sie bestimmte Vorgänge ein, die an die Tabelle gebunden sind. Sie können nicht jeden Vorgang einzeln auswählen. Wenn die Tabelle Create-, Update- und Delete-Vorgänge unterstützt, sind diese Ereignisse enthalten.
Sie fügen auch zusätzliche Ereignisse im Zusammenhang mit anderen Vorgängen hinzu. Wenn die Tabelle beispielsweise im Besitz des Benutzers ist, nimmt sie an Sicherheitsereignissen teil. Der Besitzer eines beliebigen Datensatzes in der Tabelle kann ihn freigeben, 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. Je nach Tabelle können auch zusätzliche Ereignisse einbezogen werden. Wenn es sich bei der Tabelle um eine virtuelle Tabelle handelt und Sie sie so konfigurieren, dass virtuelle Tabellenereignisse unterstützt werden, werden die OnExternalCreatedEreignisse OnExternalUpdatedund OnExternalDeleted Ereignisse eingeschlossen. Weitere Informationen finden Sie unter Virtuelle Tabellen aktivieren, um Dataverse-Ereignisse zu unterstützen.
Fügen Sie nur die Tabellen hinzu, die Geschäftsdaten enthalten, die Abonnenten interessieren. Versuchen Sie nicht, jede Tabelle einzuschließen.
Sie können dieselbe Tabelle in mehrere Kataloge einschließen. Wenn Ihre Lösung beispielsweise von Kundendaten in den Tabellen "Dataverse Account" oder "Contact" abhängt, fügen Sie sie hinzu. 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 Webdienstendpunkt bereit, um die benutzerdefinierte API aufzurufen. Weitere Informationen finden Sie unter Erstellen und Verwenden von benutzerdefinierten APIs.
Benutzerdefinierte Geschäftsereignisse können nur dann Nachrichten senden, wenn ein Ereignis abgeschlossen ist. Das Dataverse-Ereignisframework bietet Funktionen zum Einschließen synchroner Logik, mit der ein Vorgang abgebrochen oder die Ausgabe geändert werden kann, sodass Sie das Verhalten des Systems erweitern können. Viele der gleichen Nachrichten, die Geschäftsereignisse verfügbar machen, können mithilfe synchroner Logik im Dataverse-Ereignisframework erweitert werden, aber Geschäftsereignisbenachrichtigungen treten nur auf, wenn diese Vorgänge erfolgreich abgeschlossen wurden.
Beispielsweise verfügen Sie über eine benutzerdefinierte API, die eine Gruppe von Vorgängen kapselt, die einen Geschäftsprozess darstellen, z. B. Neu zuweisen, wodurch das Eigentum eines Datensatzes auf jemand anderen übertragen wird, basierend auf spezifischen Kriterien. Oder eskalieren Sie, um den Prioritätsstatus eines Datensatzes zu erhöhen und zusätzliche zugeordnete Aufgaben zu erstellen. Wenn Sie auf diese Weise eine benutzerdefinierte API verwenden, definieren Sie neue Ereignisse, die möglicherweise Abonnenten interessieren. Wenn diese Vorgänge erfolgreich abgeschlossen werden, kann für sie asynchrone Logik ausgelöst werden.
Um eine Reaktion der Abonnenten zu ermöglichen, können Sie auch eine benutzerdefinierte Aktion erstellen.
Externe Ereignisse beschreiben einen bestimmten Fall, in dem Ereignisse außerhalb von Dataverse stammen, aber Sie können benutzerdefinierte API als Ereignisse für die Verwendung in Dataverse erstellen, indem Sie dieselben Einstellungen verwenden. 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 benutzerdefinierte API katalogisieren, die ereignisse mit hohem Wert darstellen. Versuchen Sie nicht, jede benutzerdefinierte Aktion zu katalogisieren, die Sie in Ihre Lösung einschließen.
Entwurfsprinzipien
Wenn Sie benutzerdefinierte APIs in Betracht ziehen, um sie als Geschäftsereignisse in Ihrer Lösung zu katalogisieren, verwenden Sie die folgenden Entwurfsprinzipien.
Klare Absicht: Verstehen Sie die Absicht hinter der Erstellung eines Geschäftsereignisses. Mit anderen Worten: Verstehen Sie den Grund, warum das Geschäftsereignis erstellt wird und wie der Abonnent es verwendet.
Spezifisch: Machen Sie das Ereignis spezifisch, damit ein Abonnent nicht filtern muss, ob er darauf reagieren soll. Erstellen Sie keine generischen Geschäftsereignisse, auf die Abonnenten möglicherweise nicht immer reagieren.
Einfach: Fügen Sie nur die Daten ein, die zum Beschreiben des Ereignisses erforderlich sind. Wenn der Abonnent zusätzliche Daten benötigt, sollten die Informationen im Ereignis den Kontext bereitstellen, damit sie sie bei Bedarf abrufen können.
Nicht zum Übertragen von Daten: Wenn Sie beabsichtigen, Daten an einen Empfänger zu übertragen und tatsächlich ein Datenexportszenario zu realisieren, verwenden Sie keine Geschäftsereignisse. Die Verwendung von Geschäftsereignissen für Datenübertragungsszenarien ist ein Missbrauch der Geschäftsereignisse.
Benutzerdefinierte Prozessaktionen
Das Konzept der Custom Action umfasst sowohl Custom-API als auch Custom Process Aktionen. Beide Arten von benutzerdefinierten Aktionen erstellen eine neue API, unterscheiden sich jedoch darin, wie sie sie erstellen. Verwenden Sie für benutzerdefinierte Geschäftsereignisse benutzerdefinierte API.
Sie können auch benutzerdefinierte Prozessaktionen als Geschäftsereignisse katalogisieren. Dieser Ansatz bietet Abwärtskompatibilität, wenn Ihre Lösung bereits benutzerdefinierte Prozessaktionen verwendet, um einige Geschäftslogik zu kapseln, die ein Geschäftsereignis darstellt. Sie müssen diese benutzerdefinierte Aktion nicht migrieren, um benutzerdefinierte API zu verwenden.
Für benutzerdefinierte Prozessaktionen gelten jedoch die folgenden Einschränkungen:
- Wie jeder Workflow können Sie sie in der Benutzeroberfläche deaktivieren. Möglicherweise wissen Sie nicht, wann jemand Ihre benutzerdefinierte Prozessaktion deaktiviert, bis sie plötzlich nicht mehr funktioniert.
- Bis vor Kurzem gab es keine Möglichkeit, synchrone Plug-In-Schritte bei benutzerdefinierten Prozessaktionen zu registrieren. Diese Einschränkung bedeutet, dass jeder synchrone Schritte registrieren kann, die das Verhalten der benutzerdefinierten Prozessaktion ändern oder sogar abbrechen können. Es gibt jetzt eine verwaltete IsCustomProcessingStepAllowedForOtherPublishers-Eigenschaft, mit der eine benutzerdefinierte Prozessaktion diesen Schritt blockieren kann. Wenn Sie Ihre benutzerdefinierte Prozessaktion aktualisieren möchten, um diese Eigenschaft festzulegen, sollten Sie sie konvertieren, um stattdessen eine benutzerdefinierte API zu verwenden.
Weitere Informationen dazu, wie sie sich unterscheiden, finden Sie unter Vergleichen von benutzerdefinierten Prozessaktionen und benutzerdefinierter API.
Wenn Ihre benutzerdefinierte Prozessaktion keine Logik im Workflow-Designer enthält und nur auf Plug-Ins zum Ausführen von Vorgängen basiert, können Sie die benutzerdefinierte Prozessaktion wahrscheinlich zu einer benutzerdefinierten API migrieren, um diese Probleme zu beheben.
Die Power Platform-Community hat bereits Tools erstellt, um dies zu unterstützen. Siehe das XrmToolBox-Plugin Custom Action to custom API Converter.
Anmerkung
Microsoft unterstützt keine Tools, die von der Community erstellt wurden. Wenn Sie Fragen oder Probleme mit Communitytools 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:
- Geben Sie keinen Plug-In-Typ für den Hauptvorgang an.
- Lassen Sie keine synchronen Schrittregistrierungen zu.
- Legen Sie die Eigenschaft " Benutzerdefinierte API zulässiger benutzerdefinierter Verarbeitungsschritttyp " auf "Nur Async" fest. Diese Einstellung verhindert, dass synchrone Schritte für diese API angewendet werden.
- Fügen Sie keine Antworteigenschaften ein, nur Anforderungsparameter.
- Ohne synchrone Logik gibt es keine Möglichkeit, Antworteigenschaften festzulegen.
Anmerkung
Diese Einstellungen gelten nicht nur für Ereignisse, die außerhalb von Dataverse auftreten. Sie können die benutzerdefinierte API mit diesen Einstellungen verwenden, um Ereignisse darzustellen, die auch innerhalb von Dataverse auftreten.
Beispiele
Lassen Sie uns zwei beispiele für externe Ereignisse vergleichen:
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 dem Kunden eine E-Mail senden, die ihm für den Kauf danke, und Sie möchten Informationen über den Gesamtbetrag speichern, den der Kunde in Dataverse 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. Dann möchten Sie Power Automate verwenden, um ihnen eine E-Mail zu senden, die ihnen für ihren Kauf danken soll.
Es mag am effizientesten sein, die Logik zum Berechnen der Summe zu implementieren und den Datensatz in einem Hauptvorgang der benutzerdefinierten API zu aktualisieren. 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 kann, dass der Dataverse-Aufruf fehlschlägt. Verlassen Sie sich stattdessen auf Power Automate, um die gesamte Logik umzusetzen, oder binden Sie einen weiteren asynchronen Plug-In-Schritt für das OnCustomerPurchase-Ereignis ein, um den Datensatz in Dataverse zu aktualisieren.
Szenario B: OnVendorPaymentPosted
Sie haben eine ERP-Anwendung, die über ein OnVendorPaymentPosted Ereignis verfügt, und Sie möchten einfach vereinfachen, wie Sie Ihre Automatisierungslogik zentralisieren. 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 Connector verwenden, um dieses Ereignis als Trigger zu verwenden.
In diesem Beispiel wird erwartet, dass in Dataverse nichts ausgeführt wird, außer dass die asynchrone Logik für das Ereignis registriert werden kann.
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 Anforderungen, die von anderen Anwendungen stammen, in der Regel ein spezielles Anwendungsbenutzerkonto, das Sie in der Dataverse-Umgebung erstellen. 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 reagiert; es Netzwerkverbindungsprobleme gibt oder Fehler bei der Dienstschutzgrenze zurückgegeben werden.
Um autorisierte Aufrufe an Dataverse aus Ihrer Anwendung zu aktivieren, müssen Sie einen Anwendungsbenutzer für die Dataverse-Umgebung konfigurieren. Weitere Informationen finden Sie unter Erstellen von Webanwendungen mithilfe der Server-zu-Server-Authentifizierung (S2S).
Verwenden von Geschäftsereignissen zum Auslösen der Automatisierung
Wenn Geschäftsereignisse zu einem gängigen Muster werden, entstehen mehrere Möglichkeiten zur Automatisierung.
Die erste Erfahrung, bei der Geschäftsereignisse verfügbar gemacht werden, wird über den Power Automate Dataverse-Konnektor mithilfe des Wenn eine Aktion ausgeführt wird-Triggers bereitgestellt.
Bei dieser Funktionalität werden Ereignisse zum Erstellen, Aktualisieren und Löschen für Tabellenereignisse nicht angezeigt. Diese Ereignisse sind bereits verfügbar, indem Sie den Trigger "Wenn eine Zeile hinzugefügt, geändert oder gelöscht wird " verwenden.
Siehe auch
Catalog- und CatalogAssignment-Tabellen
Aktivieren virtueller Tabellen zur Unterstützung von Dataverse-Ereignissen