2012-10-09 74 views
1

我正在嘗試創建託管在IIS中的狀態機工作流的原型。客戶端是一個Web表單應用程序。恢復託管在工作流服務中的狀態機工作流

我想要實現的是長期運行的「嚮導」風格的過程,堅持到數據庫。狀態機工作流程基本上根據工作流程的狀態來控制當前的Web表單頁面。

我想知道如何找到當前狀態名稱以「恢復」工作流程的一個實例。想象一下,有人正在通過嚮導程序的一半,然後決定停下來,稍後再回來完成。

我發現了一種解決方案,即將當前狀態名稱存儲在數據庫中,並與工作流實例相關聯的字段;然而,這對我來說並不是一個優雅的解決方案。當然,有一種簡單的方法可以使用Workflow Services來確定工作流實例的當前狀態?

謝謝你們,非常感謝你們的幫助!

回答

0

沒有這樣做的標準方式。基本方法是使用TrackingParticipant並跟蹤事件。請參閱this example作爲起點。

+0

嗨,莫里斯,非常感謝您的幫助。我已經從您提供的鏈接實施了狀態機跟蹤器。這將狀態添加到XML格式的InstancePromotedPropertiesTable中。我想寫一個與上面類似的TrackingParticipant,它只將CurrentState名稱寫入我選擇的表中。你知道我有沒有辦法做到這一點?我曾嘗試創建自己的TrackingParticipant;但是,我無法從TrackingRecord對象中找到狀態機數據。我曾嘗試投射到各種派生類,但沒有運氣。謝謝你的時間。 – zunkie

+0

你可以在這裏找到源代碼:http://www.symbolsource.org/Public/Metadata/NuGet/Project/Microsoft.Activities.UnitTesting/2.0.3.9/Release/.NETFramework,Version%3Dv4.0.1/Microsoft。 Activities.Extensions/Microsoft.Activities.Extensions/Tracking/StateMachineStateTracker.cs?ImageName = Microsoft.Activities.Extensions – Maurice

+0

當前狀態是[StateMachineStateRecord.StateName](http://msdn.microsoft.com/en-us/library/ system.activities.statements.tracking.statemachinestaterecord.statename.aspx) – Maurice

相關問題