我想使用WF 4作为我项目的工作流引擎。我正在使用WF的活动是长时间运行的(可能会持续几周或几个月),所以我希望它使用持久性存储。我还想利用持久的延迟,以便我可以在事后几天发送通知。我的所有研究都指出了我在使用AppFabric的IIS中托管的工作流服务的方向。
我在本地计算机上测试了这个场景,效果很好。我的工作流程仍然存在,而我的延迟开球时,我希望他们。我有一个问题:我公司定义的体系结构不允许服务层(IIS中托管的WCF服务)直接与数据库层通信。我认为解决这个问题的一个好方法是编写一个自定义实例存储,它将通过数据访问层将调用路由到持久性DB。我可以找到大量通过代码实现自定义实例存储的示例(即workflowApplication.InstanceStore = customInstanceStore)。但是,启用WCF的服务没有代码,我找不到任何允许我通过web.config配置持久性存储的示例。我尝试创建一个PersistenceProvider / PersistenceProviderFactory并通过web.config进行设置,但这是不允许的。
启用WCF的工作流主机是否必须使用直接与数据库对话的内置SQL实例存储?
答案 0 :(得分:1)
我的所有研究都指出了我在使用AppFabric的IIS中托管的工作流服务的方向。
这是正确的道路。 IIS提供WCF端点,AppFabric安装管理持久性,延迟和监视。
启用WCF的工作流主机是否必须使用直接与数据库对话的内置SQL实例存储?
完全没有,实际上您应该做的就是将您的持久性存储类型替换为您在Web.config
中常见的持久性存储类型。因此,在下面的代码段中,您会看到SqlWorkflowInstanceStore
中的behavior
- 将您的类型放在其位置。您的类型可能会收到一些自定义属性,例如connectionString
,因此您需要对其进行配置。
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name=”myBehavior”>
<SqlWorkflowInstanceStore connectionString=”Data Source=myDatatbaseServer;Initial Catalog=myPersistenceDatabase”>
</behavior>
</serviceBehaviors>
<behaviors>
</system.serviceModel>
</configuration>