簡體   English   中英

狀態機持久性工作流

[英]State Machine Persistence WorkFlow

嘿,我創建了一個WinForms,用於使用Windows WorkFlow Foundation處理持久性活動。 我使用.NET 3.0 SQL和VS2005作為IDE,以C#作為代碼語言。 另外,公司的發展政策規定了環境對我的強制性。 因此,在恐龍決定升級之前,我一直堅持使用VS2005。

我的想法是,我一次可以處理1個工作流程,並且希望能夠處理多個工作流程。 就像我單擊表單上的Submit按鈕一樣,我希望能夠創建一個新的WorkFlow實例。

我創建了運行時,並添加了所有適當的服務。 我加入了持久性,當我單擊“提交”時,我啟動了WorkFlow的實例。 我是WorkFlow Foundation的新手,MSDN鏈接對我幾乎沒有幫助。 如果有人可以在我的源代碼中讓我處於正確的位置,那將很有幫助。

我已經為我的項目的源附加了一個鏈接。

單擊此處獲取源

提前致謝!

我看了一下,似乎每次單擊提交時您都在創建一個新的工作流。 我得到一個新的實例ID,這是一個好兆頭:) PopulatePSUP(string 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 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM