protected internal virtual ProcessDefinitionInfoCacheObject RetrieveProcessDefinitionInfoCacheObject(string processDefinitionId, ICommandContext commandContext) { IProcessDefinitionInfoEntityManager infoEntityManager = commandContext.ProcessDefinitionInfoEntityManager; ObjectMapper objectMapper = commandContext.ProcessEngineConfiguration.ObjectMapper; ProcessDefinitionInfoCacheObject cacheObject = cache.GetOrCreate(processDefinitionId, (key) => new ProcessDefinitionInfoCacheObject() { Revision = 0, InfoNode = objectMapper.CreateObjectNode() }); IProcessDefinitionInfoEntity infoEntity = infoEntityManager.FindProcessDefinitionInfoByProcessDefinitionId(processDefinitionId); if (infoEntity != null && infoEntity.Revision != cacheObject.Revision) { cacheObject.Revision = infoEntity.Revision; if (infoEntity.InfoJsonId is object) { byte[] infoBytes = infoEntityManager.FindInfoJsonById(infoEntity.InfoJsonId); try { JToken infoNode = objectMapper.ReadTree(infoBytes); cacheObject.InfoNode = infoNode; } catch (Exception e) { throw new ActivitiException("Error reading json info node for process definition " + processDefinitionId, e); } } } else if (infoEntity == null) { cacheObject.Revision = 0; cacheObject.InfoNode = objectMapper.CreateObjectNode(); } return(cacheObject); }
public virtual void Add(string id, ProcessDefinitionInfoCacheObject obj) { cache.Set(id, obj); }