private static WfGlobalParameters LoadFromDB(string key) { string sql = string.Format("SELECT [PROPERTIES] FROM WF.GLOBAL_PARAMETERS WHERE {0}", GetWhereSqlClauseBuilder(key).ToSqlString(TSqlBuilder.Instance)); WfGlobalParameters result = null; string properties = (string)DbHelper.RunSqlReturnScalar(sql, WorkflowSettings.GetConfig().ConnectionName); if (properties.IsNotEmpty()) { XElementFormatter formatter = new XElementFormatter(); formatter.OutputShortType = WorkflowSettings.GetConfig().OutputShortType; XElement root = XElement.Parse(properties); object deserializedData = formatter.Deserialize(root); if (deserializedData is PropertyValueCollection) { result = new WfGlobalParameters(); result.Key = key; result._Properties = (PropertyValueCollection)deserializedData; } else { result = (WfGlobalParameters)deserializedData; } } return(result); }
public static WfGlobalParameters GetProperties(string propsKey) { propsKey.CheckStringIsNullOrEmpty("propsKey"); string cacheKey = CalculateCacheKey(propsKey); WfGlobalParameters parameters = WfGlobalParametersCache.Instance.GetOrAddNewValue(cacheKey, (cache, key) => { WfGlobalParameters ps = LoadProperties(propsKey); MixedDependency dependency = new MixedDependency(new UdpNotifierCacheDependency(), new MemoryMappedFileNotifierCacheDependency()); cache.Add(key, ps, dependency); return(ps); }); return(parameters); }
public static WfGlobalParameters LoadProperties(string key) { key.CheckStringIsNullOrEmpty("key"); WfGlobalParameters parameters = LoadFromDB(key); if (parameters == null) { parameters = new WfGlobalParameters() { Key = key } } ; PropertyDefineCollection definedProperties = new PropertyDefineCollection(); definedProperties.LoadPropertiesFromConfiguration(WfActivitySettings.GetConfig().PropertyGroups["GlobalParemeters"]); parameters.Properties.MergeDefinedProperties(definedProperties); return(parameters); }
/// <summary> /// 向上递归查找参数。如果能找到appCodeName和progName对应参数,且参数值不是默认值,则使用。否则使用Default的参数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="appCodeName"></param> /// <param name="progCodeName"></param> /// <param name="propertyName"></param> /// <param name="defaultValue"></param> /// <returns></returns> public static T GetValueRecursively <T>(string appCodeName, string progCodeName, string propertyName, T defaultValue) { propertyName.CheckStringIsNullOrEmpty("propertyName"); WfGlobalParameters parameters = GetProperties(appCodeName, progCodeName); if (parameters == null) { parameters = WfGlobalParameters.Default; } else { if (parameters.Properties.ContainsKey(propertyName)) { if (parameters.Properties[propertyName].IsDefaultValue()) { parameters = WfGlobalParameters.Default; } } } return(parameters.Properties.GetValue <T>(propertyName, defaultValue)); }