Microsoft-crm-web-services
Microsoft Dynamics CRM-Webサービス
Microsoft Dynamics CRMは、外部アプリケーションからCRMにアクセスし、CRMで作成、削除、更新、検索などの一般的なビジネスデータ操作を実行するWebメソッドを呼び出すために使用される2つの重要なWebサービスを提供します。
次のシナリオを考慮してください-
- 外部の.NETアプリケーションがあり、CRMと通信する必要があります。 たとえば、新しい顧客が外部アプリケーションに登録されたときに、CRMに連絡先レコードを挿入できます。
- または、CRMでレコードを検索し、外部アプリケーションで検索結果を表示することもできます。
このようなシナリオでは、CRMによって公開されるWebサービスを使用して、アプリケーションでそれらを使用し、CRMで作成、削除、更新、および検索の操作を実行できます。
IDiscoveryService Webサービス
このWebサービスは、指定されたユーザーが属する組織のリストと、各組織のURLエンドポイントを返します。
IOrganizationService Webサービス
このWebサービスは、CRMのデータとメタデータにアクセスするために使用される主要なWebサービスです。 IOrganizationServiceは、2つの重要なアセンブリ- Microsoft.Xrm.Sdk.dll および Microsoft.Crm.Sdk.Proxy.dll を使用します。 これらのアセンブリは、 Bin フォルダー内のCRM SDKパッケージにあります。
*Microsoft.Xrm.Sdk.dll*
このアセンブリは、Microsoft Dynamics CRMへの接続を簡単にするプロキシクラス、認証方法、サービス契約など、xRMのコアメソッドとタイプを定義します。
*Microsoft.Crm.Sdk.Proxy.dll*
このアセンブリは、非コアメッセージの要求と応答、および組織データの操作に必要な列挙を定義します。 これら2つのアセンブリでサポートされる名前空間は次のとおりです。
これらの各アセンブリは、特定のメッセージをサポートします。このメッセージは、エンティティに保存されているデータを操作するために使用されます。 それらによってサポートされているメッセージの完全なリストは、次のリンクで見つけることができます-
サポートされるxRMメッセージ-https://msdn.microsoft.com/en-us/library/gg334698.aspx
サポートされているCRMメッセージ-https://msdn.microsoft.com/en-us/library/gg309482.aspx
IOrganizationService Webサービスメソッド
*IOrganizationService* には、システムおよびカスタムエンティティと組織メタデータに対するすべての一般的な操作を実行できる8つのメソッドがあります。
Sr.No | Method & Description |
---|---|
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サービスがどのように機能するかを理解するために、CRM SDKが提供する例を見てみましょう。 この例では、新しいAccountレコードを作成して更新し、最後にCRM IOrganizationService Webサービスを使用して削除します。
- ステップ1 *-CRM SDKを抽出したフォルダーを開きます。 次の場所を参照して、QuickStartCS.slnソリューションを開きます。SDK\ SampleCode \ CS \ QuickStart
ステップ2 *- *QuickStart with Simplified Connection プロジェクトを検討します。 このプロジェクトで app.config を開きます。 デフォルトでは、このファイルの connectionStrings セクションがコメント化されます。
これから、最初の接続文字列キーのコメントを外し、次の3つの詳細を編集します-
*Url* -CRMインスタンスのURLを指定します。 この場合、CRMのオンラインバージョンを使用しているため、そのURLを記載する必要があります。
ユーザー名-CRM Onlineユーザー名。
パスワード-CRMオンラインのパスワード。
ステップ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;
}
}
- ステップ4 *-このメソッドは、基本的にCRM Webサービスを使用したすべてのCRUD操作を示します。 このコードは、最初に組織インスタンスを作成し、次にアカウントレコードを作成し、作成したレコードを更新して、最後に削除します。 このコードの重要なコンポーネントを見てみましょう。 このコードの実行時にCRMでの変更を確認するには、このコードを段階的にデバッグし(以下で説明します)、CRMの変更を同時に確認します。
- ステップ4.1 *-*ステップ2 *で変更した接続文字列を使用して、組織への接続を確立します。
Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);
- ステップ4.2 *-CRM組織Webサービスのプロキシインスタンスを取得します。
_orgService = new OrganizationService(connection)
- ステップ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);
- ステップ4.4 *-組織サービスのCreateメソッドを使用して新しいレコードを作成します。
_accountId = _orgService.Create(account);
CRMに移動すると、新しく作成されたアカウントレコードが表示されます。
- ステップ4.5 *-アカウントが作成されると、サービスはRetrieve Web Serviceメソッドを使用してCRMからレコードを取得します。
ColumnSet cols = new ColumnSet(new String[]{
"name","address1_postalcode","lastusedincampaign"});
Account retrievedAccount =
(Account)_orgService.Retrieve("account", _accountId, cols);
- ステップ4.6 *-取得したレコードを取得したら、レコードの更新値を設定できます。
retrievedAccount.Address1_PostalCode = "98052";
retrievedAccount.Address2_PostalCode = null;
retrievedAccount.Revenue = new Money(5000000);
retrievedAccount.CreditOnHold = false;
- ステップ4.7 *-レコードの更新値を設定した後、Webサービスの更新メソッドを使用して、レコードを更新してCRMデータベースに戻します。
_orgService.Update(retrievedAccount);
CRMでレコードを開くと、これらの値が更新されていることがわかります。
- ステップ4.8 *-最後に、Delete web serviceメソッドを使用してレコードを削除します。
_orgService.Delete(Account.EntityLogicalName, _accountId);
CRMで同じレコードを更新すると、そのレコードは既に削除されているため利用できなくなっていることがわかります。
結論
この章では、CRMが提供する2つの重要なWebサービスと、これらのWebサービスを外部アプリケーションから使用してさまざまなCRUD操作を実行する方法の実例を取り上げました。