@Override public void checkEvaluateDecision(DecisionDefinition decisionDefinition) { getAuthorizationManager().checkAuthorization(CREATE_INSTANCE, DECISION_DEFINITION, decisionDefinition.getKey()); }
@Override public void checkEvaluateDecision(DecisionDefinition decisionDefinition) { getAuthorizationManager().checkAuthorization(CREATE_INSTANCE, DECISION_DEFINITION, decisionDefinition.getKey()); }
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 @Test public void longDecisionDefinitionKey() { DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); assertFalse(decisionDefinition.getId().startsWith("o123456789")); assertEquals("o123456789o123456789o123456789o123456789o123456789o123456789o123456789", decisionDefinition.getKey()); }
public void testQueryWithReadPermissionOnOneDecisionDefinition() { // given user gets read permission on the decision definition createGrantAuthorization(DECISION_DEFINITION, DECISION_DEFINITION_KEY, userId, READ); // when DecisionDefinitionQuery query = repositoryService.createDecisionDefinitionQuery(); // then verifyQueryResults(query, 1); DecisionDefinition definition = query.singleResult(); assertNotNull(definition); assertEquals(DECISION_DEFINITION_KEY, definition.getKey()); }
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; }
@Deployment(resources = DMN_DECISION_TABLE) @Test public void evaluateDecisionTableByKeyWithNonExistingVersion() { DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); thrown.expect(NotFoundException.class); thrown.expectMessage("no decision definition deployed with key = 'decision' and version = '42'"); decisionService.evaluateDecisionTableByKeyAndVersion(decisionDefinition.getKey(), 42, null); }
@Deployment(resources = { "org/camunda/bpm/engine/test/api/repository/versionTag.dmn", "org/camunda/bpm/engine/test/api/repository/versionTagHigher.dmn" }) @Test public void testQueryByVersionTag() { DecisionDefinition decisionDefinition = repositoryService .createDecisionDefinitionQuery() .versionTag("1.0.0") .singleResult(); assertEquals("versionTag", decisionDefinition.getKey()); assertEquals("1.0.0", decisionDefinition.getVersionTag()); }
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()); } }
@Deployment(resources = DMN_DECISION_LITERAL_EXPRESSION) @Test public void evaluateDecisionByKeyWithNonExistingVersion() { DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); thrown.expect(NotFoundException.class); thrown.expectMessage("no decision definition deployed with key = 'decision' and version = '42'"); decisionService .evaluateDecisionByKey(decisionDefinition.getKey()) .version(42) .evaluate(); }
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()); } }
@Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testMultipleDecisionDiagramResource.dmn11.xml", "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testMultipleDecisionDiagramResource.decision1.png", "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testMultipleDecisionDiagramResource.decision2.png", "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testMultipleDecisionDiagramResource.decision3.png" }) @Test public void multipleDiagramResourcesProvided() { String resourcePrefix = "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testMultipleDecisionDiagramResource."; DecisionDefinitionQuery decisionDefinitionQuery = repositoryService.createDecisionDefinitionQuery(); assertEquals(3, decisionDefinitionQuery.count()); for (DecisionDefinition decisionDefinition : decisionDefinitionQuery.list()) { assertEquals(resourcePrefix + decisionDefinition.getKey() + ".png", decisionDefinition.getDiagramResourceName()); } }
@Test @Deployment(resources = DMN_FILE) public void evaluateDecisionByKey() { // given DecisionDefinition decisionDefinition = engineRule.getRepositoryService().createDecisionDefinitionQuery().singleResult(); // when authRule.init(scenario).withUser("userId").bindResource("decisionDefinitionKey", DECISION_DEFINITION_KEY).start(); DmnDecisionTableResult decisionResult = engineRule.getDecisionService().evaluateDecisionTableByKey(decisionDefinition.getKey(), createVariables()); // then if (authRule.assertScenario(scenario)) { assertThatDecisionHasExpectedResult(decisionResult); } }
@Deployment(resources = { "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testDecisionDiagramResource.dmn11.xml", "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testDecisionDiagramResource.png" }) @Test public void getDecisionDiagramResource() { String resourcePrefix = "org/camunda/bpm/engine/test/dmn/deployment/DecisionDefinitionDeployerTest.testDecisionDiagramResource"; DecisionDefinition decisionDefinition = repositoryService.createDecisionDefinitionQuery().singleResult(); assertEquals(resourcePrefix + ".dmn11.xml", decisionDefinition.getResourceName()); assertEquals("decision", decisionDefinition.getKey()); String diagramResourceName = decisionDefinition.getDiagramResourceName(); assertEquals(resourcePrefix + ".png", diagramResourceName); InputStream diagramStream = repositoryService.getResourceAsStream(decisionDefinition.getDeploymentId(), diagramResourceName); final byte[] diagramBytes = IoUtil.readInputStream(diagramStream, "diagram stream"); assertEquals(2540, diagramBytes.length); }
@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()); }
@Test @Deployment(resources = DMN_FILE) public void evaluateDecisionByKeyAndVersion() { // given DecisionDefinition decisionDefinition = engineRule.getRepositoryService().createDecisionDefinitionQuery().singleResult(); // when authRule.init(scenario).withUser("userId").bindResource("decisionDefinitionKey", DECISION_DEFINITION_KEY).start(); DmnDecisionTableResult decisionResult = engineRule.getDecisionService().evaluateDecisionTableByKeyAndVersion(decisionDefinition.getKey(), decisionDefinition.getVersion(), createVariables()); // then if (authRule.assertScenario(scenario)) { assertThatDecisionHasExpectedResult(decisionResult); } }
@Test public void dmnDeploymentWithDmnSuffix() { String deploymentId = testRule.deploy(DMN_CHECK_ORDER_RESOURCE_DMN_SUFFIX).getId(); // there should be one deployment DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery(); assertEquals(1, deploymentQuery.count()); // there should be one case definition DecisionDefinitionQuery query = repositoryService.createDecisionDefinitionQuery(); assertEquals(1, query.count()); DecisionDefinition decisionDefinition = query.singleResult(); assertTrue(decisionDefinition.getId().startsWith("decision:1:")); assertEquals("http://camunda.org/schema/1.0/dmn", decisionDefinition.getCategory()); assertEquals("CheckOrder", decisionDefinition.getName()); assertEquals("decision", decisionDefinition.getKey()); assertEquals(1, decisionDefinition.getVersion()); assertEquals(DMN_CHECK_ORDER_RESOURCE_DMN_SUFFIX, decisionDefinition.getResourceName()); assertEquals(deploymentId, decisionDefinition.getDeploymentId()); assertNull(decisionDefinition.getDiagramResourceName()); }
@Test public void dmnDeploymentWithDecisionLiteralExpression() { String deploymentId = testRule.deploy(DMN_DECISION_LITERAL_EXPRESSION).getId(); // there should be decision deployment DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery(); assertEquals(1, deploymentQuery.count()); // there should be one decision definition DecisionDefinitionQuery query = repositoryService.createDecisionDefinitionQuery(); assertEquals(1, query.count()); DecisionDefinition decisionDefinition = query.singleResult(); assertTrue(decisionDefinition.getId().startsWith("decisionLiteralExpression:1:")); assertEquals("http://camunda.org/schema/1.0/dmn", decisionDefinition.getCategory()); assertEquals("decisionLiteralExpression", decisionDefinition.getKey()); assertEquals("Decision with Literal Expression", decisionDefinition.getName()); assertEquals(1, decisionDefinition.getVersion()); assertEquals(DMN_DECISION_LITERAL_EXPRESSION, decisionDefinition.getResourceName()); assertEquals(deploymentId, decisionDefinition.getDeploymentId()); assertNull(decisionDefinition.getDiagramResourceName()); }
@Test public void dmnDeployment() { String deploymentId = testRule.deploy(DMN_CHECK_ORDER_RESOURCE).getId(); // there should be decision deployment DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery(); assertEquals(1, deploymentQuery.count()); // there should be one decision definition DecisionDefinitionQuery query = repositoryService.createDecisionDefinitionQuery(); assertEquals(1, query.count()); DecisionDefinition decisionDefinition = query.singleResult(); assertTrue(decisionDefinition.getId().startsWith("decision:1:")); assertEquals("http://camunda.org/schema/1.0/dmn", decisionDefinition.getCategory()); assertEquals("CheckOrder", decisionDefinition.getName()); assertEquals("decision", decisionDefinition.getKey()); assertEquals(1, decisionDefinition.getVersion()); assertEquals(DMN_CHECK_ORDER_RESOURCE, decisionDefinition.getResourceName()); assertEquals(deploymentId, decisionDefinition.getDeploymentId()); assertNull(decisionDefinition.getDiagramResourceName()); }