/// <summary>
        /// 根据带Activity前缀的Role的属性名称,初始化Activity的属性值
        /// </summary>
        /// <param name="cap"></param>
        /// <param name="row"></param>
        /// <param name="pd"></param>
        private static void ProcessActivityPropertyByRoleProperty(WfCreateActivityParam cap, SOARolePropertyRow row, SOARolePropertyDefinition pd)
        {
            const string prefixName = "Activity";

            if (pd.Name.IndexOf(prefixName, StringComparison.OrdinalIgnoreCase) == 0)
            {
                string actPropertyName = pd.Name.Substring(prefixName.Length);

                string propertyValue = row.Values.GetValue(pd.Name, row.GetPropertyDefinitions().GetColumnDefaultValue(pd.Name, string.Empty));

                cap.Template.Properties.TrySetValue(actPropertyName, propertyValue);

                cap.RoleDefineActivityPropertyNames.Add(actPropertyName);
            }
        }
        private static void ProcessActivityPropertyByRoleJsonProperty(WfCreateActivityParam cap, SOARolePropertyRow row, SOARolePropertyDefinition pd)
        {
            string json = row.Values.GetValue(pd.Name, row.GetPropertyDefinitions().GetColumnDefaultValue(pd.Name, string.Empty));

            if (json.IsNotEmpty())
            {
                Dictionary <string, object> data = JSONSerializerExecute.Deserialize <Dictionary <string, object> >(json);

                foreach (KeyValuePair <string, object> kp in data)
                {
                    cap.Template.Properties.TrySetValue(kp.Key, kp.Value);
                    //ydz 2013-2-18 解决活动矩阵定义的属性优先于活动模板定义的属性
                    cap.RoleDefineActivityPropertyNames.Add(kp.Key);
                }
            }
        }