public void TestSleepingWorkflowWithBookmarkToWakup() { var bookmarkName = "Wakup Now"; var a = new WaitForSignalOrDelayWorkflow() { Duration = TimeSpan.FromSeconds(10), BookmarkName = bookmarkName, }; AutoResetEvent syncEvent = new AutoResetEvent(false); bool completed1 = false; bool unloaded1 = false; IDictionary <string, object> outputs = null; var app = new WorkflowApplication(a); app.InstanceStore = WFDefinitionStore.Instance.Store; app.PersistableIdle = (eventArgs) => { return(PersistableIdleAction.Unload); }; app.OnUnhandledException = (e) => { return(UnhandledExceptionAction.Abort); }; app.Completed = delegate(WorkflowApplicationCompletedEventArgs e) { completed1 = true; outputs = e.Outputs; syncEvent.Set(); }; app.Aborted = (eventArgs) => { }; app.Unloaded = (eventArgs) => { unloaded1 = true; syncEvent.Set(); }; var id = app.Id; app.Run(); syncEvent.WaitOne(); Assert.False(completed1); Assert.True(unloaded1); outputs = LoadWithBookmarkAndComplete(a, id, bookmarkName, null);//Wakup does not need bookmark value Assert.Equal("Someone waked me up", (string)outputs["Result"]); }
public Guid Create(string bookmarkName, TimeSpan duration) { var a = new WaitForSignalOrDelayWorkflow() { Duration = TimeSpan.FromSeconds(10), BookmarkName = bookmarkName, }; var app = new WorkflowApplication(a) { InstanceStore = WFDefinitionStore.Instance.Store, PersistableIdle = (eventArgs) => { return(PersistableIdleAction.Unload); }, OnUnhandledException = (e) => { return(UnhandledExceptionAction.Abort); }, Completed = delegate(WorkflowApplicationCompletedEventArgs e) { }, Aborted = (eventArgs) => { }, Unloaded = (eventArgs) => { } }; var id = app.Id; app.Run(); return(id); }