Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
                }
            }
        }