Microsoft Dynamics CRM - usługi internetowe
Microsoft Dynamics CRM zapewnia dwie ważne usługi internetowe, które są używane do uzyskiwania dostępu do CRM z zewnętrznej aplikacji i wywołują metody internetowe w celu wykonywania typowych operacji na danych biznesowych, takich jak tworzenie, usuwanie, aktualizowanie i znajdowanie w CRM.
Rozważ następujące scenariusze -
Masz zewnętrzną aplikację .NET, która musi komunikować się z CRM. Na przykład możesz chcieć wstawić rekord Kontakt w CRM, gdy nowy klient jest zarejestrowany w Twojej zewnętrznej aplikacji.
A może chcesz przeszukać rekordy w CRM i wyświetlić wyniki wyszukiwania w zewnętrznej aplikacji.
W takich scenariuszach można używać usług internetowych udostępnionych przez CRM, aby korzystać z nich w aplikacji i wykonywać operacje tworzenia, usuwania, aktualizowania i znajdowania w CRM.
Usługa sieciowa IDiscoveryService
Ta usługa sieci Web zwraca listę organizacji, do których należy określony użytkownik, oraz punkt końcowy adresu URL dla każdej organizacji.
Usługa sieci Web IOrganizationService
Ta usługa internetowa jest podstawową usługą sieciową używaną do uzyskiwania dostępu do danych i metadanych w CRM. IOrganizationService używa dwóch ważnych zestawów -Microsoft.Xrm.Sdk.dll i Microsoft.Crm.Sdk.Proxy.dll. Te zestawy można znaleźć w pakiecie CRM SDK wewnątrzBin teczka.
Microsoft.Xrm.Sdk.dll
Ten zestaw definiuje podstawowe metody i typy xRM, w tym klasy proxy, aby uprościć połączenie z Microsoft Dynamics CRM, metody uwierzytelniania i kontrakty serwisowe.
Microsoft.Crm.Sdk.Proxy.dll
Ten zestaw definiuje żądania i odpowiedzi dla komunikatów innych niż podstawowe, a także wyliczenia wymagane do pracy z danymi organizacji. Poniżej przedstawiono przestrzenie nazw obsługiwane przez te dwa zestawy.
Każdy z tych zestawów obsługuje określone komunikaty, które będą używane do pracy z danymi przechowywanymi w dowolnej encji. Pełną listę obsługiwanych przez nie wiadomości można znaleźć w poniższych linkach -
Supported xRM Messages - https://msdn.microsoft.com/en-us/library/gg334698.aspx
Supported CRM Messages - https://msdn.microsoft.com/en-us/library/gg309482.aspx
Metody usługi sieci Web IOrganizationService
Plik IOrganizationService udostępnia osiem metod, które umożliwiają wykonywanie wszystkich typowych operacji w systemie i niestandardowych encjach, a także metadanych organizacji.
Sr.No | Metoda i opis |
---|---|
1 | IOrganizationService.Create Tworzy rekord. |
2 | IOrganizationService.Update Aktualizuje istniejący rekord. |
3 | IOrganizationService. Retrieve Pobiera rekord. |
4 | IOrganizationService. RetrieveMultiple Pobiera kolekcję rekordów. |
5 | IOrganizationService. Delete Usuwa rekord. |
6 | IOrganizationService. Associate Tworzy łącze między rekordami. |
7 | IOrganizationService.Disassociate Usuwa łącze między rekordami. |
8 | IOrganizationService.Execute Używany do zwykłego przetwarzania rekordów, a także do specjalistycznego przetwarzania, takiego jak rozwiązywanie przypadków, wykrywanie duplikatów itp. |
Przykład usługi internetowej
Aby zrozumieć, jak usługi internetowe działają w CRM, przyjrzymy się przykładowi dostarczonemu przez CRM SDK. W tym przykładzie utworzymy nowy rekord konta, zaktualizujemy go, a następnie ostatecznie usuniemy za pomocą CRMIOrganizationService Serwis internetowy.
Step 1- Otwórz folder, do którego rozpakowałeś CRM SDK. Teraz otwórz rozwiązanie QuickStartCS.sln, przechodząc do następującej lokalizacji: SDK \ SampleCode \ CS \ QuickStart
Step 2 - Będziemy badać QuickStart z Simplified Connectionprojekt. otwartyapp.configw tym projekcie. DomyślnieconnectionStrings sekcja w tym pliku zostanie skomentowana.
Na tej podstawie usuń komentarz z pierwszego klucza parametrów połączenia i edytuj następujące trzy szczegóły -
Url- Określ adres URL swojej instancji CRM. W naszym przypadku, ponieważ używamy wersji online CRM, będziesz musiał wspomnieć o tym adresie URL.
Username - Twoja nazwa użytkownika CRM Online.
Password - Twoje hasło CRM Online.
Step 3 - Otwórz SimplifiedConnection.cs plik w tym projekcie i Runmethod w nim.
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- Ta metoda w zasadzie demonstruje wszystkie operacje CRUD przy użyciu usług internetowych CRM. Kod najpierw tworzy instancję organizacji, następnie tworzy rekord konta, aktualizuje utworzony rekord, a następnie usuwa go. Przyjrzyjmy się ważnym składnikom tego kodu. Aby zobaczyć zmiany w CRM w ruchu, gdy ten kod jest uruchomiony, możesz debugować ten kod krok po kroku (jak omówimy poniżej) i jednocześnie zobaczyć zmiany w CRM.
Step 4.1 - Ustanawia połączenie z organizacją przy użyciu parametrów połączenia, które zmodyfikowaliśmy w Step 2.
Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);
Step 4.2 - Uzyskuje instancję proxy usługi sieciowej organizacji CRM.
_orgService = new OrganizationService(connection)
Step 4.3 - Tworzy nowy obiekt podmiotu Account i ustawia jego nazwę, AccountCategoryCode i CustomerTypeCode.
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 - Tworzy nowy rekord przy użyciu metody tworzenia usługi organizacji.
_accountId = _orgService.Create(account);
Jeśli przejdziesz do CRM, zobaczysz nowo utworzony rekord konta.
Step 4.5 - Po utworzeniu konta usługa pobiera rekord z CRM przy użyciu metody pobierania usługi internetowej.
ColumnSet cols = new ColumnSet(new String[]{
"name","address1_postalcode","lastusedincampaign"});
Account retrievedAccount =
(Account)_orgService.Retrieve("account", _accountId, cols);
Step 4.6 - Po odzyskaniu rekordu możesz ustawić zaktualizowaną wartość rekordu.
retrievedAccount.Address1_PostalCode = "98052";
retrievedAccount.Address2_PostalCode = null;
retrievedAccount.Revenue = new Money(5000000);
retrievedAccount.CreditOnHold = false;
Step 4.7 - Po ustawieniu zaktualizowanej wartości rekordu, zaktualizuj rekord z powrotem do bazy danych CRM przy użyciu metody usługi sieciowej Aktualizuj.
_orgService.Update(retrievedAccount);
Jeśli otworzysz rekord w CRM, zobaczysz tam zaktualizowane wartości.
Step 4.8 - Na koniec usuń rekord za pomocą metody usługi sieciowej Usuń.
_orgService.Delete(Account.EntityLogicalName, _accountId);
Jeśli teraz odświeżysz ten sam rekord w CRM, zobaczysz, że rekord nie jest już dostępny, ponieważ został już usunięty.
Wniosek
W tym rozdziale zajęliśmy się dwiema ważnymi usługami sieciowymi udostępnianymi przez CRM oraz przykładem roboczym tego, jak te usługi internetowe mogą być używane z zewnętrznej aplikacji do wykonywania różnych operacji CRUD.