共用方式為


使用長時間執行交易的案例

下列案例說明長時間執行交易的用途。

案例 1:搭配逾時使用長時間執行的交易

長時間執行範圍可以和逾時相關聯,這是長時間執行工作必須完成的邏輯時間。 如果範圍未在指定時間內完成,則會引發預先定義的系統例外 狀況 TimeoutException

您可以將整個協調流程標示為長時間執行,或在外部長時間執行範圍中巢狀處理任何其他範圍,來建立長時間執行程序。 在前面的案例中,系統提供的例外狀況處理常式會執行,而在後面的案例中,則允許將特定例外狀況處理常式與外部範圍產生關聯。 系統提供的預設例外狀況處理常式會針對每個順利完成的巢狀交易式範圍 (如果有的話),以其完成的相反順序,執行補償處理常式。 您可以在長時間執行交易的例外狀況處理常式中使用 [補償] 圖形,透過自我補償達到相同結果。

下列協調流程說明如何將逾時與長時間執行交易產生關聯。

具有逾時的長時間執行交易

長時間執行的交易與逾時

有時候您可能需要與透過批次方式運作的舊有系統互動。 這個案例顯示舊有系統收發訂單。 舊有系統會處理訂單並傳回訂單通知。 傳送作業會使用訂單編號初始化相互關聯集,並且在該相互關聯集之後發生接收作業。 接收作業也位在具有逾時值的長時間執行範圍內。

協調流程引擎會凍結等待接收的協調流程執行個體。 相互關聯會確保在接收訊息之後叫用相同的協調流程執行個體。 如果採購單通知未在逾時值指定的時間間隔內送達,將會擲回 TimeoutException

案例 2:搭配自訂補償使用長時間執行的交易

下列協調流程示範如何將自訂補償與整個協調流程產生關聯並叫用關聯的自訂補償。 這個案例會插入新客戶,並插入該客戶的訂單詳細資料。 此協調流程的邏輯指出,如果訂單插入失敗,您應該回復客戶插入。 客戶插入可由舊版系統完成,因此會在個別可呼叫的協調流程中示範。 所呼叫協調流程的 Custom 屬性已設定為補償,可提供個別的工作表來執行補償程式。 補償將會刪除新插入的客戶。

呼叫端協調流程具有長時間執行範圍以執行訂單插入。 這個範圍是以巢狀方式放在外部長時間執行範圍內。 外部範圍關聯的例外狀況處理常式會攔截任何例外狀況。 此處理常式會使用 [補償] 圖形,叫用與被呼叫端協調流程關聯的自訂例外狀況,以回復對協調流程的呼叫中可能發生的任何變更。

具有自訂補償的長時間執行交易

使用自訂補償BTS_Trans_Orch_Fig8長時間執行的交易

被呼叫的協調流程 (主要)

呼叫協調流程 (主要)

被呼叫的協調流程 (補償)

呼叫協調流程 (補償)