public override void DoWork() { try { using (ThreadEventService threadEventService = new ThreadEventService()) { List <sysBpmsThreadEvent> listThreadEvent = threadEventService.GetTimerActive(new string[] { nameof(sysBpmsThreadEvent.Thread), nameof(sysBpmsThreadEvent.Event) }); foreach (var Item in listThreadEvent) { using (ProcessEngine processEngine = new ProcessEngine(new EngineSharedModel(Item.Thread, Item.Thread.ProcessID, null, string.Empty, string.Empty))) { (ResultOperation result, List <MessageModel> message) = processEngine.ContinueProcess(Item, true); if (result.IsSuccess) { //Add new event If it is an interval timer event if (Item.Event.SubTypeTimerEventModel?.Type == (int)SubTypeTimerEventModel.e_Type.Interval && Item.Event.CancelActivity != true) { if (Item.ThreadTaskID.HasValue) { sysBpmsThreadTask boundedThreadTask = new ThreadTaskService().GetInfo(Item.ThreadTaskID.Value); if (boundedThreadTask.StatusLU != (int)sysBpmsThreadTask.e_StatusLU.Done) { new EventEngine(processEngine.EngineSharedModel).NextTimerExecuteDate(Item.Event, Item.ThreadTaskID); } } } } else { DotNetNuke.Services.Exceptions.Exceptions.LogException(new Exception(result.GetErrors())); } } } } this.ScheduleHistoryItem.Succeeded = true; } catch (Exception ex) { this.ScheduleHistoryItem.Succeeded = false; this.Errored(ref ex); DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } }
public override void DoWork() { try { using (ThreadEventService threadEventService = new ThreadEventService()) { List <sysBpmsEvent> listEvent = new EventService().GetList((int)sysBpmsEvent.e_TypeLU.StartEvent, null, "", (int)WorkflowStartEvent.BPMNStartEventType.Timer, (int)sysBpmsProcess.Enum_StatusLU.Published, new string[] { $"{nameof(sysBpmsEvent.Element)}.{nameof(sysBpmsElement.Process)}" }); foreach (sysBpmsEvent Item in listEvent) { using (EventEngine eventEngine = new EventEngine(new EngineSharedModel(currentThread: null, currentProcessID: Item.Element.ProcessID, baseQueryModel: null, currentUserName: string.Empty, apiSessionId: string.Empty))) { eventEngine.NextTimerExecuteDate(Item, null); } } } this.ScheduleHistoryItem.Succeeded = true; } catch (Exception ex) { this.ScheduleHistoryItem.Succeeded = false; this.Errored(ref ex); DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } }