2009-08-25 18 views
0

ちょっと、Windows WorkFlow Foundationを使用して永続性アクティビティを処理するWinFormsを作成しました。私はコード言語としてC#でIDEとして.NET 3.0のSQLとVS2005を使用しています。また、開発のための企業方針によって環境が私に義務付けられています。だから恐竜がアップグレードすることを決めるまで、私はVS2005に悩まされています。状態マシンの永続性WorkFlow

私の問題はこれです。私は一度に1つのワークフローで作業することができ、複数のワークフローを処理できるようにしたいと考えています。フォームの[送信]ボタンをクリックすると、新しいWorkFlowインスタンスを作成できます。

ランタイムを作成し、適切なサービスをすべて追加しました。私は永続性を確保し、SubmitをクリックするとWorkFlowのインスタンスが開始されます。私はWorkFlow Foundationには比較的新しく、MSDNのリンクは私にはほとんど役に立たなかった。誰かが私のソースコードの中で私を正しい方向に置くことができれば、それは助けになるでしょう。

私のプロジェクトのソースへのリンクを添付しました。事前に

Click Here for the Source

ありがとう!

答えて

0

私は一見して、あなたがsubmitをクリックするたびに新しいワークフローを作成しているように見えます。新しいインスタンスIDが得られます。PopulatePSUP(string instanceID)は、ドロップダウンのインスタンスIDを取得します。しかし、Guid _instanceIDに一度に1つのインスタンス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

関連する問題