protected HistoricProcessInstanceEventEntity newProcessInstanceEventEntity(ExecutionEntity execution) { return new HistoricProcessInstanceEventEntity(); }
protected void initProcessInstanceEvent(HistoricProcessInstanceEventEntity evt, ExecutionEntity execution, HistoryEventType eventType) { String processDefinitionId = execution.getProcessDefinitionId(); String processInstanceId = execution.getProcessInstanceId(); String executionId = execution.getId(); // the given execution is the process instance! String caseInstanceId = execution.getCaseInstanceId(); String tenantId = execution.getTenantId(); ProcessDefinitionEntity definition = execution.getProcessDefinition(); String processDefinitionKey = null; if (definition != null) { processDefinitionKey = definition.getKey(); } evt.setId(processInstanceId); evt.setEventType(eventType.getEventName()); evt.setProcessDefinitionKey(processDefinitionKey); evt.setProcessDefinitionId(processDefinitionId); evt.setProcessInstanceId(processInstanceId); evt.setExecutionId(executionId); evt.setBusinessKey(execution.getProcessBusinessKey()); evt.setCaseInstanceId(caseInstanceId); evt.setTenantId(tenantId); evt.setRootProcessInstanceId(execution.getRootProcessInstanceId()); if (execution.getSuperCaseExecution() != null) { evt.setSuperCaseInstanceId(execution.getSuperCaseExecution().getCaseInstanceId()); } if (execution.getSuperExecution() != null) { evt.setSuperProcessInstanceId(execution.getSuperExecution().getProcessInstanceId()); } }
public HistoryEvent createProcessInstanceUpdateEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = loadProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_UPDATE); if (executionEntity.isSuspended()) { evt.setState(HistoricProcessInstance.STATE_SUSPENDED); } else { evt.setState(HistoricProcessInstance.STATE_ACTIVE); } return evt; }
protected boolean isRootProcessInstance(HistoricProcessInstanceEventEntity evt) { return evt.getProcessInstanceId().equals(evt.getRootProcessInstanceId()); }
public Void execute(CommandContext commandContext) { DbEntityManagerFactory dbEntityManagerFactory = new DbEntityManagerFactory(Context.getProcessEngineConfiguration().getIdGenerator()); DbEntityManager newEntityManager = dbEntityManagerFactory.openSession(); HistoricProcessInstanceEventEntity hpi = new HistoricProcessInstanceEventEntity(); hpi.setId(id); hpi.setProcessInstanceId(id); hpi.setProcessDefinitionId("someProcDefId"); hpi.setStartTime(new Date()); hpi.setState(HistoricProcessInstance.STATE_ACTIVE); newEntityManager.insert(hpi); newEntityManager.flush(); monitor.sync(); DbEntityManager cmdEntityManager = commandContext.getDbEntityManager(); cmdEntityManager.createHistoricProcessInstanceQuery().list(); monitor.sync(); return null; }
public HistoryEvent createProcessInstanceStartEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = newProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_START); evt.setStartActivityId(executionEntity.getActivityId()); evt.setStartTime(ClockUtil.getCurrentTime()); // set super process instance id ExecutionEntity superExecution = executionEntity.getSuperExecution(); if (superExecution != null) { evt.setSuperProcessInstanceId(superExecution.getProcessInstanceId()); } //state evt.setState(HistoricProcessInstance.STATE_ACTIVE); // set start user Id evt.setStartUserId(Context.getCommandContext().getAuthenticatedUserId()); if (isHistoryRemovalTimeStrategyStart()) { if (isRootProcessInstance(evt)) { Date removalTime = calculateRemovalTime(evt); evt.setRemovalTime(removalTime); } else { provideRemovalTime(evt); } } return evt; }
public HistoryEvent createProcessInstanceEndEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = loadProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_END); determineEndState(executionEntity, evt); // set end activity id evt.setEndActivityId(executionEntity.getActivityId()); evt.setEndTime(ClockUtil.getCurrentTime()); if(evt.getStartTime() != null) { evt.setDurationInMillis(evt.getEndTime().getTime()-evt.getStartTime().getTime()); } if (isRootProcessInstance(evt) && isHistoryRemovalTimeStrategyEnd()) { Date removalTime = calculateRemovalTime(evt); if (removalTime != null) { addRemovalTimeToHistoricProcessInstances(evt.getRootProcessInstanceId(), removalTime); if (isDmnEnabled()) { addRemovalTimeToHistoricDecisions(evt.getRootProcessInstanceId(), removalTime); } } } // set delete reason (if applicable). if (executionEntity.getDeleteReason() != null) { evt.setDeleteReason(executionEntity.getDeleteReason()); } return evt; }
protected void provideRemovalTime(AttachmentEntity attachment) { String rootProcessInstanceId = attachment.getRootProcessInstanceId(); if (rootProcessInstanceId != null) { HistoricProcessInstanceEventEntity historicRootProcessInstance = getHistoricRootProcessInstance(rootProcessInstanceId); if (historicRootProcessInstance != null) { Date removalTime = historicRootProcessInstance.getRemovalTime(); attachment.setRemovalTime(removalTime); } } }
public Date calculateRemovalTime(HistoricProcessInstanceEventEntity historicRootProcessInstance, ProcessDefinition processDefinition) { Integer historyTimeToLive = processDefinition.getHistoryTimeToLive(); if (historyTimeToLive != null) { if (isProcessInstanceRunning(historicRootProcessInstance)) { Date startTime = historicRootProcessInstance.getStartTime(); return determineRemovalTime(startTime, historyTimeToLive); } else if (isProcessInstanceEnded(historicRootProcessInstance)) { Date endTime = historicRootProcessInstance.getEndTime(); return determineRemovalTime(endTime, historyTimeToLive); } } return null; }
protected boolean isProcessInstanceRunning(HistoricProcessInstanceEventEntity historicProcessInstance) { return historicProcessInstance.getEndTime() == null; }
public Void execute(CommandContext commandContext) { DbEntityManagerFactory dbEntityManagerFactory = new DbEntityManagerFactory(Context.getProcessEngineConfiguration().getIdGenerator()); DbEntityManager newEntityManager = dbEntityManagerFactory.openSession(); HistoricProcessInstanceEventEntity hpi = new HistoricProcessInstanceEventEntity(); hpi.setId(id); hpi.setProcessInstanceId(id); hpi.setProcessDefinitionId("someProcDefId"); hpi.setStartTime(new Date()); hpi.setState(HistoricProcessInstance.STATE_ACTIVE); newEntityManager.insert(hpi); newEntityManager.flush(); monitor.sync(); DbEntityManager cmdEntityManager = commandContext.getDbEntityManager(); cmdEntityManager.createHistoricProcessInstanceQuery().list(); monitor.sync(); return null; }
public HistoryEvent createProcessInstanceStartEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = newProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_START); evt.setStartActivityId(executionEntity.getActivityId()); evt.setStartTime(ClockUtil.getCurrentTime()); // set super process instance id ExecutionEntity superExecution = executionEntity.getSuperExecution(); if (superExecution != null) { evt.setSuperProcessInstanceId(superExecution.getProcessInstanceId()); } //state evt.setState(HistoricProcessInstance.STATE_ACTIVE); // set start user Id evt.setStartUserId(Context.getCommandContext().getAuthenticatedUserId()); if (isHistoryRemovalTimeStrategyStart()) { if (isRootProcessInstance(evt)) { Date removalTime = calculateRemovalTime(evt); evt.setRemovalTime(removalTime); } else { provideRemovalTime(evt); } } return evt; }
public HistoryEvent createProcessInstanceEndEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = loadProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_END); determineEndState(executionEntity, evt); // set end activity id evt.setEndActivityId(executionEntity.getActivityId()); evt.setEndTime(ClockUtil.getCurrentTime()); if(evt.getStartTime() != null) { evt.setDurationInMillis(evt.getEndTime().getTime()-evt.getStartTime().getTime()); } if (isRootProcessInstance(evt) && isHistoryRemovalTimeStrategyEnd()) { Date removalTime = calculateRemovalTime(evt); if (removalTime != null) { addRemovalTimeToHistoricProcessInstances(evt.getRootProcessInstanceId(), removalTime); if (isDmnEnabled()) { addRemovalTimeToHistoricDecisions(evt.getRootProcessInstanceId(), removalTime); } } } // set delete reason (if applicable). if (executionEntity.getDeleteReason() != null) { evt.setDeleteReason(executionEntity.getDeleteReason()); } return evt; }
protected void provideRemovalTime(HistoryEvent historyEvent) { String rootProcessInstanceId = historyEvent.getRootProcessInstanceId(); if (rootProcessInstanceId != null) { HistoricProcessInstanceEventEntity historicRootProcessInstance = getHistoricRootProcessInstance(rootProcessInstanceId); if (historicRootProcessInstance != null) { Date removalTime = historicRootProcessInstance.getRemovalTime(); historyEvent.setRemovalTime(removalTime); } } }
public Date calculateRemovalTime(HistoricProcessInstanceEventEntity historicRootProcessInstance, ProcessDefinition processDefinition) { Integer historyTimeToLive = processDefinition.getHistoryTimeToLive(); if (historyTimeToLive != null) { if (isProcessInstanceRunning(historicRootProcessInstance)) { Date startTime = historicRootProcessInstance.getStartTime(); return determineRemovalTime(startTime, historyTimeToLive); } else if (isProcessInstanceEnded(historicRootProcessInstance)) { Date endTime = historicRootProcessInstance.getEndTime(); return determineRemovalTime(endTime, historyTimeToLive); } } return null; }
protected boolean isRootProcessInstance(HistoricProcessInstanceEventEntity evt) { return evt.getProcessInstanceId().equals(evt.getRootProcessInstanceId()); }
protected boolean isProcessInstanceEnded(HistoricProcessInstanceEventEntity historicProcessInstance) { return historicProcessInstance.getEndTime() != null; }
protected void initProcessInstanceEvent(HistoricProcessInstanceEventEntity evt, ExecutionEntity execution, HistoryEventType eventType) { String processDefinitionId = execution.getProcessDefinitionId(); String processInstanceId = execution.getProcessInstanceId(); String executionId = execution.getId(); // the given execution is the process instance! String caseInstanceId = execution.getCaseInstanceId(); String tenantId = execution.getTenantId(); ProcessDefinitionEntity definition = execution.getProcessDefinition(); String processDefinitionKey = null; if (definition != null) { processDefinitionKey = definition.getKey(); } evt.setId(processInstanceId); evt.setEventType(eventType.getEventName()); evt.setProcessDefinitionKey(processDefinitionKey); evt.setProcessDefinitionId(processDefinitionId); evt.setProcessInstanceId(processInstanceId); evt.setExecutionId(executionId); evt.setBusinessKey(execution.getProcessBusinessKey()); evt.setCaseInstanceId(caseInstanceId); evt.setTenantId(tenantId); evt.setRootProcessInstanceId(execution.getRootProcessInstanceId()); if (execution.getSuperCaseExecution() != null) { evt.setSuperCaseInstanceId(execution.getSuperCaseExecution().getCaseInstanceId()); } if (execution.getSuperExecution() != null) { evt.setSuperProcessInstanceId(execution.getSuperExecution().getProcessInstanceId()); } }
public HistoryEvent createProcessInstanceStartEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = newProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_START); evt.setStartActivityId(executionEntity.getActivityId()); evt.setStartTime(ClockUtil.getCurrentTime()); // set super process instance id ExecutionEntity superExecution = executionEntity.getSuperExecution(); if (superExecution != null) { evt.setSuperProcessInstanceId(superExecution.getProcessInstanceId()); } //state evt.setState(HistoricProcessInstance.STATE_ACTIVE); // set start user Id evt.setStartUserId(Context.getCommandContext().getAuthenticatedUserId()); if (isHistoryRemovalTimeStrategyStart()) { if (isRootProcessInstance(evt)) { Date removalTime = calculateRemovalTime(evt); evt.setRemovalTime(removalTime); } else { provideRemovalTime(evt); } } return evt; }
public HistoryEvent createProcessInstanceEndEvt(DelegateExecution execution) { final ExecutionEntity executionEntity = (ExecutionEntity) execution; // create event instance HistoricProcessInstanceEventEntity evt = loadProcessInstanceEventEntity(executionEntity); // initialize event initProcessInstanceEvent(evt, executionEntity, HistoryEventTypes.PROCESS_INSTANCE_END); determineEndState(executionEntity, evt); // set end activity id evt.setEndActivityId(executionEntity.getActivityId()); evt.setEndTime(ClockUtil.getCurrentTime()); if(evt.getStartTime() != null) { evt.setDurationInMillis(evt.getEndTime().getTime()-evt.getStartTime().getTime()); } if (isRootProcessInstance(evt) && isHistoryRemovalTimeStrategyEnd()) { Date removalTime = calculateRemovalTime(evt); if (removalTime != null) { addRemovalTimeToHistoricProcessInstances(evt.getRootProcessInstanceId(), removalTime); if (isDmnEnabled()) { addRemovalTimeToHistoricDecisions(evt.getRootProcessInstanceId(), removalTime); } } } // set delete reason (if applicable). if (executionEntity.getDeleteReason() != null) { evt.setDeleteReason(executionEntity.getDeleteReason()); } return evt; }