0

我正在使用带有自定义跟踪系统的 WF 4.5。跟踪系统将在自定义数据库中创建任务记录。每当接收活动进入“执行”状态时,跟踪参与者将在数据库中创建一个任务。每当接收活动进入“关闭”状态时,跟踪参与者将在数据库中将任务标记为已完成。

完成任务时,我需要填写执行任务的用户。接收活动将有一个自定义类,其中包含用户属性(内容参数)。我想从跟踪参与者那里获取这个用户属性。

我该怎么做?

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
     }
}
4

1 回答 1

0

就像您跟踪状态和变量一样,您也想跟踪参数。

在您的特定情况下,您将跟踪InArgument<string>哪个持有您想要的用户。

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

现在您可以获得UserArgument,它在以下位置可用ActivityStateRecord

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'
}
于 2013-03-21T14:10:56.883 回答