/// <summary> /// /// </summary> /// <param name="timerEntity"></param> /// <param name="variableScope"></param> protected internal virtual void RestoreExtraData(IJobEntity timerEntity, IVariableScope variableScope) { string activityId = timerEntity.JobHandlerConfiguration; if (timerEntity.JobHandlerType.Equals(TimerStartEventJobHandler.TYPE, StringComparison.CurrentCultureIgnoreCase) || timerEntity.JobHandlerType.Equals(TriggerTimerEventJobHandler.TYPE, StringComparison.CurrentCultureIgnoreCase)) { activityId = TimerEventHandler.GetActivityIdFromConfiguration(timerEntity.JobHandlerConfiguration); string endDateExpressionString = TimerEventHandler.GetEndDateFromConfiguration(timerEntity.JobHandlerConfiguration); if (!(endDateExpressionString is null)) { IExpression endDateExpression = processEngineConfiguration.ExpressionManager.CreateExpression(endDateExpressionString); string endDateString = null; IBusinessCalendar businessCalendar = processEngineConfiguration.BusinessCalendarManager.GetBusinessCalendar(GetBusinessCalendarName(TimerEventHandler.GeCalendarNameFromConfiguration(timerEntity.JobHandlerConfiguration), variableScope)); if (endDateExpression != null) { object endDateValue = endDateExpression.GetValue(variableScope); if (endDateValue is string) { endDateString = (string)endDateValue; } else if (endDateValue is DateTime) { timerEntity.EndDate = (DateTime)endDateValue; } else { throw new ActivitiException("Timer '" + ((IExecutionEntity)variableScope).ActivityId + "' was not configured with a valid duration/time, either hand in a java.util.Date or a String in format 'yyyy-MM-dd'T'hh:mm:ss'"); } if (!timerEntity.EndDate.HasValue) { timerEntity.EndDate = businessCalendar.ResolveEndDate(endDateString).GetValueOrDefault(); } } } } int maxIterations = 1; if (!(timerEntity.ProcessDefinitionId is null)) { Process process = ProcessDefinitionUtil.GetProcess(timerEntity.ProcessDefinitionId); maxIterations = GetMaxIterations(process, activityId); if (maxIterations <= 1) { maxIterations = GetMaxIterations(process, activityId); } } timerEntity.MaxIterations = maxIterations; }
/// <summary> /// /// </summary> /// <param name="timerEntity"></param> /// <param name="newTimerDate"></param> /// <param name="variableScope"></param> /// <returns></returns> protected internal virtual bool IsValidTime(IJobEntity timerEntity, DateTime newTimerDate, IVariableScope variableScope) { IBusinessCalendar businessCalendar = processEngineConfiguration.BusinessCalendarManager.GetBusinessCalendar(GetBusinessCalendarName(TimerEventHandler.GeCalendarNameFromConfiguration(timerEntity.JobHandlerConfiguration), variableScope)); return(businessCalendar.ValidateDuedate(timerEntity.Repeat, timerEntity.MaxIterations, timerEntity.EndDate, newTimerDate).Value); }
protected internal virtual DateTime?CalculateNextTimer(IJobEntity timerEntity, IVariableScope variableScope) { IBusinessCalendar businessCalendar = ProcessEngineConfiguration.BusinessCalendarManager.GetBusinessCalendar(GetBusinessCalendarName(TimerEventHandler.GeCalendarNameFromConfiguration(timerEntity.JobHandlerConfiguration), variableScope)); return(businessCalendar.ResolveDuedate(timerEntity.Repeat, timerEntity.MaxIterations)); }