簡體   English   中英

wf等待響應(書簽或空閑)並且未完成時,如何退出Argument WorkflowApplication

[英]How to get outArgument WorkflowApplication when wf wait for response(bookmark OR idle) and not complete

wf 等待響應 (書簽或空閑)且未完成時,使用WorkflowApplication訪問參數

我還使用了跟蹤來檢索值,但不是將其保存到數據庫中,而是提出了以下解決方案。
成為跟蹤參與者並從活動中收集數據。 您可以使用特殊的跟蹤查詢微調跟蹤參與者的個人資料。 我添加了一個公共屬性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實例上,您可以將Tracking參與者添加到擴展中。

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

關於來自工作流應用程序實例的持久性空閑事件,我使用以下方法進行了訂閱。 在方法中,我從擴展中獲取跟蹤參與者。 因為我們已經在公共屬性中設置了輸出,所以我們可以訪問它們並將其設置在工作流之外的成員中。 請參見以下示例。

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

我希望這個例子對您有所幫助。

您可以使用Tracking

所需步驟為:

  • 定義一個跟蹤配置文件,用於查詢處於關閉狀態的ActivityStates
  • 實施TrackingParticipant,將OutArgument保存在進程內存,數據庫或磁盤上的文件中
  • 鈎在一起

該鏈接包含您執行此操作所需的所有信息。

更簡單:在開始等待響應之前,使用另一個工作流程活動將要查找的值存儲在某個地方(數據庫,文件等)!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM