工作流启用对sql的持久化

1.找到%WINDIR%\Microsoft.NET\Framework\v4.xxx\SQL\EN 中的脚本。

2.在数据库中先执行1中找到的SqlWorkflowInstanceStoreSchema.sql 文件,然后运行 SqlWorkflowInstanceStoreLogic.sql 文件。创建持久性数据库。

3.程序集添加  System.Activites.DurableInstancing.dll 及System.Runtime.DurableInstancing.dll的引用

4.构造一个 SqlWorkflowInstanceStore,并将其分配给 WorkflowApplication 的InstanceStore

(第8行--29行的是工作流常用设置 可以不用写)

 1       WorkflowApplication wfApp = new WorkflowApplication(new WFDemoActivity());
 2 
 3             // 处于空闲状态时 保留之前状态并卸载工作流
 4             wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e2)
 5             {
 6                 return PersistableIdleAction.Unload;
 7             };
 8             ////发生异常时 结束工作流
 9             //wfApp.OnUnhandledException += a =>
10             //{
11             //    Console.WriteLine("工作流异常");
12             //    //结束工作流
13             //    return UnhandledExceptionAction.Terminate;
14             //};
15             ////工作流被卸载时调用的动作
16             //wfApp.Unloaded += a =>
17             //{
18             //    Console.WriteLine("工作流已被卸载");
19             //};
20             ////空闲状态调用的动作
21             //wfApp.Idle += a =>
22             //{
23             //    Console.WriteLine("工作流停下来了...");
24             //};
25             ////终止工作流时调用的动作
26             //wfApp.Aborted += a =>
27             //{ 
28             //    Console.WriteLine("工作流已被终止");
29             //};
30             //可以保存状态信息的抽象类
31             System.Activities.DurableInstancing.SqlWorkflowInstanceStore store =
32     new SqlWorkflowInstanceStore("Server=.;uid=sa;pwd=*****;database=DATABASEName");
33             //提供当前实例访问状态 (设置为可以保存状态)
34             wfApp.InstanceStore = store;
35             //WorkflowInvoker.Invoke(new WFDemoActivity());
36             wfApp.Run();
37             //将wf自动分配的id记录下来
38             this.txtWFID.Text = wfApp.Id.ToString();
39             //复制到粘贴板
40             Clipboard.SetText(this.txtWFID.Text);

5.调用继续工作流的方法

1             //从数据库中加载当前工作流实例的状态。text为上文的wfapp的自动分配的id
2             wfApp.Load(Guid.Parse(this.txtWFID.Text));

 

posted @ 2015-10-10 15:36  绯叶阿卡丽  阅读(253)  评论(0编辑  收藏  举报