/// <summary> /// 复制一个流程的节点描述,生成一个新的key /// </summary> /// <returns></returns> public virtual IWfActivityDescriptor CloneDescriptor() { WfActivityDescriptor result = CreateNewDescriptor(); result.Key = this.Process.FindNotUsedActivityKey(); result.Name = this.Name; result.Description = this.Description; this.Variables.ForEach(variable => result.Variables.Add(variable)); this.Resources.ForEach(resource => result.Resources.Add(resource)); foreach (KeyValuePair <string, object> kp in this.ExtendedProperties) { result.ExtendedProperties.Add(kp.Key, kp.Value); } return(result); }
/// <summary> /// 在向 DictionaryBase 实例中插入新元素之前执行其他自定义进程 /// </summary> /// <param name="index">index</param> /// <param name="value">value</param> /// <remarks> /// 处理过程:先在WfActivityDescriptorCollection中检验所加点的合法性ValidateActivity()(只能由一个开始点和一个结束点) /// 将_Process值赋给item.Process,使每个点都包含全部流程点的属性,方便从任一点遍历整个流程 /// </remarks> protected override void OnInsert(int index, object value) { WfActivityDescriptor item = (WfActivityDescriptor)value; ValidateActivity(item); item.Process = _Process; base.OnInsert(index, value); if (item is IWfInitialActivityDescriptor) { _InitialActivity = (IWfInitialActivityDescriptor)item; } else if (item is IWfCompletedActivityDescriptor) { _CompletedActivity = (IWfCompletedActivityDescriptor)item; } }