我使用Windows工作流基金爲處理嚮導的許多步驟,並且每步完成後,工作流持久並控制回用戶的新步驟,在某些情況下可能是用戶未完成嚮導的所有步驟,在這種情況下,我想終止未完成的嚮導,爲此我想使用超時時間,但我不知道如何與工作流做到這一點。終止持續工作時間在特定時間後
另一個問題是我想爲每個工作流實例設置userId或當前用戶的用戶名,但我不知道這是怎麼做的,請指導我,tnx;
我使用Windows工作流基金爲處理嚮導的許多步驟,並且每步完成後,工作流持久並控制回用戶的新步驟,在某些情況下可能是用戶未完成嚮導的所有步驟,在這種情況下,我想終止未完成的嚮導,爲此我想使用超時時間,但我不知道如何與工作流做到這一點。終止持續工作時間在特定時間後
另一個問題是我想爲每個工作流實例設置userId或當前用戶的用戶名,但我不知道這是怎麼做的,請指導我,tnx;
您取消或終止工作流程外部的工作流程。您在創建WorkflowApplication的級別上完成這項工作。
假設你開始你的工作流程是這樣的應用程序:
WorkflowApplication _wfApp = new WorkflowApplication(new YourWorkFlow(), inParams);
_wfApp.Run();
然後,你必須到WorkflowApplication爲wfApp參考。
因此,您可以設置計時器,然後在計時器觸發時使用參考來終止工作流程。
Thread.Sleep(TimeSpan.FromSeconds(1));
wfApp.Terminate(new ApplicationException("Terminating the workflow."));
您可以通過捕獲工作流完成事件來檢測終止。
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{ Do your clean up code here }
見http://msdn.microsoft.com/en-us/library/dd781832(v=vs.110).aspx
至於你的第二個問題,你問如何傳遞當前用戶的用戶ID或用戶名到工作流在啓動時?
如果是,則創建一個包含要使用的參數的字典,並在運行工作流之前將其傳遞到WorkflowApplication對象。
IDictionary<string, object> inParams = new Dictionary<string, string>
{
{"UserID", "12345678" },
{"UserName", "Bob" }
};
WorkflowApplication _wfApp = new WorkflowApplication(new YourWorkFlow(), inParams);
_wfApp.Run();
您必須設置您的工作流程,使其具有名爲UserID和UserName類型爲字符串的參數。你不需要總是使用字符串。你可以傳入你想要的任何類型。
在我的應用程序中可能是用戶開始流程,並且在persist flow usernot complete flow之後並且這是數據庫中的垃圾,如果可能在一段時間後(超時時間)刪除數據庫中的持久流動行 –
您的第一條評論過於模糊不清。對於你的第二個評論:當你終止一個工作流時,持久性記錄會自動從持久性數據庫 – Richard210363
tnx中刪除,但我想在同一時間後自動刪除工作流持久化記錄,但尚未完成ی,我不知道工作流是否有此可行性 –