protected HistoricDecisionInstanceEntity newDecisionInstanceEventEntity(CaseExecutionEntity executionEntity, DmnDecisionLogicEvaluationEvent evaluationEvent) { return new HistoricDecisionInstanceEntity(); }
public void deleteHistoricDecisionInstancesByDecisionDefinitionId(String decisionDefinitionId) { if (isHistoryEnabled()) { List<HistoricDecisionInstanceEntity> decisionInstances = findHistoricDecisionInstancesByDecisionDefinitionId(decisionDefinitionId); List<String> decisionInstanceIds = new ArrayList<String>(); for(HistoricDecisionInstanceEntity decisionInstance : decisionInstances) { decisionInstanceIds.add(decisionInstance.getId()); // delete decision instance decisionInstance.delete(); } if(!decisionInstanceIds.isEmpty()) { deleteHistoricDecisionInstanceByIds(decisionInstanceIds); } } }
protected void initDecisionInstanceEvent(HistoricDecisionInstanceEntity event, DmnDecisionLogicEvaluationEvent evaluationEvent, HistoryEventTypes eventType, HistoricDecisionInstanceEntity rootDecisionInstance) { event.setEventType(eventType.getEventName()); DecisionDefinition decision = (DecisionDefinition) evaluationEvent.getDecision(); event.setDecisionDefinitionId(decision.getId()); event.setDecisionDefinitionKey(decision.getKey()); event.setDecisionDefinitionName(decision.getName()); if (decision.getDecisionRequirementsDefinitionId() != null) { event.setDecisionRequirementsDefinitionId(decision.getDecisionRequirementsDefinitionId()); event.setDecisionRequirementsDefinitionKey(decision.getDecisionRequirementsDefinitionKey()); } // set current time as evaluation time event.setEvaluationTime(ClockUtil.getCurrentTime()); if (event.getRootProcessInstanceId() == null && event.getCaseInstanceId() == null) { if (rootDecisionInstance != null) { event.setRemovalTime(rootDecisionInstance.getRemovalTime()); } else { Date removalTime = calculateRemovalTime(event, decision); event.setRemovalTime(removalTime); } } if (evaluationEvent instanceof DmnDecisionTableEvaluationEvent) { initDecisionInstanceEventForDecisionTable(event, (DmnDecisionTableEvaluationEvent) evaluationEvent); } else if (evaluationEvent instanceof DmnDecisionLiteralExpressionEvaluationEvent) { initDecisionInstanceEventForDecisionLiteralExpression(event, (DmnDecisionLiteralExpressionEvaluationEvent) evaluationEvent); } else { event.setInputs(Collections.<HistoricDecisionInputInstance> emptyList()); event.setOutputs(Collections.<HistoricDecisionOutputInstance> emptyList()); } }
protected void insertHistoricDecisionInstance(HistoricDecisionInstanceEntity historicDecisionInstance) { getDbEntityManager().insert(historicDecisionInstance); insertHistoricDecisionInputInstances(historicDecisionInstance.getInputs(), historicDecisionInstance.getId()); insertHistoricDecisionOutputInstances(historicDecisionInstance.getOutputs(), historicDecisionInstance.getId()); }
public void insertHistoricDecisionInstances(HistoricDecisionEvaluationEvent event) { if (isHistoryEnabled()) { HistoricDecisionInstanceEntity rootHistoricDecisionInstance = event.getRootHistoricDecisionInstance(); insertHistoricDecisionInstance(rootHistoricDecisionInstance); for (HistoricDecisionInstanceEntity requiredHistoricDecisionInstances : event.getRequiredHistoricDecisionInstances()) { requiredHistoricDecisionInstances.setRootDecisionInstanceId(rootHistoricDecisionInstance.getId()); insertHistoricDecisionInstance(requiredHistoricDecisionInstances); } } }
protected String provideTenantId(DecisionDefinition decisionDefinition, HistoricDecisionInstanceEntity event) { TenantIdProvider tenantIdProvider = Context.getProcessEngineConfiguration().getTenantIdProvider(); String tenantId = null; if(tenantIdProvider != null) { TenantIdProviderHistoricDecisionInstanceContext ctx = null; if(event.getExecutionId() != null) { ctx = new TenantIdProviderHistoricDecisionInstanceContext(decisionDefinition, getExecution(event)); } else if(event.getCaseExecutionId() != null) { ctx = new TenantIdProviderHistoricDecisionInstanceContext(decisionDefinition, getCaseExecution(event)); } else { ctx = new TenantIdProviderHistoricDecisionInstanceContext(decisionDefinition); } tenantId = tenantIdProvider.provideTenantIdForHistoricDecisionInstance(ctx); } return tenantId; }
protected void appendHistoricDecisionOutputInstances(Map<String, HistoricDecisionInstanceEntity> decisionInstancesById, HistoricDecisionInstanceQueryImpl query) { List<HistoricDecisionOutputInstanceEntity> decisionOutputInstances = findHistoricDecisionOutputInstancesByDecisionInstanceIds(decisionInstancesById.keySet()); initializeOutputInstances(decisionInstancesById.values()); for (HistoricDecisionOutputInstanceEntity decisionOutputInstance : decisionOutputInstances) { HistoricDecisionInstanceEntity historicDecisionInstance = decisionInstancesById.get(decisionOutputInstance.getDecisionInstanceId()); historicDecisionInstance.addOutput(decisionOutputInstance); // do not fetch values for byte arrays eagerly (unless requested by the user) if(!isBinaryValue(decisionOutputInstance) || query.isByteArrayFetchingEnabled()) { fetchVariableValue(decisionOutputInstance, query.isCustomObjectDeserializationEnabled()); } } }
protected void appendHistoricDecisionInputInstances(Map<String, HistoricDecisionInstanceEntity> decisionInstancesById, HistoricDecisionInstanceQueryImpl query) { List<HistoricDecisionInputInstanceEntity> decisionInputInstances = findHistoricDecisionInputInstancesByDecisionInstanceIds(decisionInstancesById.keySet()); initializeInputInstances(decisionInstancesById.values()); for (HistoricDecisionInputInstanceEntity decisionInputInstance : decisionInputInstances) { HistoricDecisionInstanceEntity historicDecisionInstance = decisionInstancesById.get(decisionInputInstance.getDecisionInstanceId()); historicDecisionInstance.addInput(decisionInputInstance); // do not fetch values for byte arrays eagerly (unless requested by the user) if (!isBinaryValue(decisionInputInstance) || query.isByteArrayFetchingEnabled()) { fetchVariableValue(decisionInputInstance, query.isCustomObjectDeserializationEnabled()); } } }
public Date calculateRemovalTime(HistoricDecisionInstanceEntity historicRootDecisionInstance, DecisionDefinition decisionDefinition) { Integer historyTimeToLive = decisionDefinition.getHistoryTimeToLive(); if (historyTimeToLive != null) { Date evaluationTime = historicRootDecisionInstance.getEvaluationTime(); return determineRemovalTime(evaluationTime, historyTimeToLive); } return null; }
protected DelegateExecution getExecution(HistoricDecisionInstanceEntity event) { return Context.getCommandContext().getExecutionManager().findExecutionById(event.getExecutionId()); }
protected DelegateCaseExecution getCaseExecution(HistoricDecisionInstanceEntity event) { return Context.getCommandContext().getCaseExecutionManager().findCaseExecutionById(event.getCaseExecutionId()); }
protected void insertHistoricDecisionInstance(HistoricDecisionInstanceEntity historicDecisionInstance) { getDbEntityManager().insert(historicDecisionInstance); insertHistoricDecisionInputInstances(historicDecisionInstance.getInputs(), historicDecisionInstance.getId()); insertHistoricDecisionOutputInstances(historicDecisionInstance.getOutputs(), historicDecisionInstance.getId()); }
public void insertHistoricDecisionInstances(HistoricDecisionEvaluationEvent event) { if (isHistoryEnabled()) { HistoricDecisionInstanceEntity rootHistoricDecisionInstance = event.getRootHistoricDecisionInstance(); insertHistoricDecisionInstance(rootHistoricDecisionInstance); for (HistoricDecisionInstanceEntity requiredHistoricDecisionInstances : event.getRequiredHistoricDecisionInstances()) { requiredHistoricDecisionInstances.setRootDecisionInstanceId(rootHistoricDecisionInstance.getId()); insertHistoricDecisionInstance(requiredHistoricDecisionInstances); } } }
protected String provideTenantId(DecisionDefinition decisionDefinition, HistoricDecisionInstanceEntity event) { TenantIdProvider tenantIdProvider = Context.getProcessEngineConfiguration().getTenantIdProvider(); String tenantId = null; if(tenantIdProvider != null) { TenantIdProviderHistoricDecisionInstanceContext ctx = null; if(event.getExecutionId() != null) { ctx = new TenantIdProviderHistoricDecisionInstanceContext(decisionDefinition, getExecution(event)); } else if(event.getCaseExecutionId() != null) { ctx = new TenantIdProviderHistoricDecisionInstanceContext(decisionDefinition, getCaseExecution(event)); } else { ctx = new TenantIdProviderHistoricDecisionInstanceContext(decisionDefinition); } tenantId = tenantIdProvider.provideTenantIdForHistoricDecisionInstance(ctx); } return tenantId; }
protected void appendHistoricDecisionOutputInstances(Map<String, HistoricDecisionInstanceEntity> decisionInstancesById, HistoricDecisionInstanceQueryImpl query) { List<HistoricDecisionOutputInstanceEntity> decisionOutputInstances = findHistoricDecisionOutputInstancesByDecisionInstanceIds(decisionInstancesById.keySet()); initializeOutputInstances(decisionInstancesById.values()); for (HistoricDecisionOutputInstanceEntity decisionOutputInstance : decisionOutputInstances) { HistoricDecisionInstanceEntity historicDecisionInstance = decisionInstancesById.get(decisionOutputInstance.getDecisionInstanceId()); historicDecisionInstance.addOutput(decisionOutputInstance); // do not fetch values for byte arrays eagerly (unless requested by the user) if(!isBinaryValue(decisionOutputInstance) || query.isByteArrayFetchingEnabled()) { fetchVariableValue(decisionOutputInstance, query.isCustomObjectDeserializationEnabled()); } } }
protected void appendHistoricDecisionInputInstances(Map<String, HistoricDecisionInstanceEntity> decisionInstancesById, HistoricDecisionInstanceQueryImpl query) { List<HistoricDecisionInputInstanceEntity> decisionInputInstances = findHistoricDecisionInputInstancesByDecisionInstanceIds(decisionInstancesById.keySet()); initializeInputInstances(decisionInstancesById.values()); for (HistoricDecisionInputInstanceEntity decisionInputInstance : decisionInputInstances) { HistoricDecisionInstanceEntity historicDecisionInstance = decisionInstancesById.get(decisionInputInstance.getDecisionInstanceId()); historicDecisionInstance.addInput(decisionInputInstance); // do not fetch values for byte arrays eagerly (unless requested by the user) if (!isBinaryValue(decisionInputInstance) || query.isByteArrayFetchingEnabled()) { fetchVariableValue(decisionInputInstance, query.isCustomObjectDeserializationEnabled()); } } }
public Date calculateRemovalTime(HistoricDecisionInstanceEntity historicRootDecisionInstance, DecisionDefinition decisionDefinition) { Integer historyTimeToLive = decisionDefinition.getHistoryTimeToLive(); if (historyTimeToLive != null) { Date evaluationTime = historicRootDecisionInstance.getEvaluationTime(); return determineRemovalTime(evaluationTime, historyTimeToLive); } return null; }
protected DelegateExecution getExecution(HistoricDecisionInstanceEntity event) { return Context.getCommandContext().getExecutionManager().findExecutionById(event.getExecutionId()); }
protected DelegateCaseExecution getCaseExecution(HistoricDecisionInstanceEntity event) { return Context.getCommandContext().getCaseExecutionManager().findCaseExecutionById(event.getCaseExecutionId()); }
protected void initDecisionInstanceEvent(HistoricDecisionInstanceEntity event, DmnDecisionLogicEvaluationEvent evaluationEvent, HistoryEventTypes eventType, HistoricDecisionInstanceEntity rootDecisionInstance) { event.setEventType(eventType.getEventName()); DecisionDefinition decision = (DecisionDefinition) evaluationEvent.getDecision(); event.setDecisionDefinitionId(decision.getId()); event.setDecisionDefinitionKey(decision.getKey()); event.setDecisionDefinitionName(decision.getName()); if (decision.getDecisionRequirementsDefinitionId() != null) { event.setDecisionRequirementsDefinitionId(decision.getDecisionRequirementsDefinitionId()); event.setDecisionRequirementsDefinitionKey(decision.getDecisionRequirementsDefinitionKey()); } // set current time as evaluation time event.setEvaluationTime(ClockUtil.getCurrentTime()); if (event.getRootProcessInstanceId() == null && event.getCaseInstanceId() == null) { if (rootDecisionInstance != null) { event.setRemovalTime(rootDecisionInstance.getRemovalTime()); } else { Date removalTime = calculateRemovalTime(event, decision); event.setRemovalTime(removalTime); } } if (evaluationEvent instanceof DmnDecisionTableEvaluationEvent) { initDecisionInstanceEventForDecisionTable(event, (DmnDecisionTableEvaluationEvent) evaluationEvent); } else if (evaluationEvent instanceof DmnDecisionLiteralExpressionEvaluationEvent) { initDecisionInstanceEventForDecisionLiteralExpression(event, (DmnDecisionLiteralExpressionEvaluationEvent) evaluationEvent); } else { event.setInputs(Collections.<HistoricDecisionInputInstance> emptyList()); event.setOutputs(Collections.<HistoricDecisionOutputInstance> emptyList()); } }