在MVC3中使用Workflow Foundation来处理页面流(如在向导中)

时间:2011-08-08 16:03:56

标签: asp.net-mvc asp.net-mvc-3 workflow-foundation workflow-foundation-4

我想要分离MVC网页及其显示顺序。一般来说,我认为这些是我需要解决的问题,但我很多时候都陷入了一种特定的思维方式。我只是想找到一个有助于控制流动的模式或对象。

示例页面排序:

  • 仅转发:用户只能通过工作流程前进,直到完成 - 特殊情况:如果用户导航到或手动输入无效的URL,则系统应相应地做出响应(重定向到当前步骤)

  • 前进 - 后退(只读):用户可以通过向导进行操作,但后退按钮允许以前数据的只读视图。

  • 前进 - 后退(读写):用户可以返回并更新先前条目中的数据。这可能会导致工作流程重置为先前状态。

对于用户可能进入多个“有效状态”的那些时间,上面的前向概念应该适应(例如在状态机中)

问题:

如何在MVC3 / WF4应用程序中实现此页面控制流程?

enter image description here

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

我探索了这个想法。在我看来,如果你的过程需要很长时间(比如几天),Workflow Foundation将是值得的。

否则,您会发现编写某种自定义代码(如状态机)比尝试合​​并Workflow Foundation要简单得多。

但是,如果您正在寻找示例,请参阅以下示例: http://code.msdn.microsoft.com/Windows-Workflow-233b5e3c/sourcecode?fileId=22211&pathId=1790082120