Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="processDefinitionId"></param>
        /// <returns></returns>
        protected internal static JToken GetProcessDefinitionInfoNode(string processDefinitionId)
        {
            IDictionary <string, JToken> bpmnOverrideMap = BpmnOverrideContext;

            if (!bpmnOverrideMap.ContainsKey(processDefinitionId))
            {
                ProcessDefinitionInfoCacheObject cacheObject = ProcessEngineConfiguration.DeploymentManager.ProcessDefinitionInfoCache.Get(processDefinitionId);

                AddBpmnOverrideElement(processDefinitionId, cacheObject.InfoNode);
            }

            return(BpmnOverrideContext[processDefinitionId]);
        }
Exemple #2
0
        protected internal virtual void AddDefinitionInfoToCache(IProcessDefinitionEntity processDefinition, ProcessEngineConfigurationImpl processEngineConfiguration, ICommandContext commandContext)
        {
            if (!processEngineConfiguration.EnableProcessDefinitionInfoCache)
            {
                return;
            }

            DeploymentManager deploymentManager = processEngineConfiguration.DeploymentManager;
            IProcessDefinitionInfoEntityManager definitionInfoEntityManager = commandContext.ProcessDefinitionInfoEntityManager;
            ObjectMapper objectMapper = commandContext.ProcessEngineConfiguration.ObjectMapper;
            IProcessDefinitionInfoEntity definitionInfoEntity = definitionInfoEntityManager.FindProcessDefinitionInfoByProcessDefinitionId(processDefinition.Id);

            JToken infoNode = null;

            if (definitionInfoEntity is object && definitionInfoEntity.InfoJsonId is object)
            {
                byte[] infoBytes = definitionInfoEntityManager.FindInfoJsonById(definitionInfoEntity.InfoJsonId);
                if (infoBytes != null)
                {
                    try
                    {
                        infoNode = objectMapper.ReadTree(infoBytes);
                    }
                    catch (Exception)
                    {
                        throw new ActivitiException("Error deserializing json info for process definition " + processDefinition.Id);
                    }
                }
            }

            ProcessDefinitionInfoCacheObject definitionCacheObject = new ProcessDefinitionInfoCacheObject();

            if (definitionInfoEntity == null)
            {
                definitionCacheObject.Revision = 0;
            }
            else
            {
                definitionCacheObject.Id       = definitionInfoEntity.Id;
                definitionCacheObject.Revision = definitionInfoEntity.Revision;
            }

            if (infoNode == null)
            {
                infoNode = objectMapper.CreateObjectNode();
            }
            definitionCacheObject.InfoNode = infoNode;

            deploymentManager.ProcessDefinitionInfoCache.Add(processDefinition.Id, definitionCacheObject);
        }
        public virtual JToken Execute(ICommandContext commandContext)
        {
            if (string.IsNullOrWhiteSpace(processDefinitionId))
            {
                throw new ActivitiIllegalArgumentException("process definition id is null");
            }

            JToken            resultNode        = null;
            DeploymentManager deploymentManager = commandContext.ProcessEngineConfiguration.DeploymentManager;

            // make sure the process definition is in the cache
            deploymentManager.FindDeployedProcessDefinitionById(processDefinitionId);

            ProcessDefinitionInfoCacheObject definitionInfoCacheObject = deploymentManager.ProcessDefinitionInfoCache.Get(processDefinitionId);

            if (definitionInfoCacheObject != null)
            {
                resultNode = definitionInfoCacheObject.InfoNode;
            }

            return(resultNode);
        }