我正在使用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
}
}
答案 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'
}