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