Verwendung von Nachrichten (Anforderungs- und Antwortklassen) mit der Ausführensmethode

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Sie können die Methoden in IOrganizationService verwenden, um häufige Vorgänge auszuführen. Zusätzlich zu den allgemeinen Methoden können Sie die Methode IOrganizationService.Execute verwenden, um die Nachrichten auszuführen, die nicht für Methoden verfügbar gemacht werden. Die Methode Execute nimmt eine Nachrichtenanforderungsklasse als Parameter und gibt eine Nachrichtenantwortklasse zurück. Anforderungsnachrichtenklassennamen enden mit "Anforderung" und Antwortnachrichtenklassennamen enden mit "Antwort". Weitere Informationen zu allen von der Execute-Methode unterstützten Nachrichten finden Sie unter xRM-Meldungen im Organisationsservice, Dynamics 365-Meldungen im Organisationsdienst. Die IDiscoveryService und IDeploymentService-Webdienste verwenden ein ähnliches Anforderungs- und Antwortmuster.

Nachrichtenfluss ausführen

OrganizationRequest ist die Basisklasse für alle Nachrichtenanforderungen. Sie können diese Basisklasse verwenden, um beliebige Nachrichten auszuführen, indem Sie den Nachrichtennamen und die Parametersammlung für die Anforderung angeben. Wenn Sie jedoch eine abgeleitete Klasse verwenden, wie AssociateRequest, wird die Parametersammlung aufgefüllt, wenn Sie die Eigenschaften in der Anforderungsklasse verwenden.

Die Execute-Methode gibt die entsprechende Antwortklasse für die Anforderung zurück, eine abgeleitete Klasse der OrganizationResponse-Klasse. Wie die Anforderungsklasse, enthält die abgeleitete Klasse eine Eigenschaft für jeden Wert in der Ergebnisparametersammlung. Alle Nachrichten enthalten eine Antwort, aber viele Leads haben keine Eigenschaften auf der Antwort.

Nachrichten werden in Metadaten vorgefertigt und als Datensätze in den SDK-Nachrichtenentitäten gespeichert. Für jede Nachricht können Sie ermitteln, ob sie funktioniert, während Sie mit dem Server verbunden sind oder von Microsoft Dynamics 365 für Microsoft Office Outlook mit Offlinezugriff aus. Diese Informationen können im SdkMessage.Availability-Attribut gefunden werden. Weitere Informationen finden Sie unter Plug-In-Registrierungsentitäten.

In diesem Thema

Optionale Parameter in Nachrichten übergeben

Führt Nachrichten in einer einzelnen Datenbanktransaktion aus.

Nachrichten im Hintergrund (asynchron) ausführen

Optionale Parameter in Nachrichten übergeben

Sie können optionale Parameter zu einer Nachrichtenanforderung übergeben, indem Sie einen Wert für die Parameters-Eigenschaft hinzufügen. Einige Parameter sind keine verfügbar gemachten Eigenschaften in Anfrageklassen. Um diese Parameter festzulegen, müssen sie in der Parameters-Sammlung in der Request-Klasse festgelegt werden.

In der folgenden Liste sind diese Parameter aufgeführt.

Parameter

Beschreibung

Nachrichten

SolutionUniqueName

Eine String, die den eindeutigen Namen der Lösung angibt, für die der Vorgang gilt. Weitere Informationen finden Sie unter Abhängigkeitsnachverfolgung für Lösungskomponenten.

AddPrivilegesRoleRequest
CreateRequest
DeleteRequest
MakeAvailableToOrganizationTemplateRequest
UpdateRequest

CalculateMatchCodeSynchronously

Die Angabe dieses Parameters ist nicht mehr erforderlich. Die Zuordnungscodes, die verwendet werden, um Duplikate zu erkennen, werden synchron berechnet, unabhängig von dem Wert, der in diesen Parameter übergeben wird. Weitere Informationen finden Sie unter Duplikaterkennung ausführen.

CreateRequest
UpdateRequest

SuppressDuplicateDetection

Eine Boolean wird verwendet, um Duplikaterkennung auf einem Erstellungs- der Aktualisierungsvorgang zu deaktivieren. Weitere Informationen finden Sie unter Duplikaterkennung ausführen.

CreateRequest
UpdateRequest

Das folgende Beispiel zeigt, wie ein optionaler parameter übergeben wird:

Account target = new Account();
target.Name = "Fabrikam";
CreateRequest req = new CreateRequest();
req.Target = target;
req["SuppressDuplicateDetection"] = true;
req["CalculateMatchCodeSynchronously"] = true;
req["SolutionUniqueName"] = "MySolutionName";
CreateResponse response = (CreateResponse)_service.Execute(req);

Führt Nachrichten in einer einzelnen Datenbanktransaktion aus.

Es ist eine allgemeine Anforderung in Geschäftsanwendungen, Änderungen mehrerer Datensätze im System zu koordinieren, sodass entweder alle Datenänderungen erfolgreich sind oder keine. Unter Datenbankbedingungen ist dies bekannt als Ausführung von mehreren Vorgängen in einer einzelnen Transaktion mit der Möglichkeit eines Rollbacks aller Datenänderungen, falls einer der Vorgänge nicht erfolgreich ist.

Sie können mehrere Organisationsdienstanforderungen in einer einzelnen Datenbanktransaktion mit der ExecuteTransactionRequest-Nachrichtenanforderung ausführen. Um diese Nachricht zu verwenden, füllen Sie die Requests-Sammlung mit mehreren Organisationsanforderungen aus, die in der Transaktion ausgeführt werden sollen. Setzen Sie ReturnResponses auf true, wenn Sie in der Responses-Sammlung eine Sammlung von Antworten erhalten möchten, eine für jede ausgeführte Nachrichtenanforderung. Nachrichtenanforderung in der Requests-Sammlung werden in der Reihenfolge ausgeführt, in der sie in der Sammlung angezeigt werden. Das Element bei Index 0 wird zuerst ausgeführt. Dieselbe Reihenfolge wird in der Sammlung Responses beibehalten.

Wenn eine der Anforderungen fehlschlägt und die Transaktion zurückgesetzt wird, werden alle Datenänderungen, die während der Transaktion ausgeführt wurde, rückgängig gemacht. Darüber hinaus wird ExecuteTransactionFault zurückgegeben und gibt den Index für die Anforderungssammlung der Anforderungsnachricht an, die den Fehler verursachte.

ExecuteMultipleRequest enthält eine oder mehrere ExecuteTransactionRequest-Instanzen. Eine ExecuteTransactionRequest-Instanz enthält möglicherweise nicht ExecuteMultipleRequest oder ExecuteTransactionRequest. Weitere Informationen zu ExecuteMultipleRequest finden Sie unter Verwenden von "ExecuteMultiple" zur Verbesserung der Leistung bei Massendatenlast.

Beispielcode, der ExecuteTransactionRequest veranschaulicht, finden Sie unter Sample: Execute multiple requests in transaction.

Nachrichten im Hintergrund (asynchron) ausführen

Zusätzlich zum sofortigen Ausführen von Nachrichtenanforderungen, wie im Fall des Aufrufens von Execute und dem Übergeben einer Nachrichtenanforderung, können Sie eine Nachrichtenanforderung auch im Hintergrund (asynchron) ausführen. Das verbessert die Systemleistung durch das Zurückstellen der Nachrichtenausführung auf einen späteren Zeitpunkt, zu dem die Serverlast möglicherweise geringer ist. Interaktive Benutzer müssen nicht auf die Zielnachricht, bis die Zielnachricht ausgeführt wird, um fortzufahren. Dies ist besonders nützlich beim Verarbeiten von Nachrichten, deren Ausführung einige Minuten oder mehr dauert.

Hinweis

Derzeit kann die ImportSolutionRequest-Nachricht nur mit der ExecuteAsync-Nachricht verwendet werden.

Verwenden Sie die ExecuteAsyncRequest-Nachricht, um eine Nachricht asynchron auszuführen. Konfigurieren Sie die Anforderung und übergeben Sie die Anforderungsinstanz als Argument an Execute.ExecuteAsyncResponse wird mit der ID des asynchronen Auftrags zurückgegeben. Sie können (optional) den Auftrag mithilfe der ID abfragen, um seinen aktuellen Status herauszufinden.

Sie können auch mehrere Nachrichten gleichzeitig mithilfe der ExecuteMultipleRequest-Nachricht ausführen. Dazu müssen Sie eine oder mehrere ExecuteAsync-Nachrichtenanforderungen zu einer ExecuteMultiple-Nachrichtenanforderung hinzufügen. Aufgrund der Drosselungseinschränkungen, die die Systemleistung verbessern, darf nur eine Meldung, die nur asynchron ausgeführt wird, für eine Organisation gleichzeitig ausgeführt werden. Sie können eineExecuteMultiple- Nachrichtenanforderung nicht von einer ExecuteAsync-Nachrichtenanforderung aus ausführen. Weitere Informationen zu der ExecuteMultiple-Nachrichtenanforderung finden Sie unter Verwenden von "ExecuteMultiple" zur Verbesserung der Leistung bei Massendatenlast.

Siehe auch

Execute
OrganizationRequest
OrganizationResponse
ExecuteAsyncMaxConnectionsPerServer
ExecuteAsyncPerOrgMaxConnectionsPerServer
Verwenden des Organisationsdienstes, um Daten oder Metadaten zu lesen und zu schreiben
Verwenden von "ExecuteMultiple" zur Verbesserung der Leistung bei Massendatenlast
Verwendung von Nachrichten (Anforderungs- und Antwortklassen) mit der ExecuteCrmOrganizationRequest-Methode
Meldungen im Suchdienst
xRM-Meldungen im Organisationsservice
Dynamics 365-Meldungen im Organisationsdienst
ExecuteAsync message privileges

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright