/// <summary> /// Ensures that the process definition is cached in the appropriate places, including the /// deployment's collection of deployed artifacts and the deployment manager's cache, as well /// as caching any ProcessDefinitionInfos. /// </summary> public virtual void UpdateCachingAndArtifacts(ParsedDeployment parsedDeployment) { ICommandContext commandContext = Context.CommandContext; ProcessEngineConfigurationImpl processEngineConfiguration = Context.ProcessEngineConfiguration; IDeploymentCache <ProcessDefinitionCacheEntry> processDefinitionCache = processEngineConfiguration.DeploymentManager.ProcessDefinitionCache; IDeploymentEntity deployment = parsedDeployment.Deployment; foreach (IProcessDefinitionEntity processDefinition in parsedDeployment.AllProcessDefinitions) { BpmnModel bpmnModel = parsedDeployment.GetBpmnModelForProcessDefinition(processDefinition); Process process = parsedDeployment.GetProcessModelForProcessDefinition(processDefinition); ProcessDefinitionCacheEntry cacheEntry = new ProcessDefinitionCacheEntry(processDefinition, bpmnModel, process); processDefinitionCache.Add(processDefinition.Id, cacheEntry); AddDefinitionInfoToCache(processDefinition, processEngineConfiguration, commandContext); // Add to deployment for further usage deployment.AddDeployedArtifact(processDefinition); } }
public virtual void Deploy(IDeploymentEntity deployment, IDictionary <string, object> deploymentSettings) { log.LogDebug($"Processing deployment {deployment.Name}"); // The ParsedDeployment represents the deployment, the process definitions, and the BPMN // resource, parse, and model associated with each process definition. ParsedDeployment parsedDeployment = parsedDeploymentBuilderFactory.GetBuilderForDeploymentAndSettings(deployment, deploymentSettings).Build(bpmnDeploymentHelper); bpmnDeploymentHelper.VerifyProcessDefinitionsDoNotShareKeys(parsedDeployment.AllProcessDefinitions); bpmnDeploymentHelper.CopyDeploymentValuesToProcessDefinitions(parsedDeployment.Deployment, parsedDeployment.AllProcessDefinitions); bpmnDeploymentHelper.ResourceNamesOnProcessDefinitions(parsedDeployment); // createAndPersistNewDiagramsIfNeeded(parsedDeployment); ProcessDefinitionDiagramNames(parsedDeployment); if (deployment.New) { IDictionary <IProcessDefinitionEntity, IProcessDefinitionEntity> mapOfNewProcessDefinitionToPreviousVersion = GetPreviousVersionsOfProcessDefinitions(parsedDeployment); SetProcessDefinitionVersionsAndIds(parsedDeployment, mapOfNewProcessDefinitionToPreviousVersion); PersistProcessDefinitionsAndAuthorizations(parsedDeployment); UpdateTimersAndEvents(parsedDeployment, mapOfNewProcessDefinitionToPreviousVersion); DispatchProcessDefinitionEntityInitializedEvent(parsedDeployment); } else { MakeProcessDefinitionsConsistentWithPersistedVersions(parsedDeployment); } cachingAndArtifactsManager.UpdateCachingAndArtifacts(parsedDeployment); foreach (IProcessDefinitionEntity processDefinition in parsedDeployment.AllProcessDefinitions) { BpmnModel bpmnModel = parsedDeployment.GetBpmnModelForProcessDefinition(processDefinition); CreateLocalizationValues(processDefinition.Id, bpmnModel.GetProcessById(processDefinition.Key)); } }