2010-04-05 39 views
3

這看起來像一個簡單的問題:我有一個WF4活動,引導用戶完成一組問題。顯示每個問題後,活動應閒置直到問題得到解答。每個問題得到解答後,我想提示用戶提出下一個問題。 (下一個問題根據上一個問題的答案確定。)WF4:空閒時獲取參數/變量信息

爲此,我有一個簡單的工作流程活動來實現書籤。我有一個控制檯應用程序使用WorkflowApplication.Run運行工作流,等待輸入,然後調用.ResumeBookmark。

我需要做的是在工作流程閒置時從Current_Question_Text中獲取值。我已經將WorkflowApplication.Idle屬性設置爲委託,並且在該委託中,我想要獲取存儲在活動中的當前問題的文本。但是,直到Completed方法觸發並且WorkflowApplicationIdleEventArgs不提供有關數據當前狀態的任何信息之後,輸出參數纔可用。

我也看過空閒委託中的Activity和WorkflowApplication變量,並且看不到以任何方式獲取數據的方式。

無論如何從活動中獲取數據值時,它是空閒?

謝謝, 大衛Burgett

回答

5

有幾個方法可以做到這一點。最好的取決於具體情況。

  1. 將變量顯式保存到某個外部位置,如數據庫,並讓客戶端從此處讀取它。使用自定義活動很容易,但會給應用程序增加另一個斷開連接。
  2. 使用工作流持久性和屬性提升來提取值並將其存儲在工作流實例存儲中。提升的屬性不是最好的工作,它需要使用WorkflowInstanceStore。此外,該值僅在工作流程持續時更新。
  3. 使用自定義工作流跟蹤擴展並使用ActivityStateQuery提取值。我懷疑這將是採取很多案件的最簡單的方法。
+0

謝謝Maurice!選項3正是我期待的! 我創建了一個自定義跟蹤擴展,當我的活動閒置時觸發。然後它會拋出一個我的應用程序處理的事件,用下一個問題的文本更新UI。完善! – dburgett 2010-04-08 18:35:40

+0

你能解釋你是如何做到的嗎?我也試圖做同樣的事情。無法理解這個概念。 – 2016-03-18 17:17:15