2

工作流服务使用Receive活动来使用用户输入。Workflow使用 Workflow 中嵌入的业务逻辑从调用者获取数据时做一些工作。这听起来不错,但有一个例外。呼叫者如何知道下一个工作流程步骤应该是什么?

例如我们有文件处理Workflow。文档到达系统时会创建新的工作流实例。

创建后,文档可以由不同的经理进行验证,发送附加信息请求,查看,关闭,取消,合并等。可能操作的顺序存储在工作流中。Receive操作在工作流之外执行,并通过几个已发布的活动与工作流通信。这些操作的顺序Receive在 Workflow 内部(实际上就是 Workflow)。

逻辑可能因部门而异。所以我们不想在我们的工作流程之外对其进行硬编码。

现在文档处理处于以下状态:

  1. 执行了以前Receive的活动
  2. Workflow做了一些工作,现在坚持
  3. Receive如果用户执行某些操作并调用下一个活动,则可以唤醒工作流

问题是外部代码如何知道该操作是什么以及Receive应该调用哪个端点正在等待?

有什么简单的方法可以询问 Workflow 在 GUI 中使用该信息的后续步骤是什么?

4

1 回答 1

1

这是 Ron Jacobs 的一篇博客文章,它将引导您完成 WF 4 的扩展注册 - 这将为您提供构建所需内容所需的基础。

http://blogs.msdn.com/b/rjacobs/archive/2012/05/06/extending-asp-net-mvc-account-registration-with-workflow-wf4.aspx

编辑以更好地解决“了解下一个状态”的问题。

好的,不会有查询工作流的方法,主要原因是工作流服务在 WSH 上运行,当它遇到新书签时,它处于空闲状态(你永远不知道它真正在哪里运行)。因此,最好的办法是在空闲之前发布该信息,我建议通过回复将其发布给调用者,因为那是 UX 响应的理想时间。

编辑以提供可能是您正在寻找的“魔法”的链接。

这是@RonJacobs 在第 9 频道上的一个视频——这个人真的很棒,因为他为开发人员努力工作——我认为这可能是你正在寻找的魔法。但是,它可能需要您更新正在使用的版本,但也可能不需要。如果您还没有,您可能还需要获取 Microsoft.Activities.Extensions NuGet 包。我已经将他的自定义跟踪机制用于单元测试,但不是为了这个。让我知道你发现了什么!

http://channel9.msdn.com/Shows/Workflow-TV/Workflow-TV-Tracking-StateMachines

于 2012-06-14T04:16:15.487 回答