예제 #1
0
 private static void ValidateSecondCapTwoTransitionsProperties(WfCreateActivityParam cap)
 {
     Assert.AreEqual(cap.TransitionTemplates.Count, cap.CreatedDescriptor.ToTransitions.Count);
     Assert.AreEqual(cap.CreatedDescriptor.Process.InitialActivity.Key, cap.CreatedDescriptor.ToTransitions[1].ToActivity.Key);
     Assert.IsTrue(cap.CreatedDescriptor.ToTransitions[1].IsBackward);
     Assert.IsFalse(cap.CreatedDescriptor.ToTransitions[1].DefaultSelect);
 }
예제 #2
0
        /// <summary>
        /// 初始化出线的属性
        /// </summary>
        /// <param name="cap"></param>
        /// <param name="row"></param>
        private static void InitTransitionTemplatesProperties(WfCreateActivityParam cap, SOARolePropertyDefinitionCollection definitions, SOARolePropertyRow row)
        {
            string json = row.Values.GetValue(SOARolePropertyDefinition.TransitionsColumn,
                                              row.GetPropertyDefinitions().GetColumnDefaultValue(SOARolePropertyDefinition.TransitionsColumn, string.Empty));

            if (json.IsNotEmpty())
            {
                cap.TransitionTemplates.FromJson(json);
            }
        }
예제 #3
0
        /// <summary>
        /// 准备带线的一个活动的创建参数,一条退回到首节点,一条继续往下(默认选择)
        /// </summary>
        /// <returns></returns>
        private static WfCreateActivityParamCollection PrepareOneActivityWithTransitionsCreateParams()
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            WfCreateActivityParam cap1 = new WfCreateActivityParam();

            cap1.ActivitySN = 10;
            PrepareFirstCapTwoTransitions(cap1);

            result.Add(cap1);

            return(result);
        }
예제 #4
0
        private static void PrepareSecondCapTwoTransitions(WfCreateActivityParam cap)
        {
            WfCreateTransitionParam transition1 = new WfCreateTransitionParam();

            transition1.Parameters["DefaultSelect"] = true;

            WfCreateTransitionParam transition2 = new WfCreateTransitionParam();

            transition2.Parameters["DefaultSelect"] = false;
            transition2.Parameters["ToActivityKey"] = "FirstActivity";
            transition2.Parameters["IsReturn"]      = true;

            cap.TransitionTemplates.Add(transition1);
            cap.TransitionTemplates.Add(transition2);
        }
예제 #5
0
        //沈峥注释掉,2015/6/21.必须提供列定义
        //public void FillCreateActivityParams(WfCreateActivityParamCollection capc, PropertyDefineCollection definedProperties)
        //{
        //    SOARolePropertyDefinitionCollection definitions = null;

        //    SOARole role = this._Role as SOARole;

        //    if (role != null)
        //        definitions = role.PropertyDefinitions;
        //    else
        //        definitions = new SOARolePropertyDefinitionCollection();

        //    this.FillCreateActivityParams(capc, definitions, definedProperties);
        //}

        public void FillCreateActivityParams(WfCreateActivityParamCollection capc, SOARolePropertyDefinitionCollection definitions, PropertyDefineCollection definedProperties)
        {
            capc.NullCheck("capc");
            definitions.NullCheck("definitions");

            SOARolePropertyRowUsersCollection rowsUsers = GenerateRowsUsers();

            rowsUsers.ForEach(rowUsers => capc.Add(WfCreateActivityParam.FromRowUsers(rowUsers, definitions, definedProperties)));

            if (definitions.MatrixType == WfMatrixType.ActivityMatrix)
            {
                capc.MergeSameActivityParamBySN();
            }

            capc.ForEach(cap => InitTransitionTemplatesProperties(cap, definitions, cap.Source));
        }
예제 #6
0
        /// <summary>
        /// 准备两个活动的创建参数,没有线参数
        /// </summary>
        /// <returns></returns>
        private static WfCreateActivityParamCollection PrepareTwoActivitiesCreateParams()
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            WfCreateActivityParam cap1 = new WfCreateActivityParam();

            cap1.ActivitySN = 10;

            result.Add(cap1);

            WfCreateActivityParam cap2 = new WfCreateActivityParam();

            cap2.ActivitySN = 20;

            cap2.Template.CodeName = "TestCodeName";

            result.Add(cap2);

            return(result);
        }
예제 #7
0
        private static WfCreateActivityParamCollection UsersToCreateActivityParams(OguDataCollection <IUser> users, PropertyDefineCollection definedProperties)
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            int i = 0;

            foreach (IUser user in users)
            {
                WfCreateActivityParam param = new WfCreateActivityParam();

                param.ActivitySN = i++;
                param.Template.Properties.MergeDefinedProperties(definedProperties);
                param.Template.Resources.Add(new WfUserResourceDescriptor(user));
                param.Template.Variables.Add(new WfVariableDescriptor(WfProcessBuilderBase.AutoBuiltActivityVariableName, "True", DataType.Boolean));

                result.Add(param);
            }

            return(result);
        }
예제 #8
0
        /// <summary>
        /// 准备带线的两个活动的创建参数
        /// </summary>
        /// <returns></returns>
        private static WfCreateActivityParamCollection PrepareTwoActivitiesWithTransitionsCreateParams()
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            WfCreateActivityParam cap1 = new WfCreateActivityParam();

            cap1.ActivitySN = 10;
            PrepareFirstCapTwoTransitions(cap1);

            result.Add(cap1);

            WfCreateActivityParam cap2 = new WfCreateActivityParam();

            cap2.ActivitySN = 20;

            cap2.Template.CodeName = "TestCodeName";

            PrepareSecondCapTwoTransitions(cap2);

            result.Add(cap2);

            return(result);
        }
 private static void ValidateSecondCapTwoTransitionsProperties(WfCreateActivityParam cap)
 {
     Assert.AreEqual(cap.TransitionTemplates.Count, cap.CreatedDescriptor.ToTransitions.Count);
     Assert.AreEqual(cap.CreatedDescriptor.Process.InitialActivity.Key, cap.CreatedDescriptor.ToTransitions[1].ToActivity.Key);
     Assert.IsTrue(cap.CreatedDescriptor.ToTransitions[1].IsBackward);
     Assert.IsFalse(cap.CreatedDescriptor.ToTransitions[1].DefaultSelect);
 }
        private static void PrepareSecondCapTwoTransitions(WfCreateActivityParam cap)
        {
            WfCreateTransitionParam transition1 = new WfCreateTransitionParam();

            transition1.Parameters["DefaultSelect"] = true;

            WfCreateTransitionParam transition2 = new WfCreateTransitionParam();

            transition2.Parameters["DefaultSelect"] = false;
            transition2.Parameters["ToActivityKey"] = "FirstActivity";
            transition2.Parameters["IsReturn"] = true;

            cap.TransitionTemplates.Add(transition1);
            cap.TransitionTemplates.Add(transition2);
        }
        /// <summary>
        /// 准备带线的一个活动的创建参数,一条退回到首节点,一条继续往下(默认选择)
        /// </summary>
        /// <returns></returns>
        private static WfCreateActivityParamCollection PrepareOneActivityWithTransitionsCreateParams()
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            WfCreateActivityParam cap1 = new WfCreateActivityParam();

            cap1.ActivitySN = 10;
            PrepareFirstCapTwoTransitions(cap1);

            result.Add(cap1);

            return result;
        }
        /// <summary>
        /// 准备带线的两个活动的创建参数
        /// </summary>
        /// <returns></returns>
        private static WfCreateActivityParamCollection PrepareTwoActivitiesWithTransitionsCreateParams()
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            WfCreateActivityParam cap1 = new WfCreateActivityParam();

            cap1.ActivitySN = 10;
            PrepareFirstCapTwoTransitions(cap1);

            result.Add(cap1);

            WfCreateActivityParam cap2 = new WfCreateActivityParam();

            cap2.ActivitySN = 20;

            cap2.Template.CodeName = "TestCodeName";

            PrepareSecondCapTwoTransitions(cap2);

            result.Add(cap2);

            return result;
        }
        /// <summary>
        /// 准备两个活动的创建参数,没有线参数
        /// </summary>
        /// <returns></returns>
        private static WfCreateActivityParamCollection PrepareTwoActivitiesCreateParams()
        {
            WfCreateActivityParamCollection result = new WfCreateActivityParamCollection();

            WfCreateActivityParam cap1 = new WfCreateActivityParam();

            cap1.ActivitySN = 10;

            result.Add(cap1);

            WfCreateActivityParam cap2 = new WfCreateActivityParam();

            cap2.ActivitySN = 20;

            cap2.Template.CodeName = "TestCodeName";

            result.Add(cap2);

            return result;
        }
        private WfActivityDescriptorCollection CreateActivities(WfTransitionDescriptorCollection fromTransitions, WfCreateActivityParamCollection capc, WfTransitionDescriptorCollection toTransitions)
        {
            WfActivityDescriptorCollection result = new WfActivityDescriptorCollection(this.Process);

            IWfActivityDescriptor firstDynamicActivity     = null;
            IWfActivityDescriptor lastDynamicActivity      = null;
            WfCreateActivityParam lastCreatedActivityParam = null;

            foreach (WfCreateActivityParam cap in capc)
            {
                WfActivityDescriptor actDesp = (WfActivityDescriptor)cap.Template.Clone();

                actDesp.Process = this.Process;

                string newActKey = "ND" + cap.ActivitySN;

                if (this.Process.Activities.ContainsKey(newActKey))
                {
                    newActKey = this.Process.FindNotUsedActivityKey();
                }

                actDesp.Key           = newActKey;
                cap.CreatedDescriptor = actDesp;

                this.Process.Activities.Add(actDesp);

                if (lastCreatedActivityParam != null)
                {
                    lastCreatedActivityParam.DefaultNextDescriptor = actDesp;
                }

                lastCreatedActivityParam = cap;

                if (this.IsMainStreamActivity == false && this.ProcessInstance != null)
                {
                    WfActivityBase.CreateActivityInstance(actDesp, this.ProcessInstance);
                }

                if (firstDynamicActivity == null)
                {
                    firstDynamicActivity = actDesp;
                }

                if (lastDynamicActivity != null)
                {
                    WfTransitionDescriptor newTransition = (WfTransitionDescriptor)lastDynamicActivity.ToTransitions.AddForwardTransition(actDesp);

                    //如果不是第一个生成的活动
                    if (firstDynamicActivity != actDesp)
                    {
                        newTransition.GeneratedByTemplate = true;
                        newTransition.TemplateKey         = this.Key;
                    }
                }

                lastDynamicActivity = actDesp;

                result.Add(actDesp);
            }

            if (firstDynamicActivity != null && lastDynamicActivity != null)
            {
                SetEntryTransitionsProperties(firstDynamicActivity, fromTransitions);

                if (lastCreatedActivityParam != null)
                {
                    IWfTransitionDescriptor defaultTransition =
                        toTransitions.GetAllConditionMatchedTransitions().FindDefaultSelectTransition(true);

                    if (defaultTransition != null)
                    {
                        lastCreatedActivityParam.DefaultNextDescriptor = defaultTransition.ToActivity;
                    }
                }

                capc.AdjustTransitionsByTemplate(this.Key);

                //如果在活动模板参数的最后一个活动没有配置出线,则使用默认的出线;否则使用配置的出线
                if (lastDynamicActivity.ToTransitions.Count == 0)
                {
                    SetExitTransitionsProperties(lastDynamicActivity, toTransitions);
                }
                else
                {
                    lastDynamicActivity.ToTransitions.ForEach(t => SetDynamicTransitionProperties(null, t, this, false));
                }
            }
            else
            {
                //当没有动态活动生成时,前后的活动直接串联到一起
                JoinOriginalActivitiesAndSetProperties(fromTransitions, toTransitions);
            }

            //将模版点的进出线的Enabled都设置为False
            fromTransitions.ForEach(t => ((WfTransitionDescriptor)t).Enabled = false);
            toTransitions.ForEach(t => ((WfTransitionDescriptor)t).Enabled   = false);

            return(result);
        }