Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        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));
            }
        }