共用方式為


使用訊息 (請求和回覆類別) 搭配 Execute 方法

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

你可以在 IOrganizationService 使用方法來執行一般工作。 除了一般方法之外,您還可以使用 IOrganizationService.Execute 方法,執行未公開為方法的訊息。Execute 方法的訊息需要類別做為參數和傳回訊息回覆類別。 要求資訊分類名稱以「請求」關閉,回應訊息分類名稱以「回覆」關閉。 如需更多關於所有 Execute 方法支援的訊息,請見 組織服務中的 xRM 訊息組織服務中的 Dynamics 365 訊息IDiscoveryServiceIDeploymentService Web 服務使用類似的執行請求和回覆模式。

執行訊息流程

所有訊息請求的基底類別為 OrganizationRequest。 您可以使用此類型來執行所有訊息,為請求指定訊息名稱和參數集合。 不過,當您使用衍生類型時,例如 AssociateRequest,當您在要求類別中的屬性時,參數集合就已填入。

Execute 方法會針對請求回傳對應的回覆類別,OrganizationResponse 類別的衍生類別。 如同請求類別,衍生類別在結果參數集合中,包含每個值的屬性。 所有訊息具有回覆,但多數在回覆中並沒有任何屬性。 .

訊息會在中繼資料中預先定義並在 SDK 訊息實體中儲存為記錄。 對於每個訊息,您可以決定要讓訊息在運作時連接至伺服器,或是來自 Microsoft Dynamics 365 for Microsoft Office Outlook with Offline Access。 此資訊可以在 SdkMessage.Availability 屬性中找到。 如需詳細資訊,請參閱外掛程式註冊實體

本主題內容

在訊息中傳遞選項參數

在單一資料庫交易中執行多個訊息

在背景執行訊息 (非同步)

在訊息中傳遞選項參數

您可以透過在 Parameters 屬性增加值,來傳遞選項參數到任何訊息請求。 某些參數不會在請求類別中顯示屬性。 若要設定這些參數,必須先在 Request 類別中設定 Parameters 集合。

下表列出這些參數。

Parameter

描述

訊息

SolutionUniqueName

String 指定作業適用的解決方案的唯一名稱。 如需詳細資訊,請參閱解決方案元件相依性追蹤

AddPrivilegesRoleRequest
CreateRequest
DeleteRequest
MakeAvailableToOrganizationTemplateRequest
UpdateRequest

CalculateMatchCodeSynchronously

已經不需要指定參數。 用來偵測重複資料的符合代碼將會同步計算,不論此參數傳遞何種值。 如需詳細資訊,請參閱執行重複資料偵測

CreateRequest
UpdateRequest

SuppressDuplicateDetection

Boolean 用來停用建立或更新作業的重複資料偵測。 如需詳細資訊,請參閱執行重複資料偵測

CreateRequest
UpdateRequest

下列範例顯示如何傳遞一個選項參數:

Account target = new Account();
target.Name = "Fabrikam";
CreateRequest req = new CreateRequest();
req.Target = target;
req["SuppressDuplicateDetection"] = true;
req["CalculateMatchCodeSynchronously"] = true;
req["SolutionUniqueName"] = "MySolutionName";
CreateResponse response = (CreateResponse)_service.Execute(req);

在單一資料庫交易中執行多個訊息

企業應用程式通常需要協調系統中的多項記錄變更,讓所有的資料變更都成功,或是不讓任何變更成功。 以資料庫的說法來表達,這就是所謂透過可在單一交易中任何一項作業失敗時復原所有資料變更的功能,執行該交易中的多項作業。

使用 ExecuteTransactionRequest 訊息要求,您可以在單一資料庫交易中執行兩個或多個組織服務要求。 若要使用此訊息,以您將在交易中執行的兩個或多個組織要求來填入 Requests 集合。 如果要返回回覆集合,在 Responses 集合中,每個執行的訊息要求一個回覆,設定 ReturnResponsestrue。 在 Requests 集合的訊息要求依出現在集合的順序執行,在索引 0 的項目會先執行。 此相同順序在 Responses 集合中保留。

如果任何一個要求失敗,以及交易回復,則在交易期間完成的資料變更會復原。 此外,會傳回 ExecuteTransactionFault,識別要求訊息的要求集合中造成錯誤的索引。

ExecuteMultipleRequest 可以包含一個或多個 ExecuteTransactionRequest 執行個體。ExecuteTransactionRequest 執行個體不可以包含 ExecuteMultipleRequestExecuteTransactionRequest。 如需 ExecuteMultipleRequest 的詳細資訊,請參閱 使用 ExecuteMultiple 提升大量資料載入的效能

如需示範 ExecuteTransactionRequest 的範例程式碼,請參閱Sample: Execute multiple requests in transaction

在背景執行訊息 (非同步)

除了立即執行訊息請求之外,一如呼叫 Execute 與傳遞訊息請求,您也可以在背景 (非同步地) 執行訊息請求。 可以透過延遲訊息執行來改善系統效能,直到稍後伺服器的負載變輕。 在可以繼續前,互動式使用者不需要等待目標訊息執行。 這在處理需要花費幾分鐘才能執行的訊息來說這別有用。

注意

現在,只有 ImportSolutionRequest 訊息可以搭配 ExecuteAsync 訊息使用。

使用 ExecuteAsyncRequest 訊息來非同步地執行訊息。 您設定要求,並將要求執行個體做為引數傳遞至 ExecuteExecuteAsyncResponse 會傳回並包含非同步作業的 ID。 您可以 (選擇性地) 使用 ID 查詢工作,找出目前的狀態。

您也可以使用 ExecuteMultipleRequest 訊息,一次執行多個訊息使用。 若要這樣做,請新增一個或多個 ExecuteAsync 訊息請求至一項 ExecuteMultiple 訊息請求。 因為改善整個系統的效能節能的限制,每個組織一次只能執行一條非同步執行的訊息。 您無法從 ExecuteAsync 訊息請求執行 ExecuteMultiple 訊息請求。 如需更多資訊關於 ExecuteMultiple 訊息請求,請參閱 使用 ExecuteMultiple 提升大量資料載入的效能

另請參閱

Execute
OrganizationRequest
OrganizationResponse
ExecuteAsyncMaxConnectionsPerServer
ExecuteAsyncPerOrgMaxConnectionsPerServer
使用組織服務讀取和寫入資料或中繼資料
使用 ExecuteMultiple 提升大量資料載入的效能
使用訊息 (請求和回覆類別) 搭配 ExecuteCrmOrganizationRequest 方法
探索服務的訊息
組織服務中的 xRM 訊息
組織服務中的 Dynamics 365 訊息
ExecuteAsync message privileges

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權