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);
}
}