WF 4.x接收活动 - TrackingParticipant&如何获取内容参数

时间:2013-03-21 12:53:08

标签: workflow-foundation-4

我正在使用WF 4.5和自定义跟踪系统。 跟踪系统将在自定义数据库中创建任务记录。 只要Receive活动进入“Executing”状态,跟踪参与者就会在数据库中创建任务。 只要接收活动进入“已关闭”状态,跟踪参与者就会将任务标记为已完成。

完成任务后,我需要填写执行任务的用户。 receive活动将有一个自定义类,其中包含用户属性(content parameter)。 我想从跟踪参与者那里获取此用户属性。

我该怎么做?

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

1 个答案:

答案 0 :(得分:0)

就像你跟踪你想跟踪参数的状态和变量一样。

在您的特定情况下,您将跟踪保存所需用户的InArgument<string>

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

现在您可以获得ActivityStateRecord上提供的 UserArgument

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