0

How can I use a persistent workflow instance in an ASP.NET MVC 5 app? (Things like accessing ViewBag or choosing a View or AJAXing comes to mind).

Notes: I tried two books (full of errors with code samples that does not work; so gave up after some chapters) and a dozen of online materials (blog posts, etc) and yet far from being satisfied by what I got of this WF thing. Of-course it's far easier without employing persistence; but what good is that?

So I think I am missing an essential piece or maybe the whole picture.

4

1 回答 1

0

我们已经构建了工作流服务,它公开了 MVC 应用程序与之对话的 WCF 端点/合同。几乎服务契约的每个操作都映射到特定的 MVC 小部件。当我说小部件时,我的意思是某种形式的局部视图,只有在特定服务操作在状态机的特定状态下可用时才可见。

即“接受”服务/小部件仅在进程处于提交状态时可用。进程被构建为长期运行,这意味着持久性与计时器等一起使用,但这一切都需要我们使用 AppFabric 与 IIS 的集成。

这一切都是开箱即用的。问题是如何检测工作流的状态以及如何获得到其他状态的可能转换,这将决定 UI 上可用的小部件。

为此,我们必须构建自定义逻辑。

当 Workflow 被持久化时,在为持久化生成的默认表中,您可以找到有关可用Bookmarks的信息。如果服务调用可以触发状态转换,则书签具有服务/操作名称。

因此,我们构建了自定义探测服务,该服务将扫描持久性表并将书签列表返回给 MVC 应用程序,用于特定的工作流实例。

基于此,MVC 应用程序将呈现可用的小部件。

一旦使用了小部件,就会对 Workflow Service 进行服务调用,更改状态,持久化实例,将新书签存储到持久化表中,然后我们根据这些刷新 UI。

它是完全自定义的,但如果没有手动表扫描,我无法找到任何正确的答案。

于 2014-05-28T20:06:17.230 回答