protected internal virtual void Localize(IHistoricProcessInstance processInstance, ICommandContext commandContext) { IHistoricProcessInstanceEntity processInstanceEntity = (IHistoricProcessInstanceEntity)processInstance; processInstanceEntity.LocalizedName = null; processInstanceEntity.LocalizedDescription = null; if (_locale is object && processInstance.ProcessDefinitionId is object) { IProcessDefinition processDefinition = commandContext.ProcessEngineConfiguration.DeploymentManager.FindDeployedProcessDefinitionById(processInstanceEntity.ProcessDefinitionId); JToken languageNode = Context.GetLocalizationElementProperties(_locale, processDefinition.Key, processInstanceEntity.ProcessDefinitionId, _withLocalizationFallback); if (languageNode != null) { JToken languageNameNode = languageNode[DynamicBpmnConstants.LOCALIZATION_NAME]; if (languageNameNode != null) { processInstanceEntity.LocalizedName = languageNameNode.ToString(); } JToken languageDescriptionNode = languageNode[DynamicBpmnConstants.LOCALIZATION_DESCRIPTION]; if (languageDescriptionNode != null) { processInstanceEntity.LocalizedDescription = languageDescriptionNode.ToString(); } } } }
/// <summary> /// /// </summary> /// <param name="parentExecution"></param> /// <param name="subProcessInstance"></param> /// <param name="initialElement"></param> public virtual void RecordSubProcessInstanceStart(IExecutionEntity parentExecution, IExecutionEntity subProcessInstance, FlowElement initialElement) { if (IsHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) { IHistoricProcessInstanceEntity historicProcessInstance = HistoricProcessInstanceEntityManager.Create(subProcessInstance); // Fix for ACT-1728: startActivityId not initialized with subprocess instance if (historicProcessInstance.StartActivityId is null) { historicProcessInstance.StartActivityId = initialElement.Id; } HistoricProcessInstanceEntityManager.Insert(historicProcessInstance, false); // Fire event IActivitiEventDispatcher activitiEventDispatcher = EventDispatcher; if (activitiEventDispatcher != null && activitiEventDispatcher.Enabled) { activitiEventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.HISTORIC_PROCESS_INSTANCE_CREATED, historicProcessInstance)); } IHistoricActivityInstanceEntity activitiyInstance = FindActivityInstance(parentExecution, false, true); if (activitiyInstance != null) { activitiyInstance.CalledProcessInstanceId = subProcessInstance.ProcessInstanceId; } } }
/// <summary> /// /// </summary> /// <param name="processInstanceId"></param> /// <param name="processDefinitionId"></param> public virtual void RecordProcessDefinitionChange(string processInstanceId, string processDefinitionId) { if (IsHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) { IHistoricProcessInstanceEntity historicProcessInstance = HistoricProcessInstanceEntityManager.FindById <IHistoricProcessInstanceEntity>(new KeyValuePair <string, object>("id", processInstanceId)); if (historicProcessInstance != null) { historicProcessInstance.ProcessDefinitionId = processDefinitionId; } } }
public virtual void RecordProcessInstanceNameChange(string processInstanceId, string newName) { if (IsHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) { IHistoricProcessInstanceEntity historicProcessInstance = HistoricProcessInstanceEntityManager.FindById <IHistoricProcessInstanceEntity>(new KeyValuePair <string, object>("processInstanceId", processInstanceId)); if (historicProcessInstance != null) { historicProcessInstance.Name = newName; } } }
/// <summary> /// /// </summary> /// <param name="processInstance"></param> /// <param name="startElement"></param> public virtual void RecordProcessInstanceStart(IExecutionEntity processInstance, FlowElement startElement) { if (IsHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) { IHistoricProcessInstanceEntity historicProcessInstance = HistoricProcessInstanceEntityManager.Create(processInstance); historicProcessInstance.StartActivityId = startElement.Id; // Insert historic process-instance HistoricProcessInstanceEntityManager.Insert(historicProcessInstance, false); // Fire event IActivitiEventDispatcher activitiEventDispatcher = EventDispatcher; if (activitiEventDispatcher != null && activitiEventDispatcher.Enabled) { activitiEventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.HISTORIC_PROCESS_INSTANCE_CREATED, historicProcessInstance)); } } }
/// <summary> /// /// </summary> /// <param name="processInstance"></param> public virtual void UpdateProcessBusinessKeyInHistory(IExecutionEntity processInstance) { if (HistoryEnabled) { //if (log.DebugEnabled) //{ // log.debug("updateProcessBusinessKeyInHistory : {}", processInstance.Id); //} if (processInstance != null) { IHistoricProcessInstanceEntity historicProcessInstance = HistoricProcessInstanceEntityManager.FindById <IHistoricProcessInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", processInstance.Id)); if (historicProcessInstance != null) { historicProcessInstance.BusinessKey = processInstance.ProcessInstanceBusinessKey; HistoricProcessInstanceEntityManager.Update(historicProcessInstance, false); } } } }
// 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)); } } } }
public virtual IProcessInstanceHistoryLog Execute(ICommandContext commandContext) { // Fetch historic process instance IHistoricProcessInstanceEntity historicProcessInstance = commandContext.HistoricProcessInstanceEntityManager.FindById <IHistoricProcessInstanceEntity>(new KeyValuePair <string, object>("id", processInstanceId)); if (historicProcessInstance == null) { return(null); } // Create a log using this historic process instance ProcessInstanceHistoryLogImpl processInstanceHistoryLog = new ProcessInstanceHistoryLogImpl(historicProcessInstance); // Add events, based on query settings // Tasks if (_includeTasks) { IList <IHistoricData> tasks = commandContext.HistoricTaskInstanceEntityManager.FindHistoricTaskInstancesByQueryCriteria((new HistoricTaskInstanceQueryImpl(commandExecutor)).SetProcessInstanceId(processInstanceId)) as IList <IHistoricData>; processInstanceHistoryLog.AddHistoricData(tasks); } // Activities if (_includeActivities) { IList <IHistoricActivityInstance> activities = commandContext.HistoricActivityInstanceEntityManager.FindHistoricActivityInstancesByQueryCriteria((new HistoricActivityInstanceQueryImpl(commandExecutor)).SetProcessInstanceId(processInstanceId), null); processInstanceHistoryLog.AddHistoricData(activities); } // Variables if (_includeVariables) { IList <IHistoricVariableInstance> variables = commandContext.HistoricVariableInstanceEntityManager.FindHistoricVariableInstancesByQueryCriteria((new HistoricVariableInstanceQueryImpl(commandExecutor)).SetProcessInstanceId(processInstanceId), null); processInstanceHistoryLog.AddHistoricData(variables); } // Comment if (_includeComments) { IList <IHistoricData> comments = commandContext.CommentEntityManager.FindCommentsByProcessInstanceId(processInstanceId) as IList <IHistoricData>; processInstanceHistoryLog.AddHistoricData(comments); } // Details: variables if (_includeVariableUpdates) { IList <IHistoricData> variableUpdates = commandContext.HistoricDetailEntityManager.FindHistoricDetailsByQueryCriteria((new HistoricDetailQueryImpl(commandExecutor)).SetVariableUpdates(), null) as IList <IHistoricData>; // Make sure all variables values are fetched (similar to the HistoricVariableInstance query) foreach (IHistoricData historicData in variableUpdates) { IHistoricVariableUpdate variableUpdate = (IHistoricVariableUpdate)historicData; //variableUpdate.Value; } processInstanceHistoryLog.AddHistoricData(variableUpdates); } // Details: form properties if (_includeFormProperties) { IList <IHistoricData> formProperties = commandContext.HistoricDetailEntityManager.FindHistoricDetailsByQueryCriteria((new HistoricDetailQueryImpl(commandExecutor)).FormProperties(), null) as IList <IHistoricData>; processInstanceHistoryLog.AddHistoricData(formProperties); } // All events collected. Sort them by date. processInstanceHistoryLog.orderHistoricData(); return(processInstanceHistoryLog); }