2010-06-15 56 views
3

使用此MSDN Article作爲暫停和恢復的示例,可以假設這將非常簡單。這就是我在「暫停」工作流程...如何在暫停/堅持後正確加載工作流程?

LastWfGuid = workflow.Id; 
workflow.Unload(); 

很簡單,它應該堅持到實例存儲(我已經到這兩條線之前設置)和我看到的條目實例視圖和InstancesTable。當我準備重新開始工作流程我做到這一點...

workflow = new WorkflowApplication(myActivity, myWfArgs); 
workflow.InstanceStore = wfStore; 
workflow.Load(LastWfGuid); 

在這一點上,我得到一個InvalidOperationException與異常消息是...

Workflow inputs cannot be used with Load or LoadRunnableInstance, since they are only provided to new instances. 

如果我不能加載一個以前持續存在的工作流程,我該如何恢復它?我試圖簡單地計算Persist()代替Unload(),並從外面看它確實沒問題,我也沒有收到任何例外。但是,工作流程繼續運行,當然這不是我要找的。我想暫停然後恢復工作流程。

回答

3

創建用於加載現有工作流實例的WorkflowApplication時,除去myWfArgs參數。所以像這樣:

workflow = new WorkflowApplication(myActivity); 
workflow.InstanceStore = wfStore; 
workflow.Load(LastWfGuid); 
+0

只是出於好奇,這將如何解決我的負載問題?有什麼理由阻止簡歷? – jlafay 2010-06-15 15:42:59

+0

這很棒,因爲它可以滿足我需要的功能。它暫停並按需恢復。我採用這種方法的唯一問題是,如何在我的參數中傳遞我需要的或者它們在持續時是否爲狀態的一部分? – jlafay 2010-06-15 15:48:53

+1

在啓動過程中傳遞給工作流的所有數據以及當時在作用域中的變量將作爲工作流狀態的一部分保存並重新加載。 – Maurice 2010-06-15 19:36:22