2010-01-07 3 views
0

저는 Visual Studio 2010 베타 2 버전을 사용하여 WF4 사용법을 배우기 시작했습니다. 지속성 문제가 발생했습니다. 아래 코드에서 WorkflowApplication 객체의 주석 처리 된 깔개를 사용하면 지속성이 정상적으로 작동합니다. 아래에있는 주석 처리되지 않은 작성을 사용하면 전달하려는 인수에 대한 사전을 전달하면 지속성이 깨집니다. 이것이 어떤 이유 일 수 있으며 그것을 고치는 방법은 무엇입니까?Windows Workflow Foundation 4.0 및 지속성

 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 특성으로 장식 된 매개 변수로 전달합니까?

당신은 내가이 클래스는 [직렬화]로 장식 한 않는 중단 된 콜백

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

를 사용하여 오류 persitence 볼 수 있지만 DataContract에 대해 알고하지 않습니다, 당신은 내게 그에 대한 자세한 정보를 제공 할 수 있습니까? –

+0

DataContract는 WF4가 기본적으로 값을 데이터베이스에 저장하는 데 사용하는 WCF NetDataContractSerializer와 함께 사용됩니다. 이를 위해서는 유형을 직렬화 할 수 있어야합니다. 이렇게하는 데는 두 가지 방법이 있으며, 모든 비공개 필드가 직렬화되는 Serializable 특성을 사용하여 쉽게 사용할 수 있습니다. 다른 옵션은 DataContract 특성을 사용하는 것입니다.이 특성은 직렬화해야 할 대상과이 작업이 수행되는 방식을 완벽하게 제어합니다. 직렬화 오류가있는 경우 WorklfowApplication.Aborted 콜백에서 세부 정보를 제공합니다. – Maurice