工作流程控制端點
工作流程控制端點可讓開發人員呼叫控制作業,以便從遠端控制使用 WorkflowServiceHost 所裝載的工作流程執行個體。 這項功能可以使用程式設計的方式執行多種控制作業,像是暫停、繼續及終止。
警告
如果在異動內使用工作流程控制端點,而且所控制的工作流程包含 Persist 活動,則工作流程執行個體將會進行封鎖,直到異動逾時為止。
工作流程執行個體管理
.NET Framework 4.6.1 定義名為 IWorkflowInstanceManagement 的新合約。 這個合約定義了一系列的控制作業,可讓您從遠端控制 WorkflowServiceHost 裝載的工作流程執行個體。 WorkflowControlEndpoint 是標準的端點,提供 IWorkflowInstanceManagement 合約的實作。 WorkflowControlClient 是一個類別,用來傳送控制作業至 WorkflowControlEndpoint。
工作流程執行個體可能處於下列其中一種狀態:
使用中
工作流程執行個體尚未達到完成狀態,而且不是在暫停狀態。 處於此狀態時,工作流程執行個體將會執行及處理應用程式訊息。
已暫停
處於此狀態時,即使有活動尚未開始執行或已執行一部分,工作流程執行個體也不會執行。
已完成
工作流程執行個體的最終狀態。 工作流程執行個體達到完成狀態之後,就不能再執行了。
工作流程執行個體管理
IWorkflowInstanceManagement 介面定義了一組控制作業,分為同步與非同步的版本。 異動版本需要使用異動感知繫結程序。 下表列出支援的控制作業。
控制作業 | 描述 |
---|---|
中止 | 強制停止工作流程執行個體的執行。 |
取消 | 工作流程執行個體從作用中或已暫停狀態轉換為已完成狀態。 |
執行 | 為工作流程執行個體提供執行的機會。 |
暫止 | 工作流程執行個體從作用中狀態轉換為已暫停狀態。 |
終止 | 工作流程執行個體從作用中或已暫停狀態轉換為已完成狀態。 |
Unsuspend | 工作流程執行個體從已暫停狀態轉換為作用中狀態。 |
TransactedCancel | 執行交易 (從用戶端流動進入或在本機建立) 之下的 [取消] 作業。 如果系統會維持工作流程執行個體的長期狀態,則在此項作業執行期間工作流程執行個體必須保存。 |
TransactedRun | 執行交易 (從用戶端流動進入或在本機建立) 之下的 [執行] 作業。 如果系統會維持工作流程執行個體的長期狀態,則在此項作業執行期間工作流程執行個體必須保存。 |
TransactedSuspend | 執行交易 (從用戶端流動進入或在本機建立) 之下的 [暫停] 作業。 如果系統會維持工作流程執行個體的長期狀態,則在此項作業執行期間工作流程執行個體必須保存。 |
TransactedTerminate | 執行異動 (從用戶端流動進入或在本機建立) 之下的 [結束] 作業。 如果系統會維持工作流程執行個體的長期狀態,則在此項作業執行期間工作流程執行個體必須保存。 |
TransactedUnsuspend | 執行異動 (從用戶端流動進入或在本機建立) 之下的 [取消暫停] 作業。 如果系統會維持工作流程執行個體的長期狀態,則在此項作業執行期間工作流程執行個體必須保存。 |
IWorkflowInstanceManagement 合約並未提供建立新工作流程執行個體的方法,只能管理現有的工作流程執行個體。 如需有關從遠端建立新工作流程執行個體的詳細資訊,請參閱工作流程服務主機擴充性。
WorkflowControlEndpoint
WorkflowControlEndpoint 是標準端點,含有固定合約 IWorkflowInstanceManagement。 將此端點加入至 WorkflowServiceHost 執行個體之後,可以使用此端點傳送命令作業給主機執行個體所裝載的任何工作流程執行個體。 如需有關標準端點的詳細資訊,請參閱 標準端點。
WorkflowControlClient
WorkflowControlClient 類別可讓您傳送控制訊息至 WorkflowControlEndpoint 上的 WorkflowServiceHost。 其中包含方法,而該方法會提供給 IWorkflowInstanceManagement 合約所支援的各項作業 (交易的作業除外)。 WorkflowControlClient 會使用環境交易來判斷是否應該使用交易的作業。