/// <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]); }
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); }