Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        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));
        }