2013-03-21 35 views
0

我正在使用WF 4.5與自定義跟蹤系統。 跟蹤系統將在自定義數據庫中創建任務記錄。 只要Receive活動進入「Executing」狀態,跟蹤參與者就會在數據庫中創建一個任務。 只要接收活動進入「已關閉」狀態,跟蹤參與者將在數據庫中將任務標記爲已完成。WF 4.x接收活動 - TrackingParticipant以及如何獲取內容參數

完成任務時,我需要填寫執行任務的用戶。 接收活動將擁有一個帶有用戶屬性的自定義類(內容參數)。 我想從跟蹤參與者處獲得此用戶屬性。

我該如何解決這個問題?

public class WorkflowSystemTrackingParticipant : TrackingParticipant 
{ 
    protected override void Track(TrackingRecord record, TimeSpan timeout) 
    { 
      ActivityStateRecord aRecord = record as ActivityStateRecord; 
      ... // get the parameters values send to the receive activity 
    } 
} 

回答

0

就像你跟蹤狀態和變量你也想跟蹤參數。

在你的具體情況下,你會跟蹤InArgument<string>哪個持有你想要的用戶。

new ActivityStateQuery 
{ 
    Variables = { * }, 
    States = { "Executing", "Closed" }, 
    Arguments = { "UserArgument" } 
} 

現在,你可以得到ActivityStateRecordUserArgument這是可供選擇:

protected override void Track(TrackingRecord record, TimeSpan timeout) 
{ 
    var aRecord = record as ActivityStateRecord; 

    var userName = aRecord.Arguments["UserArgument"] as string; 

    // do whatever you want with 'username' 
} 
相關問題