您好,登錄后才能下訂單哦!
這篇文章主要介紹“ASP.NET工作流的創建與啟動方法”,在日常操作中,相信很多人在ASP.NET工作流的創建與啟動方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET工作流的創建與啟動方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創建 Windows Workflow Foundation 是為了在不同的宿主應用程序環境中運行。 ASP.NET Web 窗體就是一種這樣的支持環境。 但是,當為 Windows Workflow Foundation 創建基于 Web 的宿主應用程序時,必須設計宿主基礎結構以解決 ASP.NET 應用程序和傳統 Windows 窗體應用程序之間的關鍵體系結構差異。 例如,ASP.NET 應用程序可以同時為多個同步的用戶提供服務。 在這種服務器環境中,應用程序的設計方式必須有效地利用可用的系統內存。 這些情況下,Windows Workflow Foundation 提供卸載工作流實例的 SqlWorkflowPersistenceService 服務。 另外,ASP.NET 在收到請求時會發出響應。 默認情況下,工作流運行時以異步方式執行工作流。 因此,可能會在工作流完成之前呈現頁面和發送響應。 為了避免這種情況,Windows Workflow Foundation 提供 ManualWorkflowSchedulerService 服務以便同步運行工作流。 這使您的 Web 窗體能夠將工作流狀態信息返回給用戶。
ASP.NET工作流的創建:創建 WorkflowRuntime 對象
使用 ASP.NET 中的 Global.asax 文件可以處理與開始和結束 Web 應用程序時引發的各個 Web 會話或事件相關的 Web 窗體事件。 ASP.NET 中的 Session 對象是為每個請求 Web 頁的用戶創建的,Application 對象是在每個會話中共享的單個對象。 下面的示例演示如何處理 Application_Start 事件以創建 WorkflowRuntime 實例和添加 ManualWorkflowSchedulerService。 完成此操作后,通過使用 StartRuntime 方法啟動運行時,您可以將 WorkflowRuntime 實例保存到隨 ASP.NET 一起提供的 Application 對象中。 在以后對應用程序中 Web 頁的請求中,您可以檢索此單個 WorkflowRuntime 實例以啟動工作流。
void Application_Start(object sender, EventArgs e) { System.Workflow.Runtime.WorkflowRuntime workflowRuntime = new System.Workflow.Runtime.WorkflowRuntime(); System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService manualService = new System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService(); workflowRuntime.AddService(manualService); workflowRuntime.StartRuntime(); Application["WorkflowRuntime"] = workflowRuntime; }
當應用程序完成時,ASP.NET 引發 Application_End 事件。 下面的代碼演示如何檢索在 Application_Start 事件期間創建的 WorkflowRuntime 對象,以便調用 StopRuntime 方法。
void Application_End(object sender, EventArgs e) { System.Workflow.Runtime.WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as System.Workflow.Runtime.WorkflowRuntime; workflowRuntime.StopRuntime(); }
ASP.NET工作流的啟動:在 ASP.NET Web 窗體中啟動工作流
在上一節中,在 Application_Start 事件期間創建了 WorkflowRuntime 實例。 在 Web 應用程序處理請求時,會一直保留此對象。 下面的代碼演示如何從 ASP.NET 中的 Application 對象中檢索 WorkflowRuntime 實例。 之后,使用 GetService 方法檢索用于啟動工作流的 ManualWorkflowSchedulerService,以便同步運行工作流。 為此,調用在 WorkflowRuntime 類中定義的 CreateWorkflow 方法,隨后調用從 CreateWorkflow 調用中返回的 WorkflowInstance 對象中的 Start 方法。 由于將 ManualWorkflowSchedulerService 添加到了 WorkflowRuntime,因此調用 RunWorkflow 方法,傳遞 WorkflowInstance 對象的 InstanceId。
protected void StartRuntime_Click(object sender, EventArgs e) { WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as WorkflowRuntime; ManualWorkflowSchedulerService manualScheduler = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService; WorkflowInstance instance = workflowRuntime.CreateWorkflow( typeof(ASPNetSequentialWorkflow)); instance.Start(); manualScheduler.RunWorkflow(instance.InstanceId); }
到此,關于“ASP.NET工作流的創建與啟動方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。