public void MakeTransition(CMMNTransitions transition, DateTime executionDateTime)
 {
     UpdateTransition(transition, executionDateTime);
     TransitionHistories.Add(new CasePlanElementInstanceTransitionHistory {
         ExecutionDateTime = executionDateTime, Transition = transition
     });
 }
        public void MakeTransition(CMMNTransitions transition, string message, DateTime executionDateTime)
        {
            switch (Type)
            {
            case CasePlanElementInstanceTypes.MILESTONE:
            case CasePlanElementInstanceTypes.TIMER:
            {
                var newState = GetMilestoneOrEventListenerState(MilestoneState, transition);
                if (newState != null)
                {
                    MilestoneState = newState;
                }
            }
            break;

            case CasePlanElementInstanceTypes.EMPTYTASK:
            case CasePlanElementInstanceTypes.HUMANTASK:
            case CasePlanElementInstanceTypes.PROCESSTASK:
            case CasePlanElementInstanceTypes.STAGE:
            {
                if (transition == CMMNTransitions.ParentTerminate)
                {
                    if (TakeStageState != TaskStageStates.Completed && TakeStageState != TaskStageStates.Terminated)
                    {
                        TakeStageState = TaskStageStates.Terminated;
                    }
                }
                else
                {
                    TakeStageState = GetTaskStageState(TakeStageState, transition);
                }
            }
            break;

            case CasePlanElementInstanceTypes.FILEITEM:
            {
                var newState = GetCaseFileItemState(FileState, transition);
                if (newState != null)
                {
                    FileState = newState;
                }
            }
            break;
            }
            TransitionHistories.Add(new CaseEltInstanceTransitionHistory {
                Message = message, ExecutionDateTime = executionDateTime, Transition = transition
            });
        }
 public object Clone()
 {
     return(new CaseEltInstance
     {
         Children = Children.Select(_ => (CaseEltInstance)_.Clone()).ToList(),
         EltId = EltId,
         Id = Id,
         Name = Name,
         TransitionHistories = TransitionHistories.Select(_ => (CaseEltInstanceTransitionHistory)_.Clone()).ToList(),
         Type = Type,
         Criterias = Criterias.Select(_ => (Criteria)_.Clone()).ToList(),
         FileState = FileState,
         IsBlocking = IsBlocking,
         ManualActivationRule = (ManualActivationRule)ManualActivationRule?.Clone(),
         MilestoneState = MilestoneState,
         NbOccurrence = NbOccurrence,
         Properties = Properties.Select(_ => (CaseEltInstanceProperty)_.Clone()).ToList(),
         RepetitionRule = (RepetitionRule)RepetitionRule?.Clone(),
         TakeStageState = TakeStageState
     });
 }
 protected void FeedCaseEltInstance(BaseCaseEltInstance elt)
 {
     elt.Id    = Id;
     elt.Name  = Name;
     elt.EltId = EltId;
     elt.TransitionHistories = new ConcurrentBag <CasePlanElementInstanceTransitionHistory>(TransitionHistories.Select(_ => (CasePlanElementInstanceTransitionHistory)_.Clone()));
 }