public ComparatorAnonymousInnerClass(ProcessInstanceHistoryLogImpl outerInstance)
 {
     this.outerInstance = outerInstance;
 }
Exemple #2
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);
        }