2009-08-25 5 views
0

안녕하세요, 저는 Windows WorkFlow Foundation을 사용하여 지속성 활동을 처리하는 WinForms를 만들었습니다. .NET 3.0 SQL과 VS2005를 IDE로서 C#으로 코드 언어로 사용하고 있습니다. 또한 환경은 개발을위한 기업 정책에 의해 저에게 위임되었습니다. 따라서 공룡이 업그레이드하기 전까지는 VS2005가 붙어 있습니다.상태 시스템 지속성 작업 흐름

내 probelm은 한 번에 하나의 워크 플로로 작업 할 수 있으며 여러 워크 플로를 처리 할 수 ​​있기를 원합니다. 양식에서 제출 단추를 클릭 할 때와 마찬가지로 새 WorkFlow 인스턴스를 만들 수 있습니다.

런타임을 생성하고 모든 적절한 서비스를 추가했습니다. 지속성을 유지하고 Submit를 클릭하면 WorkFlow 인스턴스가 시작됩니다. 저는 WorkFlow Foundation에 비교적 익숙하지 않았으며 MSDN 링크는 저에게 도움이되지 않았습니다. 누군가 내 소스 코드 내에서 올바른 방향으로 나를 넣을 수 있다면 도움이 될 것입니다.

내 프로젝트의 소스에 대한 링크를 첨부했습니다. 사전에

Click Here for the Source

감사합니다!

답변

0

내가 한 번 보았고 제출을 클릭 할 때마다 새 워크 플로가 만들어지는 것으로 보입니다. 새로운 인스턴스 ID를 얻습니다. PopulatePSUP (문자열 instanceID)은 드롭 다운의 인스턴스 ID를 캡처합니다. 그러나 Guid _instanceID에 한 번에 하나의 인스턴스 ID 만 저장하고 있습니다. 이 폼 레벨 변수는 모든 버튼 이벤트에 사용됩니다. 안심하고 cboPSUPItems.Text를 사용할 수 있습니다. 같은

뭔가 :

private void btnPSUPApprove_Click(object sender, EventArgs e) 
    { 
     string instanceId = this.cboPSUPItems.Text; 

     if (instanceId.Length > 0) 
     { 
      myArgs.Approved = true; 
      approved = "Yes"; 
      this.resumeHistory[ instanceId ].Clear(); 
      this.resumeHistory[ instanceId ].Add("Name: " + applicantName); 
      this.resumeHistory[ instanceId ].Add("Email:" + applicantEmail); 
      this.resumeHistory[ instanceId ].Add("Text:" + applicantText); 
      this.resumeHistory[ instanceId ].Add("Approved:" + approved); 
      this.resumeHistory[ instanceId ].Add("Denied:" + denied); 
      this.resumeHistory[ instanceId ].Add("PD Approval Requested:" + pDRequest); 
      resumeService.RaisePSUPApprovedEvent(new Guid(instanceId) , myArgs); 
      this.cboPSUPItems.Items.Remove(this.cboPSUPItems.SelectedItem); 
      txtPSUPNotes.Clear(); 
     } 
    } 

당신은뿐만 아니라에 instanceIds를 저장하기 위해 수집/목록을 사용하여 생각 할 수 있습니다. 워크 플로우 와이드 로직. 같은

뭔가 : 응답 마크에 대한

List<Guid> _instanceIds = new List<Guid>(); 

... 

_instanceIds.Add(instance.InstanceId); 
+0

봐 주셔서 감사합니다. WorkFlow Foundation에 익숙해지기 위해 이것을 테스트 응용 프로그램으로 사용하고 있습니다. 내가 한 일을 살펴본 후에 네 말이 맞다. _instaneID 변수를 사용하여 제거하고 각 후속 이벤트를 발생시키는 드롭 다운 텍스트를 전달합니다. 내가 궁금해하는 점은 데이터베이스에서 기존 워크 플로를 가져 와서 정보를 채우는 방법은 무엇입니까? 각 이벤트를 처리하고 데이터를 데이터베이스에 저장하는 것을 고려하고 있습니다. 그런 일이 가능한가? – AProgrammer

+0

물론입니다. 특정 워크 플로가 어떤 상태인지 파악하는 것이 문제라고 생각합니다. 워크 플로 상태는 이진 필드에 일련 화 된 데이터로 유지되므로 어떤 ID가 어떤 상태에 속해 있는지 확인할 수 없습니다. 외부에서 추적하는 것이 가장 쉽습니다. 이 게시물은 지속성에 대한 간단한 개요를 제공하며 시작하기에 좋은 장소입니다. http://blogs.msdn.com/kaevans/archive/2008/12/09/understanding-persistence-in-windows-workflow- foundation.aspx – MarcLawrence