2008-09-16 66 views
2

我有一個可重複的業務流程,每週執行一次,這是我配置管理職責的一部分。該過程不會改變:我將更改詳細信息下載到Excel中,打開電子表格並根據宏複製出詳細信息,從議程模板創建Word文檔,使用Excel數據更新議程,從Word文檔創建PDF,以及將它們發送出去。我應該在WF中使用狀態機還是序列工作流?

這個過程很容易在序列工作流程中表現出來,這就是我迄今爲止擁有的過程,使用COM自動化來自動處理Excel和Word部分。齒輪的問題在於,在「創建議程」和「發送出去」之間有一個人爲的步驟,其中我審查了變更細節並提出了有關它們的問題,這些問題已添加到議程中。我目前有一個Suspend活動來暫停工作流程,而我手動完成這一過程。

我的問題是,我應該重寫我的工作流程,使其成爲一個狀態機,以遵循業務流程中人爲交互的最佳實踐,或者暫停活動是一個合理的解決方案嗎?

回答

2

不,我不認爲你必須爲這個工作流使用狀態機。但是,我建議改變暫停活動,因爲:

的SuspendActivity活動 暫時停止 當前工作流的執行。通常,您使用 SuspendActivity活動到 反映 管理員需要注意 的錯誤條件。

當工作流程 實例掛起時,記錄的錯誤是 。您可以指定一條消息 字符串伴隨錯誤,以幫助 管理員診斷問題 與SuspendActivity錯誤 屬性。暫停的工作流程 實例仍然可以接收排隊的消息 ,直到重新啓動工作流程 。工作流程實例 的所有狀態 都會保存並在 實例恢復(使用恢復)時恢復。

來源:MSDN

用於在工作流添加人工任務的典型方法(任一序列或狀態機)是定義一個外部數據交換接口並使用一個HandleExternalEvent活動(以及可能的CallExternalMethod活動)。有關詳細信息,請參閱下面的文章:

+0

真棒,真棒的答案。非常感謝你。 – 2008-09-16 14:47:21

2

更新:帕諾斯使得一個好點約暫停活動。我同意它在工作流自動機中有不同的用途。

如果您覺得您更擔心各種狀態之間的工作流程轉換,那麼狀態機工作流程是最理想的。否則,序列就好了。

您應該嘗試解決的主要問題是,工作流程在等待人機交互(線程敏捷性)時不應綁定線程。如果工作流程在此期間閒置並持續存在(如使用SqlWorkflowPersistenceService),則應該不成問題。

相關問題