public static WfCreateActivityParam FromRowUsers(SOARolePropertyRowUsers rowUsers, SOARolePropertyDefinitionCollection definitions, PropertyDefineCollection definedProperties)
        {
            rowUsers.NullCheck("rowUsers");
            definitions.NullCheck("definitions");
            definedProperties.NullCheck("definedProperties");

            WfCreateActivityParam cap = new WfCreateActivityParam();

            cap.Source = rowUsers.Row;

            string strActivitySN = rowUsers.Row.Values.GetValue(SOARolePropertyDefinition.ActivitySNColumn, "0");

            int activitySN = 0;

            int.TryParse(strActivitySN, out activitySN).FalseThrow("不能将值为{0}的ActivitySN转换为整数", strActivitySN);

            cap.ActivitySN = activitySN;
            cap.Template.Properties.MergeDefinedProperties(definedProperties);

            InitActivityTemplateProperties(cap, definitions, rowUsers.Row);

            rowUsers.Users.ForEach(u => cap.Template.Resources.Add(new WfUserResourceDescriptor(u)));
            rowUsers.EnterNotifyUsers.ForEach(u => cap.Template.EnterEventReceivers.Add(new WfUserResourceDescriptor(u)));
            rowUsers.LeaveNotifyUsers.ForEach(u => cap.Template.LeaveEventReceivers.Add(new WfUserResourceDescriptor(u)));

            return(cap);
        }
Exemplo n.º 2
0
        private string SNActivityKey(int sn, WfCreateActivityFunctionContext callerContext)
        {
            string result = string.Empty;

            WfCreateActivityParam matchParam = callerContext.CreateActivityParams.FindByActivitySN(sn);

            if (matchParam != null && matchParam.CreatedDescriptor != null)
            {
                result = matchParam.CreatedDescriptor.Key;
            }

            return(result);
        }
        /// <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);
                }
            }
        }
        private static void InitActivityTemplateProperties(WfCreateActivityParam cap, SOARolePropertyDefinitionCollection definitions, SOARolePropertyRow row)
        {
            foreach (SOARolePropertyDefinition pd in definitions)
            {
                if (string.Compare(pd.Name, SOARolePropertyDefinition.ActivityPropertiesColumn, true) == 0)
                {
                    ProcessActivityPropertyByRoleJsonProperty(cap, row, pd);
                }
                else
                {
                    ProcessActivityPropertyByRoleProperty(cap, row, pd);
                }
            }

            if (cap.Template.Variables.ContainsKey(WfProcessBuilderBase.AutoBuiltActivityVariableName))
            {
                cap.Template.Variables[WfProcessBuilderBase.AutoBuiltActivityVariableName].OriginalValue = "True";
            }
            else
            {
                cap.Template.Variables.Add(new WfVariableDescriptor(WfProcessBuilderBase.AutoBuiltActivityVariableName, "True", DataType.Boolean));
            }
        }
Exemplo n.º 6
0
 public WfCreateActivityFunctionContext(IWfProcessDescriptor processDesp, WfCreateActivityParamCollection createActivityParams, WfCreateActivityParam currentActivityParam)
 {
     this.ProcessDescriptor    = processDesp;
     this.CreateActivityParams = createActivityParams;
     this.CurrentActivityParam = currentActivityParam;
 }