2010-01-07 87 views
0

我正在使用Visual Studio 2010的Beta 2版本來學習使用WF4,並且遇到了持久性問題。在下面的代碼中,如果我使用WorkflowApplication對象的註釋創建,則持久性可以正常工作。如果我在下面使用未經評論的創作,在那裏我傳遞一個我想傳入的參數的字典,那麼持久性會中斷。任何想法,爲什麼這可能是,以及如何解決它?Windows Workflow Foundation 4.0和Persistence

 List<Approver> approversRequired = new List<Approver>(); 
     approversRequired.Add(new Approver("Dept Manager")); 
     approversRequired.Add(new Approver("Center Manager")); 

     Dictionary<String, Object> wfArguments = new Dictionary<string, object>(); 
     wfArguments.Add("ApproversRequired", approversRequired); 

     //WorkflowApplication workflowApp = new WorkflowApplication(
     // new WebCARSWorkflow()); 

     WorkflowApplication workflowApp = new WorkflowApplication(
      new WebCARSWorkflow(), wfArguments); 

     InstanceStore instanceStore = new SqlWorkflowInstanceStore(
      @"Data Source=.\SQLEXPRESS;Integrated Security=True;Initial Catalog=WorkflowInstanceStore"); 
     InstanceView view = instanceStore.Execute(
      instanceStore.CreateInstanceHandle(), new CreateWorkflowOwnerCommand(), 
      TimeSpan.FromSeconds(30)); 
     instanceStore.DefaultInstanceOwner = view.InstanceOwner; 

     workflowApp.InstanceStore = instanceStore; 

     workflowApp.PersistableIdle = (waie) => PersistableIdleAction.Unload; 

     workflowApp.Run(); 
     WorkflowGuid.Text = workflowApp.Id.ToString(); 

     workflowApp.ResumeBookmark("RequestSubmitted", "Submitted"); 

回答

3

是您通過Serializable或DataContract屬性裝飾的參數嗎?

可以persitence錯誤使用中止回調

  workflowApp.Aborted = e => Console.WriteLine(e.Reason); 
+0

我有類裝飾用[Serializable接口]看,但不知道DataContract,你可以給我上的更多信息? – 2010-01-11 14:37:53

+0

DataContract與WCF NetDataContractSerializer一起使用,WF4默認使用它將值保存到數據庫。這需要可序列化的類型。有兩種方法可以做到這一點,使用Serializable屬性很容易,所有私有字段都被序列化。另一種選擇是使用DataContract屬性,它可以完全控制需要序列化的內容以及完成操作的方式。 如果存在序列化錯誤,則WorklfowApplication.Aborted回調將爲您提供詳細信息。 – Maurice 2010-01-11 14:52:12

相關問題