public void SuspendResume() { var handler = new RunTriggersHandler(); var trigger = new WfTriggerUserUpdatesResource(); trigger.Save(); var resource = new Resource(); resource.Save(); var task = RunTriggersHandler.CreateBackgroundTask(trigger.Id, resource.Id, 5); var taskEntity = handler.CreateSuspendedTask(task); taskEntity.Save(); var tasks = handler.RestoreSuspendedTasks(); tasks.Should().HaveCount(1); var runParam = tasks.First().GetData <RunTriggersParams>(); runParam.TriggerDepth.ShouldBeEquivalentTo(5); runParam.TriggerId.ShouldBeEquivalentTo(trigger.Id); runParam.EntityId.ShouldBeEquivalentTo(resource.Id); }
void RunAndTestLog(RunTriggersParams p, Action <EventLogMonitor> action) { var handler = new RunTriggersHandler(); using (var eventLogMonitor = new EventLogMonitor()) { var bgTask = handler.ToBackgroundTask(p); handler.HandleTask(bgTask); action(eventLogMonitor); } }
private void Trigger_New(WfTriggerUserUpdatesResource updateTrigger, IEntity entity, bool runInForeground) { var bgTask = RunTriggersHandler.CreateBackgroundTask(updateTrigger.Id, entity.Id); if (WorkflowRunContext.Current.RunTriggersInCurrentThread || runInForeground) { WorkflowRunContext.Current.DeferAction(() => Factory.BackgroundTaskManager.ExecuteImmediately(bgTask)); } else { using (var ctx = DatabaseContext.GetContext()) { ctx.AddPostDisposeAction(() => Factory.BackgroundTaskManager.EnqueueTask(bgTask)); } } }