public override IWfProcessDescriptor Build(string processKey, string processName)
        {
            processKey.CheckStringIsNullOrEmpty("processKey");
            processName.CheckStringIsNullOrEmpty("processName");

            IWfProcessDescriptor processDesp = base.Build(processKey, processName);

            IWfActivityDescriptor currentActDesp = processDesp.InitialActivity;

            for (int i = 0; i < _StepUsers.Length; i++)
            {
                WfActivityDescriptor actDesp = new WfActivityDescriptor(processDesp.FindNotUsedActivityKey(), WfActivityType.NormalActivity);
                actDesp.ActivityType = WfActivityType.NormalActivity;

                actDesp.Name = _StepUsers[i].DisplayName;
                actDesp.Resources.Add(new WfUserResourceDescriptor(_StepUsers[i]));

                processDesp.Activities.Add(actDesp);

                WfTransitionDescriptor transitionDesp = (WfTransitionDescriptor)currentActDesp.ToTransitions.AddForwardTransition(actDesp);

                transitionDesp.Name = "审核";

                currentActDesp = actDesp;
            }

            currentActDesp.ToTransitions.AddForwardTransition(processDesp.CompletedActivity);

            return(processDesp);
        }
Exemplo n.º 2
0
        public override void ClientToServer(WfClientProcessDescriptor client, ref WfProcessDescriptor server)
        {
            client.NullCheck("client");

            if (server == null)
            {
                server = new WfProcessDescriptor(client.Key);
            }

            base.ClientToServer(client, ref server);

            WfClientRelativeLinkDescriptorCollectionConverter.Instance.ClientToServer(client.RelativeLinks, server.RelativeLinks);
            WfClientVariableDescriptorCollectionConverter.Instance.ClientToServer(client.Variables, server.Variables);
            WfClientResourceDescriptorCollectionConverter.Instance.ClientToServer(client.CancelEventReceivers, server.CancelEventReceivers);

            foreach (WfClientActivityDescriptor cad in client.Activities)
            {
                WfActivityDescriptor actDesp = null;

                WfClientActivityDescriptorConverter.Instance.ClientToServer(cad, ref actDesp);

                server.Activities.Add(actDesp);
            }

            TransitionsClientToServer(client, server);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 构造流程的起始点和终止点,并且连线
        /// </summary>
        /// <param name="processKey"></param>
        /// <param name="processName"></param>
        /// <returns></returns>
        public override IWfProcessDescriptor Build(string processKey, string processName)
        {
            IWfProcessDescriptor processDesp = base.Build(processKey, processName);
            WfActivityDescriptor actDesp     = processDesp.InitialActivity as WfActivityDescriptor;

            actDesp.Name = "传阅";
            processDesp.Properties.SetValue("UseMatrix", false);
            processDesp.Properties.SetValue("Independent", false);

            WfForwardTransitionDescriptor transition = (WfForwardTransitionDescriptor)processDesp.InitialActivity.ToTransitions.AddForwardTransition(processDesp.CompletedActivity);

            transition.Name = "已阅";

            //设置一些传阅活动的属性设置
            PropertyDefineCollection definedProperties = GetDefinedProperties();

            processDesp.InitialActivity.Properties.MergeDefinedProperties(definedProperties, true);
            processDesp.InitialActivity.Properties.ForEach(p =>
            {
                if (p.StringValue == null)
                {
                    p.StringValue = p.Definition.DefaultValue;
                }
            });

            return(processDesp);
        }
Exemplo n.º 4
0
        private static WfActivityDescriptor PrepareServerActivity(string key)
        {
            WfActivityDescriptor actDesp = new WfActivityDescriptor(key, WfActivityType.InitialActivity);

            actDesp.Key  = key;
            actDesp.Name = key;

            actDesp.Condition.Expression = "Amount > 1000";
            actDesp.Variables.SetValue("ActKey", key);
            actDesp.Variables.SetValue("ActName", key);

            actDesp.Resources.Add(new WfUserResourceDescriptor((IUser)OguUser.CreateWrapperObject(ActivityConverterTest.UserID, SchemaType.Users)));
            actDesp.Resources.Add(new WfDepartmentResourceDescriptor((IOrganization)OguOrganization.CreateWrapperObject(ActivityConverterTest.OrganizationID, SchemaType.Organizations)));
            actDesp.Resources.Add(new WfGroupResourceDescriptor((IGroup)OguGroup.CreateWrapperObject(ActivityConverterTest.GroupID, SchemaType.Groups)));
            actDesp.Resources.Add(new WfRoleResourceDescriptor(new SOARole(ActivityConverterTest.RoleFullCodeName)));
            actDesp.Resources.Add(new WfActivityOperatorResourceDescriptor()
            {
                ActivityKey = ActivityConverterTest.ResActivityKey
            });
            actDesp.Resources.Add(new WfActivityAssigneesResourceDescriptor()
            {
                ActivityKey = ActivityConverterTest.ResActivityKey
            });
            actDesp.Resources.Add(new WfDynamicResourceDescriptor("ConditionResource", "Amount > 1000"));
            actDesp.BranchProcessTemplates.Add(BranchProcessTemplateConverterTest.PrepareServerBranchProcessTemplate());

            return(actDesp);
        }
		public override IWfProcessDescriptor Build(string processKey, string processName)
		{
			processKey.CheckStringIsNullOrEmpty("processKey");
			processName.CheckStringIsNullOrEmpty("processName");

			IWfProcessDescriptor processDesp = base.Build(processKey, processName);

			IWfActivityDescriptor currentActDesp = processDesp.InitialActivity;

			for (int i = 0; i < _StepUsers.Length; i++)
			{
				WfActivityDescriptor actDesp = new WfActivityDescriptor(processDesp.FindNotUsedActivityKey(), WfActivityType.NormalActivity);
				actDesp.ActivityType = WfActivityType.NormalActivity;

				actDesp.Name = _StepUsers[i].DisplayName;
				actDesp.Resources.Add(new WfUserResourceDescriptor(_StepUsers[i]));

				processDesp.Activities.Add(actDesp);

				WfTransitionDescriptor transitionDesp = (WfTransitionDescriptor)currentActDesp.ToTransitions.AddForwardTransition(actDesp);

				transitionDesp.Name = "审核";

				currentActDesp = actDesp;
			}

			currentActDesp.ToTransitions.AddForwardTransition(processDesp.CompletedActivity);

			return processDesp;
		}
        public void BasicAdminAddActivityWithFromActivityExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

            const string targetName = "修改后的名称";

            IWfActivity fromActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity");

            IWfActivityDescriptor targetDesp = new WfActivityDescriptor(process.Descriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity);

            targetDesp.Properties.SetValue("Name", targetName);
            process.Descriptor.Activities.Add(targetDesp);

            WfActivityBase.CreateActivityInstance(targetDesp, process);

            WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor(process.CurrentActivity, process, fromActivity.Descriptor, targetDesp, false);

            executor.Execute();

            process = WfRuntime.GetProcessByProcessID(process.ID);

            targetDesp = process.Descriptor.Activities[targetDesp.Key];

            Assert.IsNotNull(targetDesp);
            Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty));

            fromActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity");

            Assert.IsNotNull(fromActivity.Descriptor.ToTransitions.GetTransitionByToActivity(targetDesp));
        }
        public void BasicAdminAddActivityWithMainStreamExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

            const string targetName = "修改后的名称";

            IWfActivityDescriptor targetDesp = new WfActivityDescriptor(process.Descriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity);

            targetDesp.Properties.SetValue("Name", targetName);
            process.Descriptor.Activities.Add(targetDesp);

            WfActivityBase.CreateActivityInstance(targetDesp, process);

            WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor(process.CurrentActivity, process, null, targetDesp, true);

            executor.Execute();

            process = WfRuntime.GetProcessByProcessID(process.ID);

            targetDesp = process.Descriptor.Activities[targetDesp.Key];

            Assert.IsNotNull(targetDesp);
            Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty));

            IWfActivityDescriptor msActDesp = targetDesp.Instance.GetMainStreamActivityDescriptor();

            Assert.IsNotNull(msActDesp);
            Assert.AreEqual(process.MainStream, msActDesp.Process);
            Assert.AreEqual(targetName, msActDesp.Properties.GetValue("Name", string.Empty));
        }
Exemplo n.º 8
0
        /// <summary>
        /// 创建一个有多个节点的流程
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor CreateProcessDescriptor()
        {
            WfProcessDescriptor processDesp = new WfProcessDescriptor();

            processDesp.Key             = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8);
            processDesp.Name            = "测试流程";
            processDesp.ApplicationName = "TEST_APP_NAME";
            processDesp.ProgramName     = "TEST_PROGRAM_NAME";
            processDesp.Url             = "/MCS_Framework/WebTestProject/defaultHandler.aspx";

            WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity);

            initAct.Name     = "Initial";
            initAct.CodeName = "Initial Activity";

            processDesp.Activities.Add(initAct);

            WfActivityDescriptor normalAct = new WfActivityDescriptor("NormalActivity", WfActivityType.NormalActivity);

            normalAct.Name     = "Normal";
            normalAct.CodeName = "Normal Activity";

            processDesp.Activities.Add(normalAct);

            WfActivityDescriptor normalAct1 = new WfActivityDescriptor("NormalActivity1", WfActivityType.NormalActivity);

            normalAct1.Name     = "Normal";
            normalAct1.CodeName = "Normal Activity1";

            processDesp.Activities.Add(normalAct1);

            WfActivityDescriptor normalAct2 = new WfActivityDescriptor("NormalActivity2", WfActivityType.NormalActivity);

            normalAct2.Name     = "Normal";
            normalAct2.CodeName = "Normal Activity2";

            processDesp.Activities.Add(normalAct2);

            WfActivityDescriptor normalAct3 = new WfActivityDescriptor("NormalActivity3", WfActivityType.NormalActivity);

            normalAct3.Name     = "Normal";
            normalAct3.CodeName = "Normal Activity3";

            processDesp.Activities.Add(normalAct3);

            WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity);

            completedAct.Name     = "Completed";
            completedAct.CodeName = "Completed Activity";

            processDesp.Activities.Add(completedAct);

            initAct.ToTransitions.AddForwardTransition(normalAct);
            normalAct.ToTransitions.AddForwardTransition(normalAct1);
            normalAct1.ToTransitions.AddForwardTransition(normalAct2);
            normalAct2.ToTransitions.AddForwardTransition(normalAct3);
            normalAct3.ToTransitions.AddForwardTransition(completedAct);

            return(processDesp);
        }
Exemplo n.º 9
0
        /// <summary>
        /// 创建一个只有开始和结束点的流程描述
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor CreateInitAndCompletedProcessDescriptor()
        {
            WfProcessDescriptor processDesp = new WfProcessDescriptor();

            processDesp.Key             = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8);
            processDesp.Name            = "测试流程";
            processDesp.ApplicationName = "TEST_APP_NAME";
            processDesp.ProgramName     = "TEST_PROGRAM_NAME";
            processDesp.Url             = "/MCS_Framework/WebTestProject/defaultHandler.aspx";

            WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity);

            initAct.Name     = "Initial";
            initAct.CodeName = "Initial Activity";

            processDesp.Activities.Add(initAct);

            WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity);

            completedAct.Name     = "Completed";
            completedAct.CodeName = "Completed Activity";

            completedAct.RelativeLinks.Add(new WfRelativeLinkDescriptor("TestLink")
            {
                Name = "测试链接", Url = "/MCSWebApp/Sample.htm"
            });

            processDesp.Activities.Add(completedAct);

            initAct.ToTransitions.AddForwardTransition(completedAct);

            return(processDesp);
        }
Exemplo n.º 10
0
        private static void DoInsert(HttpContext context)
        {
            string id       = context.Request["id"];
            string category = context.Request["category"];
            string content  = context.Request["content"];

            if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(content))
            {
                return;
            }

            WfConverterHelper.RegisterConverters();
            WfActivityDescriptor activityDesc = JSONSerializerExecute.Deserialize <WfActivityDescriptor>(content);

            activityDesc.Key = id;
            activityDesc.FromTransitions.Clear();
            activityDesc.ToTransitions.Clear();

            WfActivityTemplate template = new WfActivityTemplate()
            {
                ID          = id,
                Name        = activityDesc.Name,
                Category    = activityDesc.ActivityType.ToString(),
                CreateTime  = DateTime.Now,
                Content     = JSONSerializerExecute.Serialize(activityDesc),
                Available   = true,
                CreatorID   = DeluxeIdentity.CurrentUser.ID,
                CreatorName = DeluxeIdentity.CurrentUser.Name
            };

            WfActivityTemplateAdpter.Instance.Update(template);

            OutputResult(context, true, activityDesc.Key);
        }
Exemplo n.º 11
0
        private void descriptorEditor_SaveButtonClicked(object sender, EventArgs e)
        {
            if (this.descriptorEditor.CurrentProcess != null)
            {
                WfActivityDescriptor activityTemplate = new WfActivityDescriptor(
                    this.descriptorEditor.CurrentProcessDescriptor.FindNotUsedActivityKey(),
                    WfActivityType.NormalActivity);

                activityTemplate.Properties.ReplaceExistedPropertyValues(this.propertyGrid.Properties);

                this.descriptorEditor.CurrentProcessDescriptor.Activities.Add(activityTemplate);

                if (this.descriptorEditor.CurrentProcessDescriptor.IsMainStream == false)
                {
                    WfActivityBase.CreateActivityInstance(activityTemplate, this.descriptorEditor.CurrentProcess);
                }

                WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor(
                    this.descriptorEditor.CurrentProcess.CurrentActivity,
                    this.descriptorEditor.CurrentProcess,
                    this.FromActivity,
                    activityTemplate,
                    this.syncMSObj.Checked);

                executor.Execute();
            }
        }
Exemplo n.º 12
0
        public void WfActivitySerilizeConverterTest()
        {
            WfConverterHelper.RegisterConverters();

            WfActivityDescriptor normalAct = new WfActivityDescriptor("NormalActivity", WfActivityType.NormalActivity);

            normalAct.Name     = "Normal";
            normalAct.CodeName = "Normal Activity";

            WfServiceOperationDefinition enterSvcDef = new WfServiceInvokerFactory().SvcOpDef;

            enterSvcDef.AddressDef.RequestMethod = WfServiceRequestMethod.Get;
            enterSvcDef.OperationName            = "StringTypeService";
            enterSvcDef.RtnXmlStoreParamName     = "EnterServiceRtnXml";

            enterSvcDef.Params.Add(new WfServiceOperationParameter()
            {
                Name  = "input",
                Type  = WfSvcOperationParameterType.String,
                Value = "this is a get action!"
            });

            normalAct.EnterEventExecuteServices.Add(enterSvcDef);

            string result = JSONSerializerExecute.Serialize(normalAct);

            Console.WriteLine(result);

            WfActivityDescriptor deserializedActDesp = JSONSerializerExecute.Deserialize <WfActivityDescriptor>(result);

            string reSerialized = JSONSerializerExecute.Serialize(deserializedActDesp);

            Assert.AreEqual(result, reSerialized);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 准备同意/不同意的退回流程。在B环节有两根出线BC和BA,BA是退回线,退回到A。其中BA默认是没有选择的
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor PrepareAgreeReturnProcessDesp()
        {
            WfProcessDescriptor processDesp = new WfProcessDescriptor();

            processDesp.Key             = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8);
            processDesp.Name            = "专用退回流程";
            processDesp.ApplicationName = "TEST_APP_NAME";
            processDesp.ProgramName     = "TEST_PROGRAM_NAME";
            processDesp.Url             = "/MCS_Framework/WebTestProject/defaultHandler.aspx";

            WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity);

            initActivity.Name     = "A";
            initActivity.CodeName = "A";

            processDesp.Activities.Add(initActivity);

            IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B");

            processDesp.Activities.Add(activityB);

            IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C");

            processDesp.Activities.Add(activityC);

            IWfActivityDescriptor activityD = CreateNormalDescriptor("D", "D");

            processDesp.Activities.Add(activityD);

            WfActivityDescriptor completedActivity = new WfActivityDescriptor("F", WfActivityType.CompletedActivity);

            completedActivity.Name     = "F";
            completedActivity.CodeName = "F";

            processDesp.Activities.Add(completedActivity);

            //A->B
            initActivity.ToTransitions.AddForwardTransition(activityB);

            //B有两根出线,分别是C和A,A是退回线
            WfTransitionDescriptor transitionBC = (WfTransitionDescriptor)activityB.ToTransitions.AddForwardTransition(activityC);

            transitionBC.Enabled       = true;
            transitionBC.DefaultSelect = true;
            WfTransitionDescriptor transitionBA = (WfTransitionDescriptor)activityB.ToTransitions.AddBackwardTransition(initActivity);

            //transitionBA.Enabled = false;
            transitionBA.Enabled       = true;
            transitionBC.DefaultSelect = false;
            transitionBA.IsBackward    = true;

            //C->D
            activityC.ToTransitions.AddForwardTransition(activityD);

            //D到结束点
            activityD.ToTransitions.AddForwardTransition(completedActivity);

            return(processDesp);
        }
Exemplo n.º 14
0
        private static IWfActivityDescriptor CreateNormalDescriptor(string key, string name)
        {
            WfActivityDescriptor activityDesp = new WfActivityDescriptor(key, WfActivityType.NormalActivity);

            activityDesp.Name     = name;
            activityDesp.CodeName = key;

            return(activityDesp);
        }
Exemplo n.º 15
0
        /// <summary>
        /// 生成用于复制退件活动的测试流程
        /// A为起点、两条分支,A、B、C、D和A、E、D,D为终点
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor PrepareCopyTestProcessDesp()
        {
            WfProcessDescriptor processDesp = new WfProcessDescriptor();

            processDesp.Key             = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8);
            processDesp.Name            = "专用退回流程";
            processDesp.ApplicationName = "TEST_APP_NAME";
            processDesp.ProgramName     = "TEST_PROGRAM_NAME";
            processDesp.Url             = "/MCS_Framework/WebTestProject/defaultHandler.aspx";

            WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity);

            initActivity.Name     = "A";
            initActivity.CodeName = "A";

            processDesp.Activities.Add(initActivity);

            IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B");

            processDesp.Activities.Add(activityB);

            IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C");

            processDesp.Activities.Add(activityC);

            IWfActivityDescriptor activityE = CreateNormalDescriptor("E", "E");

            processDesp.Activities.Add(activityE);

            WfActivityDescriptor completedActivity = new WfActivityDescriptor("D", WfActivityType.CompletedActivity);

            completedActivity.Name     = "D";
            completedActivity.CodeName = "D";

            processDesp.Activities.Add(completedActivity);

            //A到B
            WfTransitionDescriptor transitionAB = (WfTransitionDescriptor)initActivity.ToTransitions.AddForwardTransition(activityB);

            transitionAB.Enabled = true;

            //A到E
            WfTransitionDescriptor transitionAE = (WfTransitionDescriptor)initActivity.ToTransitions.AddBackwardTransition(activityE);

            transitionAE.Enabled = false;

            //B到C
            activityB.ToTransitions.AddForwardTransition(activityC);

            //E到C
            activityE.ToTransitions.AddForwardTransition(activityC);

            //C到结束点
            activityC.ToTransitions.AddForwardTransition(completedActivity);

            return(processDesp);
        }
Exemplo n.º 16
0
        public static IWfActivityDescriptor CreateNormalActivity(string key)
        {
            WfActivityDescriptor normalAct = new WfActivityDescriptor(key, WfActivityType.NormalActivity);

            normalAct.Name     = key;
            normalAct.CodeName = key;

            return(normalAct);
        }
Exemplo n.º 17
0
        public static WfActivityDescriptor CreateSimpleServerActivity(string key, string name, WfActivityType actType)
        {
            WfActivityDescriptor actDesp = new WfActivityDescriptor(key, actType);

            actDesp.Name = name;

            actDesp.RelativeLinks.Add(new WfRelativeLinkDescriptor("AR1")
            {
                Category = "Activity", Url = "http://www.ak47.com"
            });

            return(actDesp);
        }
Exemplo n.º 18
0
        private static WfActivityDescriptor AddActivity(IWfProcess process)
        {
            string activityKey           = process.Descriptor.FindNotUsedActivityKey();
            WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity);

            WfRuntime.ProcessContext.ActivityChangingContext.CreatorInstanceID     = process.CurrentActivity.ID;
            WfRuntime.ProcessContext.ActivityChangingContext.AssociatedActivityKey =
                process.CurrentActivity.Descriptor.AssociatedActivityKey.IsNotEmpty() ?
                process.CurrentActivity.Descriptor.AssociatedActivityKey : process.CurrentActivity.Descriptor.Key;

            process.CurrentActivity.Append(actDesp);
            return(actDesp);
        }
Exemplo n.º 19
0
        public void StandardServerActivitiesToClient()
        {
            WfActivityDescriptor serverActDesp = PrepareServerActivity("N1");

            serverActDesp.Output();

            WfClientActivityDescriptor clientActDesp = null;

            WfClientActivityDescriptorConverter.Instance.ServerToClient(serverActDesp, ref clientActDesp);

            clientActDesp.Output();
            clientActDesp.Variables.Output();

            clientActDesp.AssertActivityDescriptor(serverActDesp);
        }
Exemplo n.º 20
0
        /// <summary>
        /// 准备一条简单的直线流程,主要用于两次退回等场景
        /// 流程为A->B->C->D
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor PrepareStraightProcessDesp()
        {
            WfProcessDescriptor processDesp = new WfProcessDescriptor();

            processDesp.Key             = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8);
            processDesp.Name            = "简单直线流程";
            processDesp.ApplicationName = "TEST_APP_NAME";
            processDesp.ProgramName     = "TEST_PROGRAM_NAME";
            processDesp.Url             = "/MCS_Framework/WebTestProject/defaultHandler.aspx";

            WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity);

            initActivity.Name     = "A";
            initActivity.CodeName = "A";
            initActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            processDesp.Activities.Add(initActivity);

            IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B");

            processDesp.Activities.Add(activityB);
            activityB.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object));

            IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C");

            processDesp.Activities.Add(activityC);

            WfActivityDescriptor completedActivity = new WfActivityDescriptor("D", WfActivityType.CompletedActivity);

            completedActivity.Name     = "D";
            completedActivity.CodeName = "D";

            processDesp.Activities.Add(completedActivity);

            //A到B
            WfTransitionDescriptor transitionAB = (WfTransitionDescriptor)initActivity.ToTransitions.AddForwardTransition(activityB);

            transitionAB.Enabled = true;


            //B到C
            activityB.ToTransitions.AddForwardTransition(activityC);

            //C到结束点
            activityC.ToTransitions.AddForwardTransition(completedActivity);

            return(processDesp);
        }
Exemplo n.º 21
0
        public void FindElapsedTransitionTest()
        {
            //流程运行时
            IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee();

            //新增加活动描述,没有为此添加实例
            string activityKey           = process.Descriptor.FindNotUsedActivityKey();
            WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity);

            process.CurrentActivity.Descriptor.Append(actDesp);

            //使用GetMainStreamActivities方法时,会出错,因为只添加了描述,没添加实例。这里需要正常抛出异常
            WfMainStreamActivityDescriptorCollection coll = process.Descriptor.GetMainStreamActivities();

            Assert.IsNotNull(coll);
        }
Exemplo n.º 22
0
        public void BasicMainStreamActivities()
        {
            //主流程描述点
            IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor();

            WfMainStreamActivityDescriptorCollection coll = desp.GetMainStreamActivities();

            Assert.AreEqual(desp.Activities.Count, coll.Count);

            //添加动态点
            string activityKey           = desp.FindNotUsedActivityKey();
            WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity);

            desp.InitialActivity.Append(actDesp);

            coll = desp.GetMainStreamActivities();
            Assert.AreEqual(desp.Activities.Count, coll.Count, "流程描述时,添加节点描述也为主线流程中的活动");
        }
Exemplo n.º 23
0
        /// <summary>
        /// 在某个活动下 的同级添加一组活动
        /// </summary>
        /// <param name="desp"></param>
        /// <param name="n">添加的个数</param>
        private static void AddActivitiesDespToSameActivityDesp(IWfActivityDescriptor actDesp, int n)
        {
            IWfActivityDescriptor toActDesp = actDesp.ToTransitions[0].ToActivity;

            actDesp.ToTransitions.Clear();

            for (int i = 7; i < 7 + n; i++)
            {
                WfActivityDescriptor normalAct = new WfActivityDescriptor("NormalActivity" + i, WfActivityType.NormalActivity);
                normalAct.Name     = "Normal" + i;
                normalAct.CodeName = "Normal Activity" + i;

                actDesp.Process.Activities.Add(normalAct);

                actDesp.ToTransitions.AddForwardTransition(normalAct);
                normalAct.ToTransitions.AddForwardTransition(toActDesp);
            }
        }
Exemplo n.º 24
0
        private static void CreateInitAndCompletedActivities(WfProcessDescriptor processDesp)
        {
            WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity);

            initAct.Name     = "开始";
            initAct.CodeName = "Initial Activity";

            processDesp.Activities.Add(initAct);

            WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity);

            completedAct.Name     = "结束";
            completedAct.CodeName = "Completed Activity";

            processDesp.Activities.Add(completedAct);

            initAct.ToTransitions.AddForwardTransition(completedAct);
        }
Exemplo n.º 25
0
        private void descriptorEditor_PreRenderControl(object sender, EventArgs e)
        {
            if (this.descriptorEditor.CurrentProcess != null)
            {
                WfActivityDescriptor activityTemplate = new WfActivityDescriptor(
                    this.descriptorEditor.CurrentProcessDescriptor.FindNotUsedActivityKey(),
                    WfActivityType.NormalActivity);

                this.ClientScript.RegisterHiddenField("template", JSONSerializerExecute.Serialize(activityTemplate));

                this.descriptorEditor.RegisterAfterProcessDeserializedFunction(
                    "WFWeb.BindPropertyGrid(process.Key, Sys.Serialization.JavaScriptSerializer.deserialize($get(\"template\").value));");
            }

            if (this.descriptorEditor.ShowMainStream)
            {
                this.syncMSObj.Disabled = true;
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// 准备加签退件流程
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor PrepareAddApproverReturnProcessDesp()
        {
            WfProcessDescriptor processDesp = new WfProcessDescriptor();

            processDesp.Key             = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8);
            processDesp.Name            = "加签退回流程";
            processDesp.ApplicationName = "TEST_APP_NAME";
            processDesp.ProgramName     = "TEST_PROGRAM_NAME";
            processDesp.Url             = "/MCS_Framework/WebTestProject/defaultHandler.aspx";

            WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity);

            initActivity.Name     = "A";
            initActivity.CodeName = "A";

            processDesp.Activities.Add(initActivity);

            IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B");

            processDesp.Activities.Add(activityB);

            IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C");

            processDesp.Activities.Add(activityC);

            WfActivityDescriptor completedActivity = new WfActivityDescriptor("D", WfActivityType.CompletedActivity);

            completedActivity.Name     = "D";
            completedActivity.CodeName = "D";

            processDesp.Activities.Add(completedActivity);

            //A到B
            initActivity.ToTransitions.AddForwardTransition(activityB);

            //B到C
            activityB.ToTransitions.AddForwardTransition(activityC);

            //C到结束点
            activityC.ToTransitions.AddForwardTransition(completedActivity);

            return(processDesp);
        }
        /// <summary>
        /// 准备管理单元相关的模板
        /// </summary>
        /// <returns></returns>
        private IWfActivityDescriptor PrepareAURelativeActivityDescriptor(string key)
        {
            WfActivityDescriptor templateActDesp = new WfActivityDescriptor(key, WfActivityType.NormalActivity);

            templateActDesp.Name     = "审批";
            templateActDesp.CodeName = key;
            templateActDesp.Properties.SetValue("IsDynamic", true);

            WrappedAUSchemaRole role = new WrappedAUSchemaRole(AUHelper.AUSchemaActivityMatrixRoleID)
            {
                Name = "实物管理员", Description = "实物管理员"
            };

            WfAURoleResourceDescriptor roleDesp = new WfAURoleResourceDescriptor(role);

            templateActDesp.Resources.Add(roleDesp);

            return(templateActDesp);
        }
Exemplo n.º 28
0
        public void CreateInstanceTest()
        {
            WfActivitySettings setting = WfActivitySettings.GetConfig();
            var process1 = new WfProcessDescriptor()
            {
                Key = "Process1"
            };

            IWfActivityDescriptor actDescriptor = new WfActivityDescriptor("Init", WfActivityType.InitialActivity)
            {
                CodeName    = "test",
                Description = "test",
                Enabled     = true
            };

            process1.Activities.Add(actDescriptor);

            IWfActivity initActivity = setting.GetActivityBuilder(actDescriptor).CreateActivity(actDescriptor);

            Assert.IsTrue(initActivity.EnterActions.Count > 0);
            Assert.IsTrue(initActivity.LeaveActions.Count > 0);

            initActivity.EnterActions.PrepareActions(null);
            initActivity.EnterActions.PersistActions(null);

            initActivity.LeaveActions.PrepareActions(null);
            initActivity.LeaveActions.PersistActions(null);

            actDescriptor = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity)
            {
                CodeName    = "test",
                Description = "test",
                Enabled     = true
            };

            process1.Activities.Add(actDescriptor);

            var completedActivity = setting.GetActivityBuilder(actDescriptor).CreateActivity(actDescriptor);

            Assert.IsTrue(completedActivity.EnterActions.Count > 0);
            Assert.IsTrue(completedActivity.LeaveActions.Count > 0);
        }
Exemplo n.º 29
0
        public static void AddNodeToDescription(IWfProcess process, int addNumber)
        {
            WfNormalActivityBuilder builder = new WfNormalActivityBuilder();
            var desc = process.Descriptor;

            for (var i = 0; i < addNumber; i++)
            {
                WfActivityDescriptor normalAct = new WfActivityDescriptor("Extra" + i, WfActivityType.NormalActivity);
                normalAct.Name         = "Normal" + i;
                normalAct.CodeName     = "Normal Activity" + i;
                normalAct.ActivityType = WfActivityType.NormalActivity;
                normalAct.BranchProcessTemplates.Add(new WfBranchProcessTemplateDescriptor("no delete tks!"));
                desc.Activities.Add(normalAct);

                desc.Activities[1].ToTransitions.AddForwardTransition(normalAct);
                normalAct.ToTransitions.AddForwardTransition(desc.Activities[2]);

                WfActivityBase act = WfActivitySettings.GetConfig().GetActivityBuilder(normalAct).CreateActivity(normalAct);
                act.Process = process;
                process.Activities.Add(act);
            }
        }
Exemplo n.º 30
0
        /// <summary>
        /// 创建一个有四个节点的带条件流程,Init,Complete,Normal和Manager
        /// </summary>
        /// <returns></returns>
        public static IWfProcessDescriptor CreateSimpleProcessDescriptorWithCondition()
        {
            IWfProcessDescriptor processDesp = CreateSimpleProcessDescriptor();

            //直接到结束点
            ((IWfForwardTransitionDescriptor)processDesp.Activities["NormalActivity"].ToTransitions[0]).Condition.Expression = "Amount < 5000";

            WfActivityDescriptor mgrAct = new WfActivityDescriptor("ManagerActivity", WfActivityType.NormalActivity);

            mgrAct.Name     = "Manager";
            mgrAct.CodeName = "Manager";

            processDesp.Activities.Add(mgrAct);

            //经过管理员点
            IWfForwardTransitionDescriptor transition = processDesp.Activities["NormalActivity"].ToTransitions.AddForwardTransition(mgrAct);

            transition.Condition.Expression = "Amount >= 5000";

            mgrAct.ToTransitions.AddForwardTransition(processDesp.CompletedActivity);

            return(processDesp);
        }
Exemplo n.º 31
0
        public void AddProcess()
        {
            string     processID = "182364d3-2e59-bc73-40e9-fb94672d21a1";
            IWfProcess process   = WfRuntime.GetProcessByProcessID(processID);

            string activityKey           = process.Descriptor.FindNotUsedActivityKey();
            WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity);

            process.CurrentActivity.Append(actDesp);
            WfRuntime.PersistWorkflows();

            activityKey = process.Descriptor.FindNotUsedActivityKey();
            actDesp     = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity);

            process.CurrentActivity.Append(actDesp);


            process = WfRuntime.GetProcessByProcessID(processID);
            WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAnyoneBranchProcessComplete);

            process.MoveTo(tp);
            WfRuntime.PersistWorkflows();
        }
Exemplo n.º 32
0
		private static void CreateInitAndCompletedActivities(WfProcessDescriptor processDesp)
		{
			WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity);
			initAct.Name = "开始";
			initAct.CodeName = "Initial Activity";

			processDesp.Activities.Add(initAct);

			WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity);
			completedAct.Name = "结束";
			completedAct.CodeName = "Completed Activity";

			processDesp.Activities.Add(completedAct);

			initAct.ToTransitions.AddForwardTransition(completedAct);
		}