/** * 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); } }
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 deploy(EngineDeployment deployment, Map<String, Object> deploymentSettings) { LOGGER.debug("Processing rules deployment {}", deployment.getName()); KnowledgeBuilder knowledgeBuilder = null; DeploymentManager deploymentManager = CommandContextUtil.getProcessEngineConfiguration().getDeploymentManager(); Map<String, EngineResource> resources = deployment.getResources(); for (String resourceName : resources.keySet()) { if (resourceName.endsWith(".drl")) { // is only parsing .drls sufficient? what about other rule dsl's? (@see ResourceType) LOGGER.info("Processing rules resource {}", resourceName); if (knowledgeBuilder == null) { knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); } EngineResource resourceEntity = resources.get(resourceName); byte[] resourceBytes = resourceEntity.getBytes(); Resource droolsResource = ResourceFactory.newByteArrayResource(resourceBytes); knowledgeBuilder.add(droolsResource, ResourceType.DRL); } } if (knowledgeBuilder != null) { KieBase kieBase = knowledgeBuilder.newKieBase(); deploymentManager.getKnowledgeBaseCache().add(deployment.getId(), kieBase); } } }
@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(); } }
@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(); } }
@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); }