public virtual HttpResponseMessage DeleteById(string documentId) { _dataRepository.IdDelete(documentId); return(new HttpResponseMessage(HttpStatusCode.NoContent)); }
private void RunAgent() { var autoSleepTimeout = DateTime.UtcNow + _initialSleepTimeout; var instanceTriggersQuery = new QuerySpecification { BookMark = new GenericPageBookmark { PageSize = 1000 }, Where = new Filter { Rules = new Comparison[] { new Comparison { Data = Id, Field = "InstanceTarget", Test = Test.Equal } } } }; while (_runAgent && !_ct.IsCancellationRequested) { try { // scan triggers IEnumerable <WorkflowTrigger> instTrigs = Enumerable.Empty <WorkflowTrigger>(); instanceTriggersQuery.BookMark = new GenericPageBookmark(new GenericPageBookmark { PageSize = 1000 }); do { var qr = _triggers.Query(instanceTriggersQuery); if (qr.Items.Any()) { instTrigs = instTrigs.Concat(qr.Items); } instanceTriggersQuery.BookMark = qr.Bookmark; } while (instanceTriggersQuery.BookMark.More); var myTrigs = instTrigs.ToArray().GroupBy(t => t.Route); _ct.ThrowIfCancellationRequested(); if (myTrigs.Any()) { var fireTrigs = myTrigs.Where(t => t.Key == TriggerRoutes.FireRoute); foreach (var t in fireTrigs.SelectMany()) { try { StateMachines[t.MachineContext].Fire(t.TriggerName); } catch (Exception ex) { _log.Error(ex.TraceInformation()); } _triggers.IdDelete(t.Id); _ct.ThrowIfCancellationRequested(); } var completeTrigs = myTrigs.Where(t => t.Key == TriggerRoutes.EndRoute); if (completeTrigs.Any()) { CompleteWorkflow(); _triggers.DeleteBatch(myTrigs.SelectMany().ToList()); break; } else { var napTrigs = myTrigs.Where(t => t.Key == TriggerRoutes.NapRoute); if (napTrigs.Any()) { _triggers.DeleteBatch(napTrigs.SelectMany().ToList()); if (StateMachines.Values.Any(sm => sm.CanActivate)) { // TODO: nap time variable var nextActivationTime = DateTime.UtcNow + TimeSpan.FromMinutes(60.0); Sleep(nextActivationTime); } else { // no activation triggers, so this sleep would be until triggered Sleep(); } break; } } autoSleepTimeout = DateTime.UtcNow + _autoSleepTime; } _bumpEvent.Wait(TimeSpan.FromMinutes(5.0)); _bumpEvent.Reset(); // auto sleep? if (DateTime.UtcNow > autoSleepTimeout) { //Sleep(); } } catch (OperationCanceledException) { } catch (Exception ex) { var es = string.Format("Workflow agent exception: {0}", ex); _log.Error(es); var on = Catalog.Factory.Resolve <IApplicationAlert>(); on.RaiseAlert(ApplicationAlertKind.System, es); } } }