Microsoft DynamicsCRM-Webサービス

Microsoft Dynamics CRMは、外部アプリケーションからCRMにアクセスし、Webメソッドを呼び出して、CRMでの作成、削除、更新、検索などの一般的なビジネスデータ操作を実行するために使用される2つの重要なWebサービスを提供します。

次のシナリオを検討してください-

  • CRMと通信する必要がある外部.NETアプリケーションがあります。たとえば、新しい顧客が外部アプリケーションに登録されたときに、CRMに連絡先レコードを挿入したい場合があります。

  • または、CRMでレコードを検索し、検索結果を外部アプリケーションに表示したい場合もあります。

このようなシナリオでは、CRMによって公開されているWebサービスを使用して、それらをアプリケーションで使用し、CRMで作成、削除、更新、および検索操作を実行できます。

IDiscoveryServiceWebサービス

このWebサービスは、指定されたユーザーが属する組織のリストと、各組織のURLエンドポイントを返します。

IOrganizationServiceWebサービス

このWebサービスは、CRMのデータとメタデータにアクセスするために使用される主要なWebサービスです。IOrganizationServiceは、2つの重要なアセンブリを使用します–Microsoft.Xrm.Sdk.dll そして Microsoft.Crm.Sdk.Proxy.dll。これらのアセンブリは、CRMSDKパッケージ内にあります。Bin フォルダ。

Microsoft.Xrm.Sdk.dll

このアセンブリは、Microsoft Dynamics CRMへの接続を簡素化するためのプロキシクラス、認証方法、サービスコントラクトなど、コアxRMメソッドとタイプを定義します。

Microsoft.Crm.Sdk.Proxy.dll

このアセンブリは、非コアメッセージの要求と応答、および組織データの操作に必要な列挙を定義します。以下は、これら2つのアセンブリでサポートされている名前空間です。

これらの各アセンブリは、特定のメッセージをサポートします。これらのメッセージは、任意のエンティティに格納されているデータを処理するために使用されます。それらによってサポートされているメッセージの完全なリストは、次のリンクにあります-

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

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

IOrganizationServiceWebサービスメソッド

ザ・ IOrganizationService システムとカスタムエンティティ、および組織のメタデータですべての一般的な操作を実行できる8つのメソッドを提供します。

シニア番号 方法と説明
1

IOrganizationService.Create

レコードを作成します。

2

IOrganizationService.Update

既存のレコードを更新します。

3

IOrganizationService. Retrieve

レコードを取得します。

4

IOrganizationService. RetrieveMultiple

レコードのコレクションを取得します。

5

IOrganizationService. Delete

レコードを削除します。

6

IOrganizationService. Associate

レコード間にリンクを作成します。

7

IOrganizationService.Disassociate

レコード間のリンクを削除します。

8

IOrganizationService.Execute

一般的なレコード処理だけでなく、ケース解決、重複検出などの特殊な処理にも使用されます。

Webサービスの例

CRMでWebサービスがどのように機能するかを理解するために、CRMSDKが提供する例を見ていきます。この例では、新しいアカウントレコードを作成して更新し、最後にCRMを使用して削除します。IOrganizationService ウェブサービス。

Step 1− CRMSDKを抽出したフォルダーを開きます。次に、SDK \ SampleCode \ CS \ QuickStartの場所を参照して、QuickStartCS.slnソリューションを開きます。

Step 2 −私たちは探求します QuickStartSimplified Connection事業。開いたapp.configこのプロジェクトでは。デフォルトでは、connectionStrings このファイルのセクションはコメント化されます。

これから、最初の接続文字列キーのコメントを解除し、次の3つの詳細を編集します-

Url−CRMインスタンスのURLを指定します。この場合、CRMのオンラインバージョンを使用しているため、そのURLを指定する必要があります。

Username − CRMOnlineのユーザー名。

Password − CRMOnlineのパスワード。

Step 3 −を開きます SimplifiedConnection.cs このプロジェクト内のファイルとその中のRunmethod。

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−このメソッドは、基本的にCRMWebサービスを使用したすべてのCRUD操作を示します。このコードは、最初に組織インスタンスを作成し、次にアカウントレコードを作成し、作成されたレコードを更新して、最後にそれを削除します。このコードの重要なコンポーネントを見てみましょう。このコードの実行時にCRMの外出先での変更を確認するには、このコードを段階的にデバッグし(以下で説明します)、同時にCRMの変更を確認します。

Step 4.1 −で変更した接続文字列を使用して組織への接続を確立します Step 2

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

Step 4.2 −CRM組織のWebサービスのプロキシインスタンスを取得します。

_orgService = new OrganizationService(connection)

Step 4.3 −新しいAccountエンティティオブジェクトを作成し、そのName、AccountCategoryCode、および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 −組織サービスのCreateメソッドを使用して新しいレコードを作成します。

_accountId = _orgService.Create(account);

CRMに移動すると、新しく作成されたアカウントレコードが表示されます。

Step 4.5 −アカウントが作成されると、サービスはWebサービスの取得方法を使用してCRMからレコードを取得します。

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

Step 4.6 −取得したレコードを取得したら、レコードの更新された値を設定できます。

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

Step 4.7 −レコードの更新された値を設定した後、Webサービスの更新メソッドを使用してレコードをCRMデータベースに更新し直します。

_orgService.Update(retrievedAccount);

CRMでレコードを開くと、これらの値がそこで更新されているのがわかります。

Step 4.8 −最後に、Webサービスの削除メソッドを使用してレコードを削除します。

_orgService.Delete(Account.EntityLogicalName, _accountId);

CRMで同じレコードを更新すると、レコードはすでに削除されているため、使用できなくなっていることがわかります。

結論

この章では、CRMによって提供される2つの重要なWebサービスと、これらのWebサービスを外部アプリケーションから使用してさまざまなCRUD操作を実行する方法の実例を扱いました。