public static DecisionRequirementsDefinitionDto fromDecisionRequirementsDefinition(DecisionRequirementsDefinition definition) { DecisionRequirementsDefinitionDto dto = new DecisionRequirementsDefinitionDto(); 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.tenantId = definition.getTenantId(); return dto; }
public InputStream execute(final CommandContext commandContext) { DecisionRequirementsDefinition decisionRequirementsDefinition = new GetDeploymentDecisionRequirementsDefinitionCmd(decisionRequirementsDefinitionId).execute(commandContext); final String deploymentId = decisionRequirementsDefinition.getDeploymentId(); final String resourceName = decisionRequirementsDefinition.getDiagramResourceName(); if (resourceName != null ) { return commandContext.runWithoutAuthorization(new Callable<InputStream>() { public InputStream call() throws Exception { return new GetDeploymentResourceCmd(deploymentId, resourceName).execute(commandContext); } }); } else { return null; } }
public InputStream execute(final CommandContext commandContext) { DecisionRequirementsDefinition decisionRequirementsDefinition = new GetDeploymentDecisionRequirementsDefinitionCmd(decisionRequirementsDefinitionId).execute(commandContext); final String deploymentId = decisionRequirementsDefinition.getDeploymentId(); final String resourceName = decisionRequirementsDefinition.getResourceName(); return commandContext.runWithoutAuthorization(new Callable<InputStream>() { public InputStream call() throws Exception { return new GetDeploymentResourceCmd(deploymentId, resourceName).execute(commandContext); } }); }
protected void removeAllDecisionRequirementsDefinitionsByDeploymentId(String deploymentId) { // remove all decision requirements definitions for a specific deployment List<DecisionRequirementsDefinition> allDefinitionsForDeployment = new DecisionRequirementsDefinitionQueryImpl() .deploymentId(deploymentId) .list(); for (DecisionRequirementsDefinition decisionRequirementsDefinition : allDefinitionsForDeployment) { try { removeDecisionDefinition(decisionRequirementsDefinition.getId()); } catch (Exception e) { ProcessEngineLogger.PERSISTENCE_LOGGER .removeEntryFromDeploymentCacheFailure("decision requirement", decisionRequirementsDefinition.getId(), e); } } }
protected List<String> getDefinitionKeys(List<DecisionRequirementsDefinition> definitions) { List<String> definitionKeys = new ArrayList<String>(); for (DecisionRequirementsDefinition definition : definitions) { definitionKeys.add(definition.getKey()); } return definitionKeys; }
@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()); }
@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()); }
@Test public void queryByLatestWithoutTenantId() { // deploy a second version without tenant id testRule.deploy(DMN); DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion() .withoutTenantId(); assertThat(query.count(), is(1L)); DecisionRequirementsDefinition DecisionRequirementsDefinition = query.singleResult(); assertThat(DecisionRequirementsDefinition.getTenantId(), is(nullValue())); assertThat(DecisionRequirementsDefinition.getVersion(), is(2)); }
protected Map<String, DecisionRequirementsDefinition> getDecisionRequirementsDefinitionsForTenant(List<DecisionRequirementsDefinition> definitions) { Map<String, DecisionRequirementsDefinition> definitionsForTenant = new HashMap<String, DecisionRequirementsDefinition>(); for (DecisionRequirementsDefinition definition : definitions) { definitionsForTenant.put(definition.getTenantId(), definition); } return definitionsForTenant; }
@Test public void orderByDecisionRequirementsDefinitionVersion() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionVersion().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(1).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(2).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(3).getVersion(), is(2)); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionVersion().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getVersion(), is(2)); assertThat(decisionRequirementsDefinitions.get(1).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(2).getVersion(), is(1)); }
@Override public Response getDecisionRequirementsDefinitionDiagram() { DecisionRequirementsDefinition definition = engine.getRepositoryService().getDecisionRequirementsDefinition(decisionRequirementsDefinitionId); InputStream decisionRequirementsDiagram = engine.getRepositoryService().getDecisionRequirementsDiagram(decisionRequirementsDefinitionId); if (decisionRequirementsDiagram == null) { return Response.noContent().build(); } else { String fileName = definition.getDiagramResourceName(); return Response.ok(decisionRequirementsDiagram).header("Content-Disposition", "attachment; filename=" + fileName) .type(ProcessDefinitionResourceImpl.getMediaTypeForFileSuffix(fileName)).build(); } } }
@Test public void orderByDeploymentId() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDeploymentId().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getDeploymentId(), is(firstDeploymentId)); assertThat(decisionRequirementsDefinitions.get(1).getDeploymentId(), is(firstDeploymentId)); assertThat(decisionRequirementsDefinitions.get(2).getDeploymentId(), is(secondDeploymentId)); assertThat(decisionRequirementsDefinitions.get(3).getDeploymentId(), is(thirdDeploymentId)); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDeploymentId().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getDeploymentId(), is(thirdDeploymentId)); assertThat(decisionRequirementsDefinitions.get(1).getDeploymentId(), is(secondDeploymentId)); assertThat(decisionRequirementsDefinitions.get(2).getDeploymentId(), is(firstDeploymentId)); assertThat(decisionRequirementsDefinitions.get(3).getDeploymentId(), is(firstDeploymentId)); }
@Test public void orderByDecisionRequirementsDefinitionCategory() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionCategory().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getCategory(), is("test-drd-1")); assertThat(decisionRequirementsDefinitions.get(1).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(2).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(3).getCategory(), is("xyz_")); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionCategory().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getCategory(), is("xyz_")); assertThat(decisionRequirementsDefinitions.get(1).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(2).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(3).getCategory(), is("test-drd-1")); }
@Test public void orderByDecisionRequirementsDefinitionName() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionName().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getName(), is("Dish")); assertThat(decisionRequirementsDefinitions.get(1).getName(), is("Dish")); assertThat(decisionRequirementsDefinitions.get(2).getName(), is("Score")); assertThat(decisionRequirementsDefinitions.get(3).getName(), is("Xyz")); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionName().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getName(), is("Xyz")); assertThat(decisionRequirementsDefinitions.get(1).getName(), is("Score")); assertThat(decisionRequirementsDefinitions.get(2).getName(), is("Dish")); assertThat(decisionRequirementsDefinitions.get(3).getName(), is("Dish")); }
protected void removeAllDecisionRequirementsDefinitionsByDeploymentId(String deploymentId) { // remove all decision requirements definitions for a specific deployment List<DecisionRequirementsDefinition> allDefinitionsForDeployment = new DecisionRequirementsDefinitionQueryImpl() .deploymentId(deploymentId) .list(); for (DecisionRequirementsDefinition decisionRequirementsDefinition : allDefinitionsForDeployment) { try { removeDecisionDefinition(decisionRequirementsDefinition.getId()); } catch (Exception e) { ProcessEngineLogger.PERSISTENCE_LOGGER .removeEntryFromDeploymentCacheFailure("decision requirement", decisionRequirementsDefinition.getId(), e); } } }
@Test public void orderByDecisionRequirementsDefinitionKey() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionKey().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getKey(), is("dish")); assertThat(decisionRequirementsDefinitions.get(1).getKey(), is("dish")); assertThat(decisionRequirementsDefinitions.get(2).getKey(), is("score")); assertThat(decisionRequirementsDefinitions.get(3).getKey(), is("xyz")); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionKey().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getKey(), is("xyz")); assertThat(decisionRequirementsDefinitions.get(1).getKey(), is("score")); assertThat(decisionRequirementsDefinitions.get(2).getKey(), is("dish")); assertThat(decisionRequirementsDefinitions.get(3).getKey(), is("dish")); }
@Deployment(resources = DRG_DMN) public void testDecisionInstancePropertiesOfDrdDecision() { decisionService.evaluateDecisionTableByKey("dish-decision") .variables(Variables.createVariables().putValue("temperature", 21).putValue("dayType", "Weekend")) .evaluate(); DecisionRequirementsDefinition decisionRequirementsDefinition = repositoryService.createDecisionRequirementsDefinitionQuery().singleResult(); HistoricDecisionInstanceQuery query = historyService.createHistoricDecisionInstanceQuery(); assertThat(query.count(), is(3L)); HistoricDecisionInstance rootHistoricDecisionInstance = query.decisionDefinitionKey("dish-decision").singleResult(); HistoricDecisionInstance requiredHistoricDecisionInstance1 = query.decisionDefinitionKey("season").singleResult(); HistoricDecisionInstance requiredHistoricDecisionInstance2 = query.decisionDefinitionKey("guestCount").singleResult(); assertThat(rootHistoricDecisionInstance.getRootDecisionInstanceId(), is(nullValue())); assertThat(rootHistoricDecisionInstance.getDecisionRequirementsDefinitionId(), is(decisionRequirementsDefinition.getId())); assertThat(rootHistoricDecisionInstance.getDecisionRequirementsDefinitionKey(), is(decisionRequirementsDefinition.getKey())); assertThat(requiredHistoricDecisionInstance1.getRootDecisionInstanceId(), is(rootHistoricDecisionInstance.getId())); assertThat(requiredHistoricDecisionInstance1.getDecisionRequirementsDefinitionId(), is(decisionRequirementsDefinition.getId())); assertThat(requiredHistoricDecisionInstance1.getDecisionRequirementsDefinitionKey(), is(decisionRequirementsDefinition.getKey())); assertThat(requiredHistoricDecisionInstance2.getRootDecisionInstanceId(), is(rootHistoricDecisionInstance.getId())); assertThat(requiredHistoricDecisionInstance2.getDecisionRequirementsDefinitionId(), is(decisionRequirementsDefinition.getId())); assertThat(requiredHistoricDecisionInstance2.getDecisionRequirementsDefinitionKey(), is(decisionRequirementsDefinition.getKey())); }
@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()); }
public InputStream execute(final CommandContext commandContext) { DecisionRequirementsDefinition decisionRequirementsDefinition = new GetDeploymentDecisionRequirementsDefinitionCmd(decisionRequirementsDefinitionId).execute(commandContext); final String deploymentId = decisionRequirementsDefinition.getDeploymentId(); final String resourceName = decisionRequirementsDefinition.getResourceName(); return commandContext.runWithoutAuthorization(new Callable<InputStream>() { public InputStream call() throws Exception { return new GetDeploymentResourceCmd(deploymentId, resourceName).execute(commandContext); } }); }
@Test public void queryByLatestWithTenantId() { // deploy a second version for tenant one testRule.deployForTenant(TENANT_ONE, DMN); DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion() .tenantIdIn(TENANT_ONE); assertThat(query.count(), is(1L)); DecisionRequirementsDefinition DecisionRequirementsDefinition = query.singleResult(); assertThat(DecisionRequirementsDefinition.getTenantId(), is(TENANT_ONE)); assertThat(DecisionRequirementsDefinition.getVersion(), is(2)); query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion() .tenantIdIn(TENANT_TWO); assertThat(query.count(), is(1L)); DecisionRequirementsDefinition = query.singleResult(); assertThat(DecisionRequirementsDefinition.getTenantId(), is(TENANT_TWO)); assertThat(DecisionRequirementsDefinition.getVersion(), is(1)); }