共用方式為


補償

WF 中的「補償」,是一種在發生後續錯誤時,能讓先前完成的工作復原或得到補償 (依照應用程式定義的邏輯) 的機制。交易可讓您將多項作業結合成單一工作單位。如果交易處理序的任何部分中發生錯誤,使用交易可讓應用程式中止 (回復) 在交易內部執行的所有變更。然而,如果屬於長期執行的工作,可能就不適合使用交易。例如,假設有一項旅遊計劃應用程式實作為工作流程。工作流程的步驟包括預訂班機、等待經理核准,然後繳交班機費用。這些處理程序可能要耗費許多天,因此讓預定班機與繳交班機費用的步驟都在同一個交易中,會是一個不實際的選擇。在此案例中,如果處理程序稍後發生失敗,則可以使用補償復原工作流程的預定班機步驟。

使用補償

工作流程包含的活動若會執行當工作流程無法完成且交易不適當時應予以復原或補償的邏輯,就可以將這些活動置於 CompensableActivity 活動中。CompensableActivity 活動具有數個子活動區段,包括 BodyConfirmationHandlerBody 活動定義可補償的商務邏輯單元,此單元會在工作流程正常執行期間執行,CompensationHandler 活動則定義邏輯單元,以補償由 Body 所執行的工作。叫用補償時,無論利用 Compensate 活動明確地叫用,或者由工作流程的預設補償邏輯隱含地叫用,都會執行指定為 CompensationHandler 的活動,同時補償 Body 活動的動作。如果未提供 CompensationHandler 活動,預設補償邏輯的執行方式則是透過補償在 Body 中依完成的相反方向順利完成之 Body 中呈巢狀的所有 CompensableActivity 活動。如需補償的詳細資訊,請參閱補償程式設計模型

另請參閱

參考

CompensableActivity
Compensate