建立自訂 WorkflowCommitWorkBatchService 服務
每次工作流程執行階段需要認可工作流程執行的結果時,便會使用 WorkflowCommitWorkBatchService 服務。 例如,藉由提供交易式內容,您可以提供自訂 WorkflowCommitWorkBatchService 服務來控制如何執行認可邏輯。 如果未指定 WorkflowCommitWorkBatchService,則當開始執行階段時,工作流程執行階段會建立 DefaultWorkflowCommitWorkBatchService。
若要建立自訂 WorkflowCommitWorkBatchService 服務,您必須衍生自 WorkflowCommitWorkBatchService 基底類別。 這個類別會定義一個您可覆寫的虛擬方法:
protected void CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback)
這個方法是由工作流程執行階段在它有要認可的工作批次時呼叫,例如,當工作流程執行個體有持續的變更時。 這個方法的實作應叫用適當交易範圍內的 CommitWorkBatchCallback 方法。
環境交易
基底實作會檢查由工作流程執行個體產生的環境交易是否存在。 如果找不到環境交易,它會建立一個環境交易,並呼叫 CommitWorkBatch 委派。 但是,如果環境交易存在,基底實作會建立 DependentTransaction,它會從 DependentCloneOption 列舉指定 BlockCommitUntilComplete,接著基底實作會將環境交易設定為等於新建立的 DependentTransaction。 它之所以這麼做是要讓工作流程執行個體產生的環境交易無法完成,直到工作批次認可工作完成為止。 如果發生例外狀況,CommitWorkBatch 服務會復原交易,並重新擲回例外狀況。 您可以使用 FaultHandlerActivity 攔截此例外狀況。 這可讓您視需要重試交易。
WorkflowCommitWorkBatchService 唯一支援的環境交易類型是從工作流程執行個體產生的交易。 從主應用程式或從執行工作流程執行階段的應用程式產生的環境交易會暫時從目前的執行緒移除,以減少其副作用。 在工作流程閒置後,主應用程式所包含的原始環境交易會放回到執行緒中。 因此,Windows Workflow Foundation 不支援將交易從外部帶入工作流程執行個體的功能。
請參閱
參考
DefaultWorkflowCommitWorkBatchService
WorkflowCommitWorkBatchService
概念
Windows 工作流程 CommitWorkBatch 服務
其他資源
開發 Windows Workflow Foundation 服務
Copyright © 2007 by Microsoft Corporation. All rights reserved.