我想为我的WF4主机使用支持的WF4持久性,但到目前为止我还没有看到任何好的,简单的,简洁的例子。我希望有人可以提出样本,或者知道有这些类型示例的网站。
答案 0 :(得分:3)
打开SQL Server管理工作室并创建持久性数据库。
对于.Net 4.5 使用以下SQL脚本:%systemroot%\ Microsoft.NET \ Framework \ v4.0.30319 \ SQL \ en 按此顺序 SqlWorkflowInstanceStoreSchema.sql 和 SqlWorkflowInstanceStoreLogic.sql 。
请参阅:http://blogs.msdn.com/b/carlos/archive/2013/01/10/workflow-foundation-sql-scripts.aspx
然后打开Visual Studion并制作工作流并将其附加到WorkflowApplication
_workflowApplication = new WorkflowApplication(new International(), inParams);
其中International是工作流的名称(在这种情况下是XAML)
然后将持久性提供程序连接到WorkflowApplication:
InstanceStore persistanceStore = new
SqlWorkflowInstanceStore(_persistenceDataBaseConnection);
_workflowApplication.InstanceStore = persistanceStore;
其中_persistenceDataBaseConnection是SQL instence的连接字符串。
现在,当您运行工作流程(_workflowApplication.Run();
)时,持久性存储就可以使用了。
当您告诉它(使用Persist活动)或工作流等待/延迟时(如果您设置回调委托:例如
)它将保持工作流程 _workflowApplication.PersistableIdle = WorkflowApplicationPersistableIdle;
WorkflowApplicationPersistableIdle是您编写的方法。
您还应该在加载持久工作流时将工作流ID保存在某处以供使用(参见下文)
WorkFlowID = _workflowApplication.Id.ToString();
还有许多其他功能,但这些功能都是基础。
从Persistence商店加载工作流程:
制作相同类型的工作流应用程序:
_workflowApplication = new WorkflowApplication(new International(), inParams);
然后使用持久工作流的ID
加载它_workflowApplication.Load(_workflowID);