protected void copyDeploymentValuesToCaseDefinitions(EngineDeployment deployment, List<CaseDefinitionEntity> caseDefinitionEntities) { String tenantId = deployment.getTenantId(); String deploymentId = deployment.getId(); for (CaseDefinitionEntity caseDefinitionEntity : caseDefinitionEntities) { if (tenantId != null) { caseDefinitionEntity.setTenantId(tenantId); } caseDefinitionEntity.setDeploymentId(deploymentId); } }
@Override public void deploy(EngineDeployment deployment, Map<String, Object> deploymentSettings) { if (!deployment.isNew()) { return; } LOGGER.debug("CmmnDeployer: processing deployment {}", deployment.getName()); CmmnDeploymentBuilder cmmnDeploymentBuilder = null; Map<String, EngineResource> resources = deployment.getResources(); for (String resourceName : resources.keySet()) { if (org.flowable.cmmn.engine.impl.deployer.CmmnDeployer.isCmmnResource(resourceName)) { LOGGER.info("CmmnDeployer: processing resource {}", resourceName); if (cmmnDeploymentBuilder == null) { CmmnRepositoryService cmmnRepositoryService = CommandContextUtil.getCmmnRepositoryService(); cmmnDeploymentBuilder = cmmnRepositoryService.createDeployment().name(deployment.getName()); } cmmnDeploymentBuilder.addBytes(resourceName, resources.get(resourceName).getBytes()); } } if (cmmnDeploymentBuilder != null) { cmmnDeploymentBuilder.parentDeploymentId(deployment.getId()); cmmnDeploymentBuilder.key(deployment.getKey()); if (deployment.getTenantId() != null && deployment.getTenantId().length() > 0) { cmmnDeploymentBuilder.tenantId(deployment.getTenantId()); } cmmnDeploymentBuilder.deploy(); } }
protected boolean deploymentsDiffer(DeploymentEntity deployment, DeploymentEntity saved) { if (deployment.getResources() == null || saved.getResources() == null) { return true; } Map<String, EngineResource> resources = deployment.getResources(); Map<String, EngineResource> savedResources = saved.getResources(); for (String resourceName : resources.keySet()) { EngineResource savedResource = savedResources.get(resourceName); if (savedResource == null) return true; if (!savedResource.isGenerated()) { EngineResource resource = resources.get(resourceName); byte[] bytes = resource.getBytes(); byte[] savedBytes = savedResource.getBytes(); if (!Arrays.equals(bytes, savedBytes)) { return true; } } } return false; }
@Override public void deploy(EngineDeployment deployment, Map<String, Object> deploymentSettings) { LOGGER.debug("Processing deployment {}", deployment.getName()); CmmnParseResult parseResult = new CmmnParseResult(deployment); for (EngineResource resource : deployment.getResources().values()) { if (isCmmnResource(resource.getName())) { LOGGER.debug("Processing CMMN resource {}", resource.getName()); parseResult.merge(cmmnParser.parse(resource)); } } verifyCaseDefinitionsDoNotShareKeys(parseResult.getAllCaseDefinitions()); copyDeploymentValuesToCaseDefinitions(parseResult.getDeployment(), parseResult.getAllCaseDefinitions()); setResourceNamesOnCaseDefinitions(parseResult); createAndPersistNewDiagramsIfNeeded(parseResult); setCaseDefinitionDiagramNames(parseResult); if (deployment.isNew()) { Map<CaseDefinitionEntity, CaseDefinitionEntity> mapOfNewCaseDefinitionToPreviousVersion = getPreviousVersionsOfCaseDefinitions(parseResult); setCaseDefinitionVersionsAndIds(parseResult, mapOfNewCaseDefinitionToPreviousVersion); persistCaseDefinitions(parseResult); } else { makeCaseDefinitionsConsistentWithPersistedVersions(parseResult); } updateCachingAndArtifacts(parseResult); }
@Override public void deploy(EngineDeployment deployment, Map<String, Object> deploymentSettings) { LOGGER.debug("Processing app deployment {}", deployment.getName()); ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(); DeploymentManager deploymentManager = processEngineConfiguration.getDeploymentManager(); Object appResourceObject = null; DeploymentEntity deploymentEntity = (DeploymentEntity) deployment; Map<String, EngineResource> resources = deploymentEntity.getResources(); for (String resourceName : resources.keySet()) { if (resourceName.endsWith(".app")) { LOGGER.info("Processing app resource {}", resourceName); EngineResource resourceEntity = resources.get(resourceName); byte[] resourceBytes = resourceEntity.getBytes(); appResourceObject = processEngineConfiguration.getAppResourceConverter().convertAppResourceToModel(resourceBytes); } } if (appResourceObject != null) { deploymentManager.getAppResourceCache().add(deployment.getId(), appResourceObject); } } }
protected boolean deploymentsDiffer(DmnDeploymentEntity deployment, DmnDeploymentEntity saved) { if (deployment.getResources() == null || saved.getResources() == null) { return true; } Map<String, EngineResource> resources = deployment.getResources(); Map<String, EngineResource> savedResources = saved.getResources(); for (String resourceName : resources.keySet()) { EngineResource savedResource = savedResources.get(resourceName); if (savedResource == null) return true; EngineResource resource = resources.get(resourceName); byte[] bytes = resource.getBytes(); byte[] savedBytes = savedResource.getBytes(); if (!Arrays.equals(bytes, savedBytes)) { return true; } } return false; } }
public boolean shouldCreateDiagram(CaseDefinitionEntity caseDefinition, EngineDeployment deployment) { if (deployment.isNew() && caseDefinition.hasGraphicalNotation() && CommandContextUtil.getCmmnEngineConfiguration().isCreateDiagramOnDeploy()) { // If the 'getProcessDiagramResourceNameFromDeployment' call returns null, it means // no diagram image for the process definition was provided in the deployment resources. return ResourceNameUtil.getCaseDiagramResourceNameFromDeployment(caseDefinition, deployment.getResources()) == null; } return false; } }
@Override public void insert(DeploymentEntity deployment) { insert(deployment, false); for (EngineResource resource : deployment.getResources().values()) { resource.setDeploymentId(deployment.getId()); getResourceEntityManager().insert((ResourceEntity) resource); } }
/** * Updates all the process definition entities to have the correct resource names. */ public void setResourceNamesOnProcessDefinitions(ParsedDeployment parsedDeployment) { for (ProcessDefinitionEntity processDefinition : parsedDeployment.getAllProcessDefinitions()) { String resourceName = parsedDeployment.getResourceForProcessDefinition(processDefinition).getName(); processDefinition.setResourceName(resourceName); } }
/** * Updates all the case definition entities to have the correct diagram resource name. Must be called after createAndPersistNewDiagramsAsNeeded to ensure that any newly-created diagrams already * have their resources attached to the deployment. */ protected void setCaseDefinitionDiagramNames(CmmnParseResult parseResult) { Map<String, EngineResource> resources = parseResult.getDeployment().getResources(); for (CaseDefinitionEntity caseDefinition : parseResult.getAllCaseDefinitions()) { String diagramResourceName = ResourceNameUtil.getCaseDiagramResourceNameFromDeployment(caseDefinition, resources); caseDefinition.setDiagramResourceName(diagramResourceName); } }
@Override protected void executeParse(CmmnParserImpl cmmnParser, CmmnParseResult cmmnParseResult, Case caze) { CaseDefinitionEntity caseDefinitionEntity = CommandContextUtil.getCaseDefinitionEntityManager().create(); caseDefinitionEntity.setKey(caze.getId()); caseDefinitionEntity.setName(caze.getName()); caseDefinitionEntity.setDescription(caze.getDocumentation()); caseDefinitionEntity.setCategory(cmmnParseResult.getCmmnModel().getTargetNamespace()); caseDefinitionEntity.setDeploymentId(cmmnParseResult.getResourceEntity().getDeploymentId()); cmmnParseResult.addCaseDefinition(caseDefinitionEntity, cmmnParseResult.getResourceEntity(), cmmnParseResult.getCmmnModel()); processPlanFragment(cmmnParser, cmmnParseResult, caze.getPlanModel()); }
@Override public void deploy(EngineDeployment deployment, Map<String, Object> deploymentSettings) { if (!deployment.isNew()) { return; } LOGGER.debug("BpmnDeployer: processing deployment {}", deployment.getName()); DeploymentBuilder bpmnDeploymentBuilder = null; Map<String, EngineResource> resources = deployment.getResources(); for (String resourceName : resources.keySet()) { if (isBpmnResource(resourceName)) { LOGGER.info("BpmnDeployer: processing resource {}", resourceName); if (bpmnDeploymentBuilder == null) { RepositoryService repositoryService = CommandContextUtil.getProcessEngineConfiguration().getRepositoryService(); bpmnDeploymentBuilder = repositoryService.createDeployment().name(deployment.getName()); } bpmnDeploymentBuilder.addBytes(resourceName, resources.get(resourceName).getBytes()); } } if (bpmnDeploymentBuilder != null) { bpmnDeploymentBuilder.parentDeploymentId(deployment.getId()); bpmnDeploymentBuilder.key(deployment.getKey()); if (deployment.getTenantId() != null && deployment.getTenantId().length() > 0) { bpmnDeploymentBuilder.tenantId(deployment.getTenantId()); } bpmnDeploymentBuilder.deploy(); } }
protected boolean deploymentsDiffer(CmmnDeploymentEntity deployment, CmmnDeploymentEntity saved) { if (deployment.getResources() == null || saved.getResources() == null) { return true; } Map<String, EngineResource> resources = deployment.getResources(); Map<String, EngineResource> savedResources = saved.getResources(); for (String resourceName : resources.keySet()) { EngineResource savedResource = savedResources.get(resourceName); if (savedResource == null) { return true; } EngineResource resource = resources.get(resourceName); byte[] bytes = resource.getBytes(); byte[] savedBytes = savedResource.getBytes(); if (!Arrays.equals(bytes, savedBytes)) { return true; } } return false; }
@Override public void insert(CmmnDeploymentEntity deployment) { super.insert(deployment, true); for (EngineResource resource : deployment.getResources().values()) { resource.setDeploymentId(deployment.getId()); getCmmnResourceEntityManager().insert((CmmnResourceEntity) resource); } }
/** * Updates all the decision table entities to have the correct resource names. */ public void setResourceNamesOnDecisionTables(ParsedDeployment parsedDeployment) { for (DecisionTableEntity decisionTable : parsedDeployment.getAllDecisionTables()) { String resourceName = parsedDeployment.getResourceForDecisionTable(decisionTable).getName(); decisionTable.setResourceName(resourceName); } }
protected boolean deploymentsDiffer(AppDeploymentEntity deployment, AppDeploymentEntity saved) { if (deployment.getResources() == null || saved.getResources() == null) { return true; } Map<String, EngineResource> resources = deployment.getResources(); Map<String, EngineResource> savedResources = saved.getResources(); for (String resourceName : resources.keySet()) { EngineResource savedResource = savedResources.get(resourceName); if (savedResource == null) { return true; } EngineResource resource = resources.get(resourceName); byte[] bytes = resource.getBytes(); byte[] savedBytes = savedResource.getBytes(); if (!Arrays.equals(bytes, savedBytes)) { return true; } } return false; }
@Override public void insert(AppDeploymentEntity deployment) { super.insert(deployment, true); for (EngineResource resource : deployment.getResources().values()) { resource.setDeploymentId(deployment.getId()); getAppResourceEntityManager().insert((AppResourceEntity) resource); } }
protected void setResourceNamesOnCaseDefinitions(CmmnParseResult parseResult) { for (CaseDefinitionEntity caseDefinitionEntity : parseResult.getAllCaseDefinitions()) { String resourceName = parseResult.getResourceForCaseDefinition(caseDefinitionEntity).getName(); caseDefinitionEntity.setResourceName(resourceName); } }
@Override public CmmnParseResult parse(EngineResource resourceEntity) { try (ByteArrayInputStream inputStream = new ByteArrayInputStream(resourceEntity.getBytes())) { CmmnParseResult cmmnParseResult = parse(resourceEntity, new InputStreamSource(inputStream)); processDI(cmmnParseResult.getCmmnModel(), cmmnParseResult.getAllCaseDefinitions()); return cmmnParseResult; } catch (IOException e) { logger.error("Could not read bytes from CMMN resource", e); return new CmmnParseResult(); } }
@Override public void insert(DmnDeploymentEntity deployment) { super.insert(deployment, true); for (EngineResource resource : deployment.getResources().values()) { resource.setDeploymentId(deployment.getId()); getResourceEntityManager().insert((DmnResourceEntity) resource); } }