All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.activiti.engine.impl.ProcessInstanceHistoryLogQueryImpl Maven / Gradle / Ivy

The newest version!
package org.activiti.engine.impl;

import java.util.List;

import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricData;
import org.activiti.engine.history.HistoricVariableInstance;
import org.activiti.engine.history.ProcessInstanceHistoryLog;
import org.activiti.engine.history.ProcessInstanceHistoryLogQuery;
import org.activiti.engine.impl.interceptor.Command;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.interceptor.CommandExecutor;
import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntity;

/**
 * @author Joram Barrez
 */
public class ProcessInstanceHistoryLogQueryImpl implements ProcessInstanceHistoryLogQuery, Command {
	
	protected CommandExecutor commandExecutor;
	
	protected String processInstanceId;
	protected boolean includeTasks;
	protected boolean includeActivities;
	protected boolean includeVariables;
	protected boolean includeComments;
	protected boolean includeVariableUpdates;
	protected boolean includeFormProperties;

	public ProcessInstanceHistoryLogQueryImpl(CommandExecutor commandExecutor, String processInstanceId) {
    this.commandExecutor = commandExecutor;
    this.processInstanceId = processInstanceId;
	}
	
	@Override
  public ProcessInstanceHistoryLogQuery includeTasks() {
	  this.includeTasks = true;
	  return this;
  }

	@Override
  public ProcessInstanceHistoryLogQuery includeComments() {
		this.includeComments = true;
	  return this;
  }
	
	@Override
	public ProcessInstanceHistoryLogQuery includeActivities() {
		this.includeActivities = true;
		return this;
	}
	
	@Override
	public ProcessInstanceHistoryLogQuery includeVariables() {
		this.includeVariables = true;
		return this;
	}
	
	@Override
	public ProcessInstanceHistoryLogQuery includeVariableUpdates() {
		this.includeVariableUpdates = true;
		return this;
	}
	
	@Override
	public ProcessInstanceHistoryLogQuery includeFormProperties() {
	  this.includeFormProperties = true;
	  return this;
	}

	@Override
  public ProcessInstanceHistoryLog singleResult() {
		return commandExecutor.execute(this);
  }
	
	@Override
	public ProcessInstanceHistoryLog execute(CommandContext commandContext) {
		
		// Fetch historic process instance
		HistoricProcessInstanceEntity historicProcessInstance = commandContext
				.getHistoricProcessInstanceEntityManager().findHistoricProcessInstance(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) {
			List tasks = commandContext.getHistoricTaskInstanceEntityManager()
					.findHistoricTaskInstancesByQueryCriteria(
							new HistoricTaskInstanceQueryImpl(commandExecutor).processInstanceId(processInstanceId));
			processInstanceHistoryLog.addHistoricData(tasks);
		}
		
		// Activities
		if (includeActivities) {
			List activities = commandContext.getHistoricActivityInstanceEntityManager()
					.findHistoricActivityInstancesByQueryCriteria(
							new HistoricActivityInstanceQueryImpl(commandExecutor).processInstanceId(processInstanceId), null);
			processInstanceHistoryLog.addHistoricData(activities);
		}
		
		// Variables
		if (includeVariables) {
			List variables = commandContext.getHistoricVariableInstanceEntityManager()
					.findHistoricVariableInstancesByQueryCriteria(
							new HistoricVariableInstanceQueryImpl(commandExecutor).processInstanceId(processInstanceId), null);
			processInstanceHistoryLog.addHistoricData(variables);
		}
		
		// Comment
		if (includeComments) {
			List comments = commandContext.getCommentEntityManager().findCommentsByProcessInstanceId(processInstanceId);
			processInstanceHistoryLog.addHistoricData(comments);
		}
		
		// Details: variables
		if (includeVariableUpdates) {
			List variableUpdates = commandContext.getHistoricDetailEntityManager()
					.findHistoricDetailsByQueryCriteria(new HistoricDetailQueryImpl(commandExecutor).variableUpdates(), null);
			processInstanceHistoryLog.addHistoricData(variableUpdates);
		}
		
		// Details: form properties
		if (includeFormProperties) {
			List formProperties = commandContext.getHistoricDetailEntityManager()
					.findHistoricDetailsByQueryCriteria(new HistoricDetailQueryImpl(commandExecutor).formProperties(), null);
			processInstanceHistoryLog.addHistoricData(formProperties);
		}
		
		// All events collected. Sort them by date.
		processInstanceHistoryLog.orderHistoricData();
		
		return processInstanceHistoryLog;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy