Workflow ServiceHost Design - 从客户端恢复工作流程

时间:2011-07-19 21:18:22

标签: .net workflow-foundation workflow-foundation-4

我正在接触WF4,目前正在尝试一个简单的费用审批系统的概念验证设计。我想使用IIS中托管的WorkflowService来使Web客户端能够提交批准。我目前的设计如下(假设我们只是将一个expenseID和一个isApproved布尔值传递给Receive活动):

WF4 Expense Workflow http://i56.tinypic.com/esohno.jpg

我不清楚的一个方面是,客户端需要准确知道接下来要调用哪个Receive活动。要做到这一点,客户端需要准确知道工作流的位置(通过查询数据源),切换某种状态标志,并调用适当的Receive活动。但是在这样做的时候我肯定会绕过使用持久工作流程的重点吗?

可能只是我的设计是完全错误的,所以我欢迎任何关于如何最好地完成这项任务或改进设计的意见或指导。

1 个答案:

答案 0 :(得分:1)

您可以实现此结果,但您应该在服务合同中提供API文档,以尝试向您的客户明确此行为。服务的WSDL本身不会明确这一点。

关于实施,实现这一目标的唯一方法是在WF之外。这是因为当客户端尝试根据工作流程规则调用不允许调用的服务方法时,在加载工作流时将收到内容关联错误。

WF服务主机将无法加载持久的工作流实例,因此会抛出您需要在WCF IErrorHandler中捕获的错误。然后,您需要确定方案是什么,并将异常转换为客户可以理解的服务故障。

我刚才写了一篇博文,提供了一个如何运作的例子 - http://www.neovolve.com/post/2010/11/09/Managing-content-correlation-failures.aspx