0

カスタム追跡システムでWF4.5を使用しています。追跡システムは、カスタムデータベースにタスクレコードを作成します。追跡参加者は、Receiveアクティビティが「Executing」状態になるたびにデータベースにタスクを作成します。追跡担当者は、Receiveアクティビティが「クローズ」状態になるたびに、データベースでタスクを完了としてマークします。

タスクを完了するとき、タスクを実行したユーザーを入力する必要があります。receiveアクティビティには、ユーザープロパティ(コンテンツパラメータ)を含むカスタムクラスがあります。追跡参加者からこのユーザープロパティを取得したいと思います。

どうすればこれを行うことができますか?

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 に答える