package org.activiti.engine.impl.history; import java.util.Date; import java.util.Map; import org.activiti.engine.impl.db.DbSqlSession; import org.activiti.engine.impl.interceptor.Session; import org.activiti.engine.impl.persistence.entity.ExecutionEntity; import org.activiti.engine.impl.persistence.entity.HistoricActivityInstanceEntity; import org.activiti.engine.impl.persistence.entity.IdentityLinkEntity; import org.activiti.engine.impl.persistence.entity.TaskEntity; import org.activiti.engine.impl.persistence.entity.VariableInstanceEntity; import org.activiti.engine.impl.pvm.runtime.InterpretableExecution; import org.activiti.engine.task.IdentityLink; public interface HistoryManager extends Session { /** * @return true, if the configured history-level is equal to OR set to * a higher value than the given level. */ public abstract boolean isHistoryLevelAtLeast(HistoryLevel level); /** * @return true, if history-level is configured to level other than "none". */ public abstract boolean isHistoryEnabled(); /** * Record a process-instance ended. Updates the historic process instance if activity history is enabled. */ public abstract void recordProcessInstanceEnd(String processInstanceId, String deleteReason, String activityId); /** * Record a process-instance started and record start-event if activity history is enabled. */ public abstract void recordProcessInstanceStart( ExecutionEntity processInstance); /** * Record a process-instance name change. */ public abstract void recordProcessInstanceNameChange( String processInstanceId, String newName); /** * Record a sub-process-instance started and alters the calledProcessinstanceId * on the current active activity's historic counterpart. Only effective when activity history is enabled. */ public abstract void recordSubProcessInstanceStart( ExecutionEntity parentExecution, ExecutionEntity subProcessInstance); /** * Record the start of an activitiy, if activity history is enabled. */ public abstract void recordActivityStart(ExecutionEntity executionEntity); /** * Record the end of an activitiy, if activity history is enabled. */ public abstract void recordActivityEnd(ExecutionEntity executionEntity); /** * Record the end of a start event, if activity history is enabled. */ public abstract void recordStartEventEnded(ExecutionEntity execution, String activityId); /** * Finds the {@link HistoricActivityInstanceEntity} that is active in the given * execution. Uses the {@link DbSqlSession} cache to make sure the right instance * is returned, regardless of whether or not entities have already been flushed to DB. */ public abstract HistoricActivityInstanceEntity findActivityInstance( ExecutionEntity execution); /** * Replaces any open historic activityInstances' execution-id's to the id of the replaced * execution, if activity history is enabled. */ public abstract void recordExecutionReplacedBy(ExecutionEntity execution, InterpretableExecution replacedBy); /** * Record a change of the process-definition id of a process instance, if activity history is enabled. */ public abstract void recordProcessDefinitionChange( String processInstanceId, String processDefinitionId); /** * Record the creation of a task, if audit history is enabled. */ public abstract void recordTaskCreated(TaskEntity task, ExecutionEntity execution); /** * Record the assignment of task, if activity history is enabled. */ public abstract void recordTaskAssignment(TaskEntity task); /** * record task instance claim time, if audit history is enabled * @param taskId */ public abstract void recordTaskClaim(String taskId); /** * Record the id of a the task associated with a historic activity, if activity history is enabled. */ public abstract void recordTaskId(TaskEntity task); /** * Record task as ended, if audit history is enabled. */ public abstract void recordTaskEnd(String taskId, String deleteReason); /** * Record task assignee change, if audit history is enabled. */ public abstract void recordTaskAssigneeChange(String taskId, String assignee); /** * Record task owner change, if audit history is enabled. */ public abstract void recordTaskOwnerChange(String taskId, String owner); /** * Record task name change, if audit history is enabled. */ public abstract void recordTaskNameChange(String taskId, String taskName); /** * Record task description change, if audit history is enabled. */ public abstract void recordTaskDescriptionChange(String taskId, String description); /** * Record task due date change, if audit history is enabled. */ public abstract void recordTaskDueDateChange(String taskId, Date dueDate); /** * Record task priority change, if audit history is enabled. */ public abstract void recordTaskPriorityChange(String taskId, int priority); /** * Record task category change, if audit history is enabled. */ public abstract void recordTaskCategoryChange(String taskId, String category); /** * Record task form key change, if audit history is enabled. */ public abstract void recordTaskFormKeyChange(String taskId, String formKey); /** * Record task parent task id change, if audit history is enabled. */ public abstract void recordTaskParentTaskIdChange(String taskId, String parentTaskId); /** * Record task execution id change, if audit history is enabled. */ public abstract void recordTaskExecutionIdChange(String taskId, String executionId); /** * Record task definition key change, if audit history is enabled. */ public abstract void recordTaskDefinitionKeyChange(TaskEntity task, String taskDefinitionKey); /** * Record a change of the process-definition id of a task instance, if activity history is enabled. */ public abstract void recordTaskProcessDefinitionChange(String taskId, String processDefinitionId); /** * Record a variable has been created, if audit history is enabled. */ public abstract void recordVariableCreate(VariableInstanceEntity variable); /** * Record a variable has been created, if FULL history is enabled. */ public abstract void recordHistoricDetailVariableCreate( VariableInstanceEntity variable, ExecutionEntity sourceActivityExecution, boolean useActivityId); /** * Record a variable has been updated, if audit history is enabled. */ public abstract void recordVariableUpdate(VariableInstanceEntity variable); /** * Record a variable has been deleted, if audit history is enabled. */ public abstract void recordVariableRemoved(VariableInstanceEntity variable); /** * Creates a new comment to indicate a new {@link IdentityLink} has been created or deleted, * if history is enabled. */ public abstract void createIdentityLinkComment(String taskId, String userId, String groupId, String type, boolean create); /** * Creates a new comment to indicate a new {@link IdentityLink} has been created or deleted, * if history is enabled. */ public abstract void createIdentityLinkComment(String taskId, String userId, String groupId, String type, boolean create, boolean forceNullUserId); /** * Creates a new comment to indicate a new {@link IdentityLink} has been created or deleted, * if history is enabled. */ public abstract void createProcessInstanceIdentityLinkComment(String processInstanceId, String userId, String groupId, String type, boolean create); /** * Creates a new comment to indicate a new {@link IdentityLink} has been created or deleted, * if history is enabled. */ public abstract void createProcessInstanceIdentityLinkComment(String processInstanceId, String userId, String groupId, String type, boolean create, boolean forceNullUserId); /** * Creates a new comment to indicate a new attachment has been created or deleted, * if history is enabled. */ public abstract void createAttachmentComment(String taskId, String processInstanceId, String attachmentName, boolean create); /** * Report form properties submitted, if audit history is enabled. */ public abstract void reportFormPropertiesSubmitted( ExecutionEntity processInstance, Map<String, String> properties, String taskId); // Identity link related history /** * Record the creation of a new {@link IdentityLink}, if audit history is enabled. */ public abstract void recordIdentityLinkCreated( IdentityLinkEntity identityLink); public abstract void deleteHistoricIdentityLink(String id); public abstract void updateProcessBusinessKeyInHistory( ExecutionEntity processInstance); }