1

wfが応答を待機し(ブックマークまたはアイドル状態)、完了していないときに、WorkflowApplicationを使用して引数にアクセスする

4

3 に答える 3

1

また、トラッキングを使用して値を取得しましたが、データベースに保存する代わりに、次の解決策を考え出しました。
Trackingparticipant を作成し、アクティビティからデータを収集します。特定の追跡クエリを使用して、追跡参加者プロファイルを微調整できます。レコードからデータの値を設定するために、パブリック プロパティ Output を追加しました。

public class CustomTrackingParticipant : TrackingParticipant
{
        //TODO: Fine tune the profile with the correct query.
        public IDictionary<String, object> Outputs { get; set; }
        protected override void Track(TrackingRecord record, TimeSpan timeout)
        {
            if (record != null)
            {
                if (record is CustomTrackingRecord)
                {
                    var customTrackingRecord = record as CustomTrackingRecord;
                    Outputs = customTrackingRecord.Data;
                }
            }
        }
    }

カスタム アクティビティでは、CustomTrackingRecord を使用して追跡用に公開する値を設定できます。ここにアイデアを与えるためのサンプルがあります。

protected override void Execute(NativeActivityContext context)
{
    var customRecord = new CustomTrackingRecord("QuestionActivityRecord");
    customRecord.Data.Add("Question", Question.Get(context));
    customRecord.Data.Add("Answers", Answers.Get(context).ToList());
    context.Track(customRecord);
    //This will create a bookmark with the display name and the workflow will go idle.
    context.CreateBookmark(DisplayName, Callback, BookmarkOptions.None);
}

WorklfowApplication インスタンスで、追跡参加者を拡張機能に追加できます。

workflowApplication.Extensions.Add(new CustomTrackingParticipant());

次のメソッドでサブスクライブした、workflowApplication インスタンスからの永続化可能なアイドル イベントで。メソッドでは、拡張機能から追跡参加者を取得します。パブリック プロパティに出力を設定したので、出力にアクセスして、ワークフロー外のメンバーに設定できます。次の例を参照してください。

private PersistableIdleAction PersistableIdle(WorkflowApplicationIdleEventArgs 
workflowApplicationIdleEventArgs)
{
    var ex = workflowApplicationIdleEventArgs.GetInstanceExtensions<CustomTrackingParticipant>();
    Outputs = ex.First().Outputs;
    return PersistableIdleAction.Unload;
}

この例がお役に立てば幸いです。

于 2013-08-22T20:26:40.733 に答える
0

さらに簡単: 別のワークフロー アクティビティを使用して、探している値をどこかに (データベース、ファイルなど) 保存してから、応答を待ちます。

于 2013-05-16T12:18:41.203 に答える