在我的工作流應用程序我有一個暫停與書籤的NativeActivity的後不執行:延遲一個NativeActivity的創建書籤
context.CreateBookmark(bookmarkString, this.Continue);
現在我想建立一個機制來發送通知郵件給用戶如果他在一段時間後沒有繼續工作流程。所以我想用
currentDelayActivity = new Delay();
context.ScheduleActivity(currentDelayActivity, OnDelayCompleted, OnDelayFaulted);
但是這裏有一個問題:調用書籤後執行currentDelayActivity。書籤是否存在於工作流程中是否存在問題?如果我用
currentDelayActivity = new Sequence();
它運作良好。 NativeActivity的完整代碼:
public class TestActivity: NativeActivity<String>
{
private Variable<TimeSpan> delayTimeSpanVariable = new Variable<TimeSpan>();
private Activity currentDelayActivity;
protected protected override void Execute(NativeActivityContext context)
{
String bookmarkString = "Test";
context.CreateBookmark(bookmarkString, this.Continue);
TimeSpan timeSpan = new TimeSpan(0, 0, 5);
delayTimeSpanVariable.Set(context, timeSpan);
context.ScheduleActivity(currentDelayActivity, OnDelayCompleted, OnDelayFaulted);
}
private void OnDelayCompleted(NativeActivityContext context, ActivityInstance completed)
{
//This method is executed after the activity is continued (with the bookmark String)
}
private void OnDelayFaulted(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom)
{
}
private void Continue(NativeActivityContext context, Bookmark bookmark, Object obj)
{
}
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
currentDelayActivity = new Delay();
((Delay)currentDelayActivity).Duration = new InArgument<TimeSpan>(delayTimeSpanVariable);
metadata.AddImplementationVariable(delayTimeSpanVariable);
metadata.AddImplementationChild(currentDelayActivity);
}
}