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 −私たちは探求します QuickStart と Simplified 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操作を実行する方法の実例を扱いました。