public DecisionDefinition build() { DecisionDefinition mockDefinition = mock(DecisionDefinition.class); when(mockDefinition.getId()).thenReturn(id); when(mockDefinition.getCategory()).thenReturn(category); when(mockDefinition.getName()).thenReturn(name); when(mockDefinition.getKey()).thenReturn(key); when(mockDefinition.getVersion()).thenReturn(version); when(mockDefinition.getResourceName()).thenReturn(resource); when(mockDefinition.getDiagramResourceName()).thenReturn(diagramResource); when(mockDefinition.getDeploymentId()).thenReturn(deploymentId); when(mockDefinition.getTenantId()).thenReturn(tenantId); when(mockDefinition.getDecisionRequirementsDefinitionId()).thenReturn(decisionRequirementsDefinitionId); when(mockDefinition.getDecisionRequirementsDefinitionKey()).thenReturn(decisionRequirementsDefinitionKey); when(mockDefinition.getVersionTag()).thenReturn(versionTag); return mockDefinition; }
@Deployment( resources = { DRD_SCORE_RESOURCE, DRD_DISH_RESOURCE }) @Test public void multipleDrdDeployment() { // there should be two decision requirements definitions List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService .createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionCategory() .asc() .list(); assertEquals(2, decisionRequirementsDefinitions.size()); assertEquals("score", decisionRequirementsDefinitions.get(0).getKey()); assertEquals("dish", decisionRequirementsDefinitions.get(1).getKey()); // the decisions should have a reference to the decision requirements definition List<DecisionDefinition> decisions = repositoryService.createDecisionDefinitionQuery().orderByDecisionDefinitionCategory().asc().list(); assertEquals(5, decisions.size()); assertEquals(decisionRequirementsDefinitions.get(0).getId(), decisions.get(0).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(0).getId(), decisions.get(1).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(1).getId(), decisions.get(2).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(1).getId(), decisions.get(3).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(1).getId(), decisions.get(4).getDecisionRequirementsDefinitionId()); }
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 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()); } }
public static DecisionDefinitionDto fromDecisionDefinition(DecisionDefinition definition) { DecisionDefinitionDto dto = new DecisionDefinitionDto(); dto.id = definition.getId(); dto.key = definition.getKey(); dto.category = definition.getCategory(); dto.name = definition.getName(); dto.version = definition.getVersion(); dto.resource = definition.getResourceName(); dto.deploymentId = definition.getDeploymentId(); dto.decisionRequirementsDefinitionId = definition.getDecisionRequirementsDefinitionId(); dto.decisionRequirementsDefinitionKey = definition.getDecisionRequirementsDefinitionKey(); dto.tenantId = definition.getTenantId(); dto.historyTimeToLive = definition.getHistoryTimeToLive(); dto.versionTag = definition.getVersionTag(); return dto; }
public static DecisionDefinitionDto fromDecisionDefinition(DecisionDefinition definition) { DecisionDefinitionDto dto = new DecisionDefinitionDto(); dto.id = definition.getId(); dto.key = definition.getKey(); dto.category = definition.getCategory(); dto.name = definition.getName(); dto.version = definition.getVersion(); dto.resource = definition.getResourceName(); dto.deploymentId = definition.getDeploymentId(); dto.decisionRequirementsDefinitionId = definition.getDecisionRequirementsDefinitionId(); dto.decisionRequirementsDefinitionKey = definition.getDecisionRequirementsDefinitionKey(); dto.tenantId = definition.getTenantId(); dto.historyTimeToLive = definition.getHistoryTimeToLive(); dto.versionTag = definition.getVersionTag(); return dto; }
@Test public void deployDecisionIndependentFromDrd() { String deploymentIdDecision = testRule.deploy(DMN_SCORE_RESOURCE).getId(); String deploymentIdDrd = testRule.deploy(DRD_SCORE_RESOURCE).getId(); // there should be one decision requirements definition DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertEquals(1, query.count()); DecisionRequirementsDefinition decisionRequirementsDefinition = query.singleResult(); assertEquals(1, decisionRequirementsDefinition.getVersion()); assertEquals(deploymentIdDrd, decisionRequirementsDefinition.getDeploymentId()); // and two deployed decisions with different versions List<DecisionDefinition> decisions = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey("score-decision") .orderByDecisionDefinitionVersion().asc() .list(); assertEquals(2, decisions.size()); DecisionDefinition firstDecision = decisions.get(0); assertEquals(1, firstDecision.getVersion()); assertEquals(deploymentIdDecision, firstDecision.getDeploymentId()); assertNull(firstDecision.getDecisionRequirementsDefinitionId()); DecisionDefinition secondDecision = decisions.get(1); assertEquals(2, secondDecision.getVersion()); assertEquals(deploymentIdDrd, secondDecision.getDeploymentId()); assertEquals(decisionRequirementsDefinition.getId(),secondDecision.getDecisionRequirementsDefinitionId()); }
@Deployment( resources = DMN_CHECK_ORDER_RESOURCE ) @Test public void noDrdForSingleDecisionDeployment() { // when the DMN file contains only a single decision definition assertEquals(1, repositoryService.createDecisionDefinitionQuery().count()); // then no decision requirements definition should be created assertEquals(0, repositoryService.createDecisionRequirementsDefinitionQuery().count()); // and the decision should not be linked to a decision requirements definition DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); assertNull(decisionDefinition.getDecisionRequirementsDefinitionId()); assertNull(decisionDefinition.getDecisionRequirementsDefinitionKey()); }
@Test public void drdDeployment() { String deploymentId = testRule.deploy(DRD_SCORE_RESOURCE).getId(); // there should be one decision requirements definition DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertEquals(1, query.count()); DecisionRequirementsDefinition decisionRequirementsDefinition = query.singleResult(); assertTrue(decisionRequirementsDefinition.getId().startsWith("score:1:")); assertEquals("score", decisionRequirementsDefinition.getKey()); assertEquals("Score", decisionRequirementsDefinition.getName()); assertEquals("test-drd-1", decisionRequirementsDefinition.getCategory()); assertEquals(1, decisionRequirementsDefinition.getVersion()); assertEquals(DRD_SCORE_RESOURCE, decisionRequirementsDefinition.getResourceName()); assertEquals(deploymentId, decisionRequirementsDefinition.getDeploymentId()); assertNull(decisionRequirementsDefinition.getDiagramResourceName()); // both decisions should have a reference to the decision requirements definition List<DecisionDefinition> decisions = repositoryService.createDecisionDefinitionQuery().orderByDecisionDefinitionKey().asc().list(); assertEquals(2, decisions.size()); DecisionDefinition firstDecision = decisions.get(0); assertEquals("score-decision", firstDecision.getKey()); assertEquals(decisionRequirementsDefinition.getId(), firstDecision.getDecisionRequirementsDefinitionId()); assertEquals("score", firstDecision.getDecisionRequirementsDefinitionKey()); DecisionDefinition secondDecision = decisions.get(1); assertEquals("score-result", secondDecision.getKey()); assertEquals(decisionRequirementsDefinition.getId(), secondDecision.getDecisionRequirementsDefinitionId()); assertEquals("score", secondDecision.getDecisionRequirementsDefinitionKey()); }
@Deployment( resources = { DRD_SCORE_RESOURCE, DRD_DISH_RESOURCE }) @Test public void multipleDrdDeployment() { // there should be two decision requirements definitions List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService .createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionCategory() .asc() .list(); assertEquals(2, decisionRequirementsDefinitions.size()); assertEquals("score", decisionRequirementsDefinitions.get(0).getKey()); assertEquals("dish", decisionRequirementsDefinitions.get(1).getKey()); // the decisions should have a reference to the decision requirements definition List<DecisionDefinition> decisions = repositoryService.createDecisionDefinitionQuery().orderByDecisionDefinitionCategory().asc().list(); assertEquals(5, decisions.size()); assertEquals(decisionRequirementsDefinitions.get(0).getId(), decisions.get(0).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(0).getId(), decisions.get(1).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(1).getId(), decisions.get(2).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(1).getId(), decisions.get(3).getDecisionRequirementsDefinitionId()); assertEquals(decisionRequirementsDefinitions.get(1).getId(), decisions.get(4).getDecisionRequirementsDefinitionId()); }
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()); } }
public static DecisionDefinitionDto fromDecisionDefinition(DecisionDefinition definition) { DecisionDefinitionDto dto = new DecisionDefinitionDto(); dto.id = definition.getId(); dto.key = definition.getKey(); dto.category = definition.getCategory(); dto.name = definition.getName(); dto.version = definition.getVersion(); dto.resource = definition.getResourceName(); dto.deploymentId = definition.getDeploymentId(); dto.decisionRequirementsDefinitionId = definition.getDecisionRequirementsDefinitionId(); dto.decisionRequirementsDefinitionKey = definition.getDecisionRequirementsDefinitionKey(); dto.tenantId = definition.getTenantId(); dto.historyTimeToLive = definition.getHistoryTimeToLive(); dto.versionTag = definition.getVersionTag(); return dto; }
@Test public void deployDecisionIndependentFromDrd() { String deploymentIdDecision = testRule.deploy(DMN_SCORE_RESOURCE).getId(); String deploymentIdDrd = testRule.deploy(DRD_SCORE_RESOURCE).getId(); // there should be one decision requirements definition DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertEquals(1, query.count()); DecisionRequirementsDefinition decisionRequirementsDefinition = query.singleResult(); assertEquals(1, decisionRequirementsDefinition.getVersion()); assertEquals(deploymentIdDrd, decisionRequirementsDefinition.getDeploymentId()); // and two deployed decisions with different versions List<DecisionDefinition> decisions = repositoryService.createDecisionDefinitionQuery().decisionDefinitionKey("score-decision") .orderByDecisionDefinitionVersion().asc() .list(); assertEquals(2, decisions.size()); DecisionDefinition firstDecision = decisions.get(0); assertEquals(1, firstDecision.getVersion()); assertEquals(deploymentIdDecision, firstDecision.getDeploymentId()); assertNull(firstDecision.getDecisionRequirementsDefinitionId()); DecisionDefinition secondDecision = decisions.get(1); assertEquals(2, secondDecision.getVersion()); assertEquals(deploymentIdDrd, secondDecision.getDeploymentId()); assertEquals(decisionRequirementsDefinition.getId(),secondDecision.getDecisionRequirementsDefinitionId()); }
@Deployment( resources = DMN_CHECK_ORDER_RESOURCE ) @Test public void noDrdForSingleDecisionDeployment() { // when the DMN file contains only a single decision definition assertEquals(1, repositoryService.createDecisionDefinitionQuery().count()); // then no decision requirements definition should be created assertEquals(0, repositoryService.createDecisionRequirementsDefinitionQuery().count()); // and the decision should not be linked to a decision requirements definition DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); assertNull(decisionDefinition.getDecisionRequirementsDefinitionId()); assertNull(decisionDefinition.getDecisionRequirementsDefinitionKey()); }
@Test public void drdDeployment() { String deploymentId = testRule.deploy(DRD_SCORE_RESOURCE).getId(); // there should be one decision requirements definition DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertEquals(1, query.count()); DecisionRequirementsDefinition decisionRequirementsDefinition = query.singleResult(); assertTrue(decisionRequirementsDefinition.getId().startsWith("score:1:")); assertEquals("score", decisionRequirementsDefinition.getKey()); assertEquals("Score", decisionRequirementsDefinition.getName()); assertEquals("test-drd-1", decisionRequirementsDefinition.getCategory()); assertEquals(1, decisionRequirementsDefinition.getVersion()); assertEquals(DRD_SCORE_RESOURCE, decisionRequirementsDefinition.getResourceName()); assertEquals(deploymentId, decisionRequirementsDefinition.getDeploymentId()); assertNull(decisionRequirementsDefinition.getDiagramResourceName()); // both decisions should have a reference to the decision requirements definition List<DecisionDefinition> decisions = repositoryService.createDecisionDefinitionQuery().orderByDecisionDefinitionKey().asc().list(); assertEquals(2, decisions.size()); DecisionDefinition firstDecision = decisions.get(0); assertEquals("score-decision", firstDecision.getKey()); assertEquals(decisionRequirementsDefinition.getId(), firstDecision.getDecisionRequirementsDefinitionId()); assertEquals("score", firstDecision.getDecisionRequirementsDefinitionKey()); DecisionDefinition secondDecision = decisions.get(1); assertEquals("score-result", secondDecision.getKey()); assertEquals(decisionRequirementsDefinition.getId(), secondDecision.getDecisionRequirementsDefinitionId()); assertEquals("score", secondDecision.getDecisionRequirementsDefinitionKey()); }