2011-08-22 71 views
0

假設我有一個Web應用程序,並且在一個頁面中我需要上傳文檔。然後將文檔轉換爲其他內容,然後用戶可以看到轉換後的文檔。加載工作流實例

我想要一個具有4個狀態的工作流程。

  1. 上傳
  2. 轉換被
  3. 轉換

所以,現在的用戶進來,創建文檔記錄和上傳文件。

在這一點上,他們將需要採取一個儀表板,告訴他們文件正在轉換。他們可能會註銷並稍後再回來。

一旦文件被轉換,他們將被允許進入下一個查看文件的步驟。

我可以很容易地創建一個具有這些狀態的工作流,並根據標記對文檔記錄執行所有狀態的檢查和設置。

我很想念的是,如果用戶註銷並返回,我如何獲取該上傳文檔的工作流並檢查其在工作流中的狀態?

我只有這個;

WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowProject1.Workflow1), parms); 

instance.Start(); 

其中params是文檔ID。當我回到我的應用程序中時,如何獲取此文檔的工作流實例並檢查它是當前的步驟?

任何鏈接到簡單的WWF示例/示例網站將不勝感激。

實際上是否有更好的方法呢?

此外,一旦我加載了工作流,我該如何檢查其當前步驟或活動?

回答

0

一種方式可以在這篇文章中所描述的:http://ajdotnet.wordpress.com/2007/09/30/workflow-instance-state-management/

從本質上講,你堅持工作流狀態到數據庫表(持久性是通過工作流程管理)和Web應用程序從數據庫中直接讀取狀態。這實際上是我更喜歡的簡單方法,因爲狀態信息在工作流實例之外是可用的。

另一種方法是使用持久性服務(例如SqlWorkflowPersistenceService)將工作流狀態保存到數據庫中。持久性由持久性服務管理,工作流忽略了這一事實。您使用工作流實例的Load方法來獲取加載的狀態(並且Unload用於保存)。然而,調用這些方法的所有膠合邏輯都將放在aspx頁面中。我的方法問題是你有做同步邏輯(如果需要)和讀取狀態信息,你必須加載到工作流實例。