Microsoft Dynamics CRM - Webdienste

Microsoft Dynamics CRM bietet zwei wichtige Webdienste, mit denen Sie von einer externen Anwendung aus auf CRM zugreifen und Webmethoden aufrufen können, um allgemeine Geschäftsdatenvorgänge wie Erstellen, Löschen, Aktualisieren und Suchen in CRM auszuführen.

Betrachten Sie die folgenden Szenarien:

  • Sie haben eine externe .NET-Anwendung, die mit CRM kommunizieren muss. Beispielsweise möchten Sie möglicherweise einen Kontaktdatensatz in CRM einfügen, wenn ein neuer Kunde in Ihrer externen Anwendung registriert ist.

  • Oder Sie möchten Datensätze in CRM durchsuchen und die Suchergebnisse in Ihrer externen Anwendung anzeigen.

In solchen Szenarien können Sie die von CRM bereitgestellten Webdienste verwenden, um sie in Ihrer Anwendung zu verwenden und Vorgänge zum Erstellen, Löschen, Aktualisieren und Suchen in CRM auszuführen.

IDiscoveryService-Webdienst

Dieser Webdienst gibt eine Liste der Organisationen zurück, zu denen der angegebene Benutzer gehört, sowie den URL-Endpunkt für jede Organisation.

IOrganizationService-Webdienst

Dieser Webdienst ist der primäre Webdienst, der für den Zugriff auf Daten und Metadaten in CRM verwendet wird. Der IOrganizationService verwendet zwei wichtige Assemblys -Microsoft.Xrm.Sdk.dll und Microsoft.Crm.Sdk.Proxy.dll. Diese Assemblys finden Sie im CRM SDK-Paket imBin Mappe.

Microsoft.Xrm.Sdk.dll

Diese Assembly definiert die wichtigsten xRM-Methoden und -Typen, einschließlich Proxy-Klassen, um die Verbindung zu Microsoft Dynamics CRM zu vereinfachen, Authentifizierungsmethoden und Serviceverträge.

Microsoft.Crm.Sdk.Proxy.dll

Diese Assembly definiert die Anforderungen und Antworten für Nicht-Kernnachrichten sowie die Aufzählungen, die für die Arbeit mit den Organisationsdaten erforderlich sind. Im Folgenden sind die von diesen beiden Assemblys unterstützten Namespaces aufgeführt.

Jede dieser Assemblys unterstützt bestimmte Nachrichten, die zum Arbeiten mit den in einer Entität gespeicherten Daten verwendet werden. Eine vollständige Liste der von ihnen unterstützten Nachrichten finden Sie unter den folgenden Links:

Supported xRM Messages - - https://msdn.microsoft.com/en-us/library/gg334698.aspx

Supported CRM Messages - - https://msdn.microsoft.com/en-us/library/gg309482.aspx

IOrganizationService-Webdienstmethoden

Das IOrganizationService bietet acht Methoden, mit denen Sie alle allgemeinen Vorgänge für das System und benutzerdefinierte Entitäten sowie Organisationsmetadaten ausführen können.

Sr.Nr. Methode & Beschreibung
1

IOrganizationService.Create

Erstellt einen Datensatz.

2

IOrganizationService.Update

Aktualisiert einen vorhandenen Datensatz.

3

IOrganizationService. Retrieve

Ruft einen Datensatz ab.

4

IOrganizationService. RetrieveMultiple

Ruft eine Sammlung von Datensätzen ab.

5

IOrganizationService. Delete

Löscht einen Datensatz.

6

IOrganizationService. Associate

Erstellt eine Verknüpfung zwischen Datensätzen.

7

IOrganizationService.Disassociate

Löscht eine Verknüpfung zwischen Datensätzen.

8

IOrganizationService.Execute

Wird sowohl für die allgemeine Datensatzverarbeitung als auch für die spezielle Verarbeitung wie Fallauflösung, Duplikaterkennung usw. verwendet.

Beispiel für einen Webdienst

Um zu verstehen, wie die Webdienste in CRM funktionieren, sehen wir uns ein Beispiel aus dem CRM SDK an. In diesem Beispiel erstellen wir einen neuen Kontodatensatz, aktualisieren ihn und löschen ihn schließlich mithilfe des CRMIOrganizationService Internetservice.

Step 1- Öffnen Sie den Ordner, in den Sie das CRM SDK extrahiert haben. Öffnen Sie nun die QuickStartCS.sln-Lösung, indem Sie zum folgenden Speicherort navigieren: SDK \ SampleCode \ CS \ QuickStart

Step 2 - Wir werden das erkunden QuickStart mit Simplified ConnectionProjekt. Öffnenapp.configIn diesem Projekt. Standardmäßig ist dieconnectionStrings Abschnitt in dieser Datei wird kommentiert.

Kommentieren Sie den ersten Verbindungszeichenfolgenschlüssel aus und bearbeiten Sie die folgenden drei Details:

Url- Geben Sie die URL Ihrer CRM-Instanz an. In unserem Fall müssen Sie diese URL angeben, da wir die Online-Version von CRM verwenden.

Username - Ihr CRM Online-Benutzername.

Password - Ihr CRM Online-Passwort.

Step 3 - Öffnen Sie die SimplifiedConnection.cs Datei in diesem Projekt und Runmethod darin.

public void Run(StringconnectionString, boolpromptforDelete) {
   try {
      
      // Establish a connection to the organization web service using CrmConnection.
      Microsoft.Xrm.Client.CrmConnection connection =
         CrmConnection.Parse(connectionString);
      
      // Obtain an organization service proxy.
      // The using statement assures that the service proxy will be properly disposed.
      using(_orgService = new OrganizationService(connection)) {

         //Create any entity records this sample requires.
         CreateRequiredRecords();
         
         // Obtain information about the logged on user from the web service.
         Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
         SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
            new ColumnSet(newstring[]{"firstname","lastname"}));
         
         Console.WriteLine("Logged on user is {0} {1}.",
            systemUser.FirstName,systemUser.LastName);

         // Retrieve the version of Microsoft Dynamics CRM.
         RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
         RetrieveVersionResponse versionResponse =
            (RetrieveVersionResponse)_orgService.Execute(versionRequest);
         Console.WriteLine("Microsoft Dynamics CRM version {0}.",
            versionResponse.Version);
         
         // Instantiate an account object. Note the use of option set
         enumerations defined in OptionSets.cs.
         
         // Refer to the Entity Metadata topic in the SDK documentation to
         determine which attributes must
         
         // be set for each entity.
         Account account = new Account{Name = "Fourth Coffee"};
         account.AccountCategoryCode = new OptionSetValue(
            (int)AccountAccountCateg oryCode.PreferredCustomer);
         account.CustomerTypeCode = new OptionSetValue(
            (int)AccountCustomerTypeCod e.Investor);
         
         // Create an account record named Fourth Coffee.
         _accountId = _orgService.Create(account);
         Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
         
         // Retrieve the several attributes from the new account.
         ColumnSet cols = new ColumnSet(
            new String[]{"name","address1_postalcode","lastusedincampaign"});
         Account retrievedAccount =
            (Account)_orgService.Retrieve("account", _accountId, cols);
         Console.Write("retrieved, ");

         // Update the postal code attribute.
         retrievedAccount.Address1_PostalCode = "98052";

         // The address 2 postal code was set accidentally, so set it to null.
         retrievedAccount.Address2_PostalCode = null;

         // Shows use of a Money value.
         retrievedAccount.Revenue = new Money(5000000);

         // Shows use of a Boolean value.
         retrievedAccount.CreditOnHold = false;
         
         // Update the account record.
         _orgService.Update(retrievedAccount);
         Console.WriteLine("and updated.");
         
         // Delete any entity records this sample created.
         DeleteRequiredRecords(promptforDelete);
      } 
   } 
   // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
   catch(FaultException<microsoft.xrm.sdk.organizationservicefault>) {

      // You can handle an exception here or pass it back to the calling method.
      throw;
   }
}

Step 4- Diese Methode demonstriert grundsätzlich alle CRUD-Operationen unter Verwendung von CRM-Webdiensten. Der Code erstellt zuerst eine Organisationsinstanz, erstellt dann einen Kontodatensatz, aktualisiert den erstellten Datensatz und löscht ihn schließlich. Schauen wir uns die wichtigen Komponenten dieses Codes an. Um unterwegs Änderungen in CRM zu sehen, wenn dieser Code ausgeführt wird, können Sie diesen Code Schritt für Schritt debuggen (wie unten erläutert) und gleichzeitig die Änderungen in CRM anzeigen.

Step 4.1 - Stellt die Verbindung zur Organisation mithilfe der Verbindungszeichenfolge her, die wir geändert haben Step 2.

Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);

Step 4.2 - Ruft eine Proxy-Instanz des Webdienstes der CRM-Organisation ab.

_orgService = new OrganizationService(connection)

Step 4.3 - Erstellt ein neues Kontoentitätsobjekt und legt dessen Namen, AccountCategoryCode und CustomerTypeCode fest.

Account account = new Account{Name = "Fifth Coffee"}; 
account.AccountCategoryCode = new OptionSetValue(
   (int)AccountAccountCategoryCode.P referredCustomer); 
account.CustomerTypeCode = new OptionSetValue(
   (int)AccountCustomerTypeCode.Investor);

Step 4.4 - Erstellt den neuen Datensatz mit der Methode Create des Organisationsdienstes.

_accountId = _orgService.Create(account);

Wenn Sie zu CRM navigieren, wird ein neu erstellter Kontodatensatz angezeigt.

Step 4.5 - Sobald das Konto erstellt wurde, ruft der Dienst den Datensatz mithilfe der Methode "Webdienst abrufen" aus CRM zurück.

ColumnSet cols = new ColumnSet(new String[]{
   "name","address1_postalcode","lastusedincampaign"}); 
Account retrievedAccount = 
   (Account)_orgService.Retrieve("account", _accountId, cols);

Step 4.6 - Sobald Sie den abgerufenen Datensatz haben, können Sie den aktualisierten Wert des Datensatzes festlegen.

retrievedAccount.Address1_PostalCode = "98052"; 
retrievedAccount.Address2_PostalCode = null; 
retrievedAccount.Revenue = new Money(5000000); 
retrievedAccount.CreditOnHold = false;

Step 4.7 - Nachdem Sie den aktualisierten Wert des Datensatzes festgelegt haben, aktualisieren Sie den Datensatz mithilfe der Webdienstmethode "Aktualisieren" wieder in der CRM-Datenbank.

_orgService.Update(retrievedAccount);

Wenn Sie den Datensatz in CRM öffnen, werden diese Werte dort aktualisiert.

Step 4.8 - Löschen Sie den Datensatz abschließend mit der Webdienstmethode Löschen.

_orgService.Delete(Account.EntityLogicalName, _accountId);

Wenn Sie jetzt denselben Datensatz in CRM aktualisieren, werden Sie feststellen, dass der Datensatz nicht mehr verfügbar ist, da er bereits gelöscht wurde.

Fazit

In diesem Kapitel haben wir uns mit zwei wichtigen Webdiensten befasst, die von CRM bereitgestellt werden, und ein funktionierendes Beispiel dafür, wie diese Webdienste von einer externen Anwendung aus verwendet werden können, um verschiedene CRUD-Operationen auszuführen.