// Process related history /// <summary> /// /// </summary> /// <param name="processInstanceId"></param> /// <param name="deleteReason"></param> /// <param name="activityId"></param> public virtual void RecordProcessInstanceEnd(string processInstanceId, string deleteReason, string activityId) { if (IsHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) { IHistoricProcessInstanceEntity historicProcessInstance = HistoricProcessInstanceEntityManager.FindById <IHistoricProcessInstanceEntity>(new KeyValuePair <string, object>("processInstanceId", processInstanceId)); if (historicProcessInstance != null) { historicProcessInstance.MarkEnded(deleteReason); historicProcessInstance.EndActivityId = activityId; // Fire event IActivitiEventDispatcher activitiEventDispatcher = EventDispatcher; if (activitiEventDispatcher != null && activitiEventDispatcher.Enabled) { activitiEventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.HISTORIC_PROCESS_INSTANCE_ENDED, historicProcessInstance)); } } } }