4

我想解耦MVC網頁以及它們的顯示順序。一般來說,我認爲這些是我需要解決的情況,但我很多都被鎖定在特定的思考方式中。我只想找到一個模式或一個對象來協助控制流量。在MVC3中使用Workflow Foundation處理頁面流(如在嚮導中)

示例頁面排序:

  • 僅向前:用戶只可以向前發展,雖然工作流程,直到完成。
    - 特殊情況:如果用戶導航到,或手工無效的URL進入,則系統應當作出相應的反應(重定向到當前步驟)

  • 前進 - 後退(只讀):用戶可能進展通過嚮導,但後退按鈕允許以前數據的只讀視圖。

  • 前進 - 後退(讀寫):用戶可以返回並更新以前條目中的數據。這可能會導致工作流程重置爲先前狀態。

對於那些時候,用戶可以進入一個以上的「有效狀態」,上述前概念應該適應的是(比如在一個狀態機)

問:

我將如何在MVC3/WF4應用程序中實現此頁面控制流程?

enter image description here

+0

你提的問題是過於籠統。它可能需要整本書來回答。您將不得不縮小範圍,以便它變成*可回答*。 –

+0

我有一個非常複雜,需要在ASP.NET(MVC?)中處理的長時間運行的進程。這是我在看WF的主要原因 – LamonteCristo

回答

3

我探索了這個想法。在我看來,如果您的流程需要很長時間(如天),Workflow Foundation將是值得的。否則,您會發現編寫某種自定義代碼(如狀態機)比嘗試合​​並Workflow Foundation更容易。

不過,如果你正在尋找的例子,這裏有一個: http://code.msdn.microsoft.com/Windows-Workflow-233b5e3c/sourcecode?fileId=22211&pathId=1790082120

+0

是的,我沒有真正看到WF的價值,除非它是一個複雜的流程和/或可能需要很長時間。正如你所指出的那樣,完成相同事情的自定義類將非常簡單,並且沒有WF開銷。 – GalacticCowboy

+1

@GalacticCowboy爲此的值是單元測試頁面流邏輯,這是我的應用程序的重要組成部分。 – LamonteCristo

4

我們自己考慮類似的對你的提議的架構。 MVC部分主要是使用Llblgen Pro +自定義ASP.Net模板自動生成代碼,因此,我們希望從其他位置控制業務邏輯(和頁面工作流)。

我們仍在研究最終決定,而WF 4.0是一個候選人(因爲創建可重用活動的庫非常容易),但無狀態狀態機似乎是一種更簡單的方法,更容易維護。 我們已經有一個ORM生成的持久層,因此,在將來恢復暫停工作流的狀態並不是什麼大事。 看看Stateless,讓我們知道它是否合適。

爲例進行說明:http://blogs.msdn.com/b/nblumhardt/archive/2009/04/16/state-machines-in-domain-models.aspx

現實化VS 2010代碼示例:https://github.com/haf/Stateless

+0

歡迎來到Stackoverflow!我會在幾周內查看您的代碼,但是感謝您分享此代碼! – LamonteCristo

相關問題