예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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;
            }
        }