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); }
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)); } }
public WfCreateActivityFunctionContext(IWfProcessDescriptor processDesp, WfCreateActivityParamCollection createActivityParams, WfCreateActivityParam currentActivityParam) { this.ProcessDescriptor = processDesp; this.CreateActivityParams = createActivityParams; this.CurrentActivityParam = currentActivityParam; }