工作流程控制端點可讓開發人員呼叫控制作業,以遠端控制使用 WorkflowServiceHost裝載的工作流程實例。 這項功能可用來以程式設計方式執行控件作業,例如暫停、繼續和終止。
警告
如果在交易內使用工作流程控制端點,且所控制的工作流程包含 Persist 活動,則工作流程實例將會封鎖,直到交易逾時為止。
工作流程實例管理
.NET Framework 4.6.1 定義名為 IWorkflowInstanceManagement的新合約。 此合約會定義一系列的控制作業,可讓您從遠端控制 裝載的 WorkflowServiceHost工作流程實例。 WorkflowControlEndpoint 是一個提供 IWorkflowInstanceManagement 合約實作的標準端點。 WorkflowControlClient 是用來將控件作業傳送至的 WorkflowControlEndpoint類別。
工作流程實例可以是下列其中一種狀態:
活動中
工作流程實例到達完成狀態之前的狀態,以及當它不是處於暫停狀態時。 處於此狀態時,工作流程實例會執行並處理應用程式訊息。
已暫停
處於此狀態時,即使有活動尚未開始執行或部分執行,工作流程實例也不會執行。
完成
工作流程實例的最終狀態。 到達完成狀態之後,工作流程實例無法執行。
IWorkflowInstanceManagement
介面 IWorkflowInstanceManagement 會使用同步和異步版本來定義一組控制作業。 交易版本需要使用交易感知系結。 下表列出支援的控制操作。
控制作業 | 說明 |
---|---|
流產 | 強制停止工作流程實例的執行。 |
取消 | 將工作流程實例從作用中或暫停的狀態轉換為已完成狀態。 |
跑步 | 提供工作流程實例執行的機會。 |
暫停 | 將工作流程實例從作用中狀態轉換為暫停狀態。 |
終止 | 將工作流程實例從作用中或暫停的狀態轉換為已完成狀態。 |
取消暫停 | 將工作流程實例從暫止狀態轉換為使用中狀態。 |
交易已取消 | 在交易中執行取消操作(從用戶端流入或在本地建立)。 如果系統維護工作流程實例的持久狀態,則必須在執行此作業期間保存工作流程實例。 |
TransactedRun | 在交易框架下執行作業(由用戶端流入或在本地建立)。 如果系統維護工作流程實例的持久狀態,則必須在執行此作業期間保存工作流程實例。 |
交易暫停 | 在交易流程中執行暫停操作(由用戶端流入或在本機建立)。 如果系統維護工作流程實例的持久狀態,則必須在執行此作業期間保存工作流程實例。 |
處理終止 | 在交易過程中執行終止操作(從客戶端流入或在本機建立)。 如果系統維護工作流程實例的持久狀態,則必須在執行此作業期間保存工作流程實例。 |
交易取消暫停 | 在交易流程中執行解除暫停作業(從客戶端流入或在本地創建)。 如果系統維護工作流程實例的持久狀態,則必須在執行此作業期間保存工作流程實例。 |
合約 IWorkflowInstanceManagement 不提供建立新工作流程實例的方法,只會管理現有的工作流程實例。 如需遠端建立新工作流程實例的詳細資訊,請參閱 工作流程服務主機擴充性。
工作流程控制端點
WorkflowControlEndpoint 是具有固定合約的標準端點, IWorkflowInstanceManagement。 新增至 WorkflowServiceHost 實例時,此端點接著可用來將命令作業傳送至主機實例所裝載的任何工作流程實例。 如需標準端點的詳細資訊,請參閱 標準端點。
工作流程控制客戶端
WorkflowControlClient 是一個類別,讓您可以將控制訊息傳送到 WorkflowControlEndpoint 上的 WorkflowServiceHost。 它包含合約所支援 IWorkflowInstanceManagement 之每個作業的方法,但交易作業除外。 WorkflowControlClient 會使用環境交易來決定是否執行交易操作。