![](/img/trans.png)
[英]Windows workflow WorkflowApplication wfApp = new WorkflowApplication(wf)
[英]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 。
所需步驟為:
該鏈接包含您執行此操作所需的所有信息。
更簡單:在開始等待響應之前,使用另一個工作流程活動將要查找的值存儲在某個地方(數據庫,文件等)!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.