2

我想使用 WF 4 作为我项目的工作流引擎。我使用 WF 的活动是长期运行的(可能会持续数周或数月),因此我希望它使用持久性存储。我还想利用持久的延迟,以便我可以在事后几天发送通知。我的所有研究都为我指明了使用 IIS 中托管的工作流服务和 AppFabric 的方向。

我在本地机器上测试了这个场景,效果很好。我的工作流程持续存在,我的延迟在我想要的时候就开始了。我有一个问题:我公司定义的架构不允许服务层(IIS 中托管的 WCF 服务)直接与数据库层对话。我认为解决这个问题的一个好选择是编写一个自定义实例存储,该存储将通过数据访问层将调用路由到持久性数据库。我可以找到大量通过代码实现自定义实例存储的示例(即,workflowApplication.InstanceStore = customInstanceStore)。但是,启用 WCF 的服务没有代码,我找不到任何可以让我通过 web.config 配置持久性存储的示例。

启用 WCF 的工作流主机是否必须使用直接与数据库对话的内置 SQL 实例存储?

4

1 回答 1

1

我的所有研究都为我指明了使用 IIS 中托管的工作流服务和 AppFabric 的方向。

这才是正确的下坡路。IIS 为 WCF 端点提供服务,而 AppFabric 安装管理持久性、延迟和监视。

启用 WCF 的工作流主机是否必须使用直接与数据库对话的内置 SQL 实例存储?

一点也不,实际上您应该做的就是将您的持久性存储类型替换为您在Web.config. 因此,在下面的代码片段中,您会看到SqlWorkflowInstanceStore-behavior将您的类型放在它的位置。您的类型可能会收到一些自定义属性,例如 ,connectionString因此您需要对其进行配置。

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name=”myBehavior”&gt;
          <SqlWorkflowInstanceStore connectionString=”Data Source=myDatatbaseServer;Initial Catalog=myPersistenceDatabase”&gt;
        </behavior>
      </serviceBehaviors>
    <behaviors>
  </system.serviceModel>
</configuration>
于 2012-08-18T03:14:58.937 回答