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();
                    }
                }
            }
        }
示例#2
0
        /// <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;
                }
            }
        }
示例#3
0
 /// <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;
         }
     }
 }
示例#4
0
        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;
                }
            }
        }
示例#5
0
        /// <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));
                }
            }
        }
示例#6
0
 /// <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);
             }
         }
     }
 }
示例#7
0
        // 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));
                    }
                }
            }
        }
示例#8
0
        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);
        }