none
WF4.0持久化恢复 RRS feed

  • 常规讨论

  • 	
     class Program
      {
        static void Main(string[] args)
        {
          var host = new WorkflowServiceHost(
            new DocumentReviewLib.DocumentReviewWorkflow(),
            new Uri("http://localhost:8080/DRS"));
    
          host.AddDefaultEndpoints();//这个方法是添加了一些标准的端点
    
          host.Description.Behaviors.Add(
            new ServiceMetadataBehavior() { HttpGetEnabled = true });
    
          host.AddServiceEndpoint(
            "IMetadataExchange",
            MetadataExchangeBindings.CreateMexHttpBinding(),
            "mex");
    
    
          var store = new SqlWorkflowInstanceStore(
            "server=(local)\\sqlexpress;database=WF4;integrated security=true");
          
          host.DurableInstancingOptions.InstanceStore = store;
    
          host.Open();
          Console.WriteLine("Server is ready.");
          Console.Read();
    
        }
      }
    }
    

    在网上的教程看到这段代码   使用后发现数据库确实有持久化存储的内容  但是如果关掉服务端   再次开启后   持久化无法恢复    而教程上面说的是

    当一个流程的请求被发送到服务端,WorkflowServiceHost会收到,它先在内存中查找看是否有合适的实例,如果没有,则会尝试查看数据库中是否有合适的实例,如果有,则会加载它。”

    但是我没有看到这样的效果    请问是代码的问题 还是其他问题呢 

    教程文章地址   点此进入

     

    2011年7月18日 2:49

全部回复

  • 就像陈老师说的一样 是可以自动回复  只不过我的电脑宿主关闭前必须得等待一分钟 不知道是不是参数设置的问题
    2011年7月20日 1:24
  • 关于持久化,我们是将创建的工作流写入xml,恢复时加载xml
    2011年7月20日 3:50
  • 额,如果你见运行的流程Id保存起来,是可以恢复的,将流程ID保存在xml或数据库中均可以,如果你想恢复的内容多些,最好保存在数据库中,这样从效率和数据量上来说还是很可观的

    2011年8月26日 2:43