C# WF4的WorkflowServiceHost的替代方案?
我们希望用WF4工作流取代我们业务逻辑的一部分。C# WF4的WorkflowServiceHost的替代方案?,c#,.net,workflow-foundation-4,C#,.net,Workflow Foundation 4,我们希望用WF4工作流取代我们业务逻辑的一部分。 它们都是非常典型的工作流:用户操作创建实例、数据库工作、下一个用户确认等 我们对工作流主机的要求如下: 从存储在数据库中的XAML定义创建工作流(DynamicActivity) 支持不同版本上的工作流 支持基于长时间的事件(我们目前知道5天后会有通知,30天后会回滚工作流) 支持多个工作流的多个实例(我们已经确定了10个工作流,其中大约4000个正在运行,其中只有少数几个在同一时间进行处理) 重新启动服务后保留所有状态(包括基于时间的事件) 对
它们都是非常典型的工作流:用户操作创建实例、数据库工作、下一个用户确认等 我们对工作流主机的要求如下:
我已经使用WorkflowApplication实例解决了#1问题,但这依赖于使用书签来恢复每个输入事件,我不相信WorkflowApplication能够在不卸载空闲工作流的情况下扩展到我们的需要,这会破坏延迟活动 那么,如果你一直和我在一起的话:
- 有没有一种方法可以通过使用WSH来实现所有这些,或者在默认项目中,或者通过自己实现其中的一部分
- 我们是否最好编写自己的“DurableDelay”活动,记录真实唤醒时间并卸载工作流,以便主机进程恢复,因为卸载和重新加载工作流的持续时间很长,并且可能需要卸载和重新加载工作流
- 如果WSH不打算这样做,是否有现有的替代方案
最后,对于#6,假设您坚持使用.NET 4.0,您可以看看。我正在开发相同类型的工作流 我还首先介绍了工作流服务,但由于我们的工作流完全集成在业务层中,我不想使用WCF访问工作流。
因此,我现在使用WorkflowApplication作为主机,以便可以实例化和操作主机。
最大的问题是恢复使用延迟活动的工作流(您需要在数据库中检查自己)谢谢。对于#2(“每个工作流定义版本都有一个不同的工作流服务”),我将对此进行研究。理想情况下,我们希望每个工作流类型有一个服务,通过路由完成版本控制;不确定这是如何与AppFabric一起工作的,所以我将检查这两个选项。我还要看看AppFabric对我们来说是否是一个可行的选择,因为安装任何东西都是一场噩梦。我只是想跟进一下,我们最终构建了自己的运行时。实际上,它是一个Workflow应用程序池,在处于非活动状态5秒后卸载。有一个简单的调度器,用于监视现有工作流的预期唤醒时间,并在预期唤醒时间之前将其加载到WorkflowApplication实例中。花了几天时间,但它很轻,而且完全符合我们的需要。此外,我们在几秒钟内将其旋转到10个盒子上,并实现了自动负载平衡(您不能在多个主机中拥有单个工作流)。