/// <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); }
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()); }