Пример #1
0
        /// <summary>
        ///     Find the compensation handler of this activity.
        /// </summary>
        /// <returns> the compensation handler or <code>null</code>, if this activity has no compensation handler. </returns>
        public virtual ActivityImpl findCompensationHandler()
        {
            var compensationHandlerId = (string)GetProperty(BpmnParse.PropertynameCompensationHandlerId);

            if (!ReferenceEquals(compensationHandlerId, null))
            {
                return((ActivityImpl)ProcessDefinition.FindActivity(compensationHandlerId));
            }
            return(null);
        }
Пример #2
0
        private List <TimerToRegister> GetTimerToRegisters(ProcessDefinition processDefinition, string activityName, ProcessInstance processInstance = null)
        {
            var timerTransitions = processDefinition.GetTimerTransitionForActivity(processDefinition.FindActivity(activityName), ForkTransitionSearchType.Both);
            var timerDefinitions = timerTransitions.Select(t => t.Trigger.Timer).GroupBy(t => t.Name).Select(g => g.First()).ToList();

            return
                (timerDefinitions.Select(td => new { Date = GetNextExecutionDateTime(td, processInstance), td.Name })
                 .Where(t => t.Date.HasValue)
                 .Select(t => new TimerToRegister {
                ExecutionDateTime = t.Date.Value, Name = t.Name, ProcessId = processInstance != null ? processInstance.ProcessId : Guid.Empty
            })
                 .ToList());
        }