public ILogicEvaluator CreateEvaluator(IProcessExecutionContext executionContext, IRecordPointer <Guid> evaluatorId, ILogicEvaluatorType evaluatorType, string parameters, bool useCache = true) { string recordKey = CACHE_KEY + evaluatorId.Id.ToString(); var cacheTimeout = useCache ? getCacheTimeout(executionContext) : null; useCache = useCache && executionContext.Cache != null && cacheTimeout != null; if (useCache && executionContext.Cache.Exists(recordKey)) { return(executionContext.Cache.Get <ILogicEvaluator>(recordKey)); } var serializedParameter = ParameterSerializer.CreateParamters(parameters); var evaluator = new LogicEvaluator(evaluatorType, serializedParameter); if (useCache) { executionContext.Cache.Add <ILogicEvaluator>(recordKey, evaluator, cacheTimeout.Value); } return(evaluator); }