共用方式為


使用 Web API,執行批次作業

 

發行︰ 2017年1月

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

使用批次作業,您可以將多個作業群組到單一 HTTP 要求。

本主題內容

何時使用批次要求

批次要求

變更集

範例

何時使用批次要求

批次要求提供的值是可以包括變更集,這提供了將數項無論成功或失敗的作業組合在一起成為群組的方式。 在交易中,與其他可以使用 Web API 執行的作業相較之下,在沒有包括物件序列化或更深入了解 HTTP 通訊協定的某種物件模型的情況下,它們較難撰寫,因為要求本文實質上是文字文件,必須符合相當特殊的要求。

請記住,在單一作業中比使用批次要求,更容易建立相關實體。 在彼此沒有關聯的實體上執行作業時,而且所有作業必須在單一交易作業中執行時,最好使用批次要求。

此外,傳回的回覆基本上是文字文件,而不是容易解析為 JSON 的物件。 您需要在剖析回覆文字或找到 Helper 程式庫以存取回覆資料。

批次要求

使用 POST 要求,送出包含多個要求的批次作業。 批次要求可包含 GET 要求和變更集。 若要使用批次要求的交易功能,只有將會變更資料的作業可包含在變更集內。GET 要求不可包含在變更集當中。

包含批次的 POST 要求必須具有值設為 multipart/mixed 的 Content-Type 標頭,且 boundary 設定為包含使用此模式的批次識別碼:

--batch_<unique identifier>

唯一識別碼不需要是 GUID,但是必須是唯一的。 在批次中每個項目前面必須有批次識別碼與 Content-Type 及 Content-Transfer-Encoding 標頭,如下所示:

--batch_WKQS9Yui9r
Content-Type: application/http
Content-Transfer-Encoding:binary

批次的結尾必須包含終止指標,如下所示:

--batch_WKQS9Yui9r--

注意

Web API 不支援執行 odata.continue-on-error 喜好設定。 批次發生的任何錯誤將停止批次的其他部分處理。

變更集

當多個作業包含在變更集中,所有作業視為不可部分完成的,這表示如果任一作業失敗,所有已完成作業會復原。 如同批次要求,變更集必須具有值設為 multipart/mixed 的 Content-Type 標頭,且 boundary 設定為包含使用此模式的變更集識別碼:

--changeset_<unique identifier>

唯一識別碼不需要是 GUID,但是必須是唯一的。 在變更集中每個項目前面必須有變更集識別碼與 Content-Type 及 Content-Transfer-Encoding 標頭,如下所示:

--changeset_BBB456
Content-Type: application/http
Content-Transfer-Encoding:binary

變更集也可以包含具有唯一值的 Content-ID 標頭。 此值的首碼為 $ 時,代表變數,包含該作業建立的任何實體的 Uri。 例如,當您設定 1 值時,可以稍後在變更集使用 $1,參照該實體。

變更集的結尾必須包含終止指標,如下所示:

--changeset_BBB456--

範例

下列範例包括有唯一識別碼 AAA123 的批次與有唯一識別碼 BBB456 的變更集。

在變更集中,使用 POST 建立兩個工作,與現有客戶 (accountid = 00000000-0000-0000-000000000001) 相關聯。

最後,在變更集外部包含 GET 要求,傳回與客戶相關的全部六個工作,包括在批次要求終建立的兩個工作。

  • 要求

    POST cc_WebAPI_ServiceURI/$batch HTTP/1.1
    Content-Type: multipart/mixed;boundary=batch_AAA123
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    --batch_AAA123
    Content-Type: multipart/mixed;boundary=changeset_BBB456
    
    --changeset_BBB456
    Content-Type: application/http
    Content-Transfer-Encoding:binary
    Content-ID: 1
    
    POST cc_WebAPI_ServiceURI/tasks HTTP/1.1
    Content-Type: application/json;type=entry
    
    {"subject":"Task 1 in batch","regardingobjectid_account_task@odata.bind":"cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)"}
    --changeset_BBB456
    Content-Type: application/http
    Content-Transfer-Encoding:binary
    Content-ID: 2
    
    POST cc_WebAPI_ServiceURI/tasks HTTP/1.1
    Content-Type: application/json;type=entry
    
    {"subject":"Task 2 in batch","regardingobjectid_account_task@odata.bind":"cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)"}
    --changeset_BBB456--
    
    --batch_AAA123
    Content-Type: application/http
    Content-Transfer-Encoding:binary
    
    GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)/Account_Tasks?$select=subject HTTP/1.1
    Accept: application/json
    
    --batch_AAA123--
    
  • 回覆

    --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f
    Content-Type: multipart/mixed; boundary=changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc
    
    --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    Content-ID: 1
    
    HTTP/1.1 204 No Content
    OData-Version: 4.0
    Location: cc_WebAPI_ServiceURI/tasks(a59c24f3-fafc-e411-80dd-00155d2a68cb)
    OData-EntityId: cc_WebAPI_ServiceURI/tasks(a59c24f3-fafc-e411-80dd-00155d2a68cb)
    
    
    --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    Content-ID: 2
    
    HTTP/1.1 204 No Content
    OData-Version: 4.0
    Location: cc_WebAPI_ServiceURI/tasks(a69c24f3-fafc-e411-80dd-00155d2a68cb)
    OData-EntityId: cc_WebAPI_ServiceURI/tasks(a69c24f3-fafc-e411-80dd-00155d2a68cb)
    
    
    --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc--
    --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f
    Content-Type: application/http
    Content-Transfer-Encoding: binary
    
    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
      "@odata.context":"cc_WebAPI_ServiceURI/$metadata#tasks(subject)","value":[
        {
          "@odata.etag":"W/\"474122\"","subject":"Task Created with Test Account","activityid":"919c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474125\"","subject":"Task 1","activityid":"a29c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474128\"","subject":"Task 2","activityid":"a39c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474131\"","subject":"Task 3","activityid":"a49c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474134\"","subject":"Task 1 in batch","activityid":"a59c24f3-fafc-e411-80dd-00155d2a68cb"
        },{
          "@odata.etag":"W/\"474137\"","subject":"Task 2 in batch","activityid":"a69c24f3-fafc-e411-80dd-00155d2a68cb"
        }
      ]
    }
    --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f--
    

另請參閱

使用 Web API 執行作業
撰寫 HTTP 要求並處理錯誤
使用 Web API 查詢資料
使用 Web API,建立實體
使用 Web API 擷取實體
使用 Web API 更新和刪除實體
使用 Web API 建立和取消實體的關聯
使用 Web API 功能
使用 Web API 動作
使用 Web API 模擬其他使用者
使用 Web API 執行條件運算

Microsoft Dynamics 365

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