@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 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); } }
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 app deployment {}", deployment.getName()); appResourceModel = appEngineConfiguration.getAppResourceConverter().convertAppResourceToModel(resourceBytes); if (deployment.isNew()) { AppDefinitionEntity latestAppDefinition = getMostRecentVersionOfAppDefinition(appResourceModel, deployment.getTenantId()); int version = 1; if (latestAppDefinition != null) { newAppDefinition.setName(appResourceModel.getName()); newAppDefinition.setDescription(appResourceModel.getDescription()); newAppDefinition.setTenantId(deployment.getTenantId()); newAppDefinition.setDeploymentId(deployment.getId()); newAppDefinition.setResourceName(resourceName); appDefinitionEntityManager.insert(newAppDefinition, false); AppDefinitionEntity appDefinitionEntity = getPersistedInstanceOfAppDefinition(appResourceModel.getKey(), deployment.getId(), deployment.getTenantId()); updateCachingAndArtifacts(appDefinitionEntity, appResourceModel, deploymentEntity);
@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) { 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); } } }
@Override public void deploy(EngineDeployment deployment, Map<String, Object> deploymentSettings) { LOGGER.debug("Processing deployment {}", deployment.getName()); setProcessDefinitionDiagramNames(parsedDeployment); if (deployment.isNew()) { if (!deploymentSettings.containsKey(DeploymentSettings.IS_DERIVED_DEPLOYMENT)) { Map<ProcessDefinitionEntity, ProcessDefinitionEntity> mapOfNewProcessDefinitionToPreviousVersion = getPreviousVersionsOfProcessDefinitions(parsedDeployment); if (deployment.isNew()) { dispatchProcessDefinitionEntityInitializedEvent(parsedDeployment);
protected ProcessDefinitionEntity transformProcess(BpmnParse bpmnParse, Process process) { ProcessDefinitionEntity currentProcessDefinition = CommandContextUtil.getProcessDefinitionEntityManager().create(); bpmnParse.setCurrentProcessDefinition(currentProcessDefinition); /* * Mapping object model - bpmn xml: processDefinition.id -> generated by activiti engine processDefinition.key -> bpmn id (required) processDefinition.name -> bpmn name (optional) */ currentProcessDefinition.setKey(process.getId()); currentProcessDefinition.setName(process.getName()); currentProcessDefinition.setCategory(bpmnParse.getBpmnModel().getTargetNamespace()); currentProcessDefinition.setDescription(process.getDocumentation()); currentProcessDefinition.setDeploymentId(bpmnParse.getDeployment().getId()); if (bpmnParse.getDeployment().getEngineVersion() != null) { currentProcessDefinition.setEngineVersion(bpmnParse.getDeployment().getEngineVersion()); } createEventListeners(bpmnParse, process.getEventListeners()); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Parsing process {}", currentProcessDefinition.getKey()); } bpmnParse.processFlowElements(process.getFlowElements()); processArtifacts(bpmnParse, process.getArtifacts()); return currentProcessDefinition; }
/** * 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 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(); } }