コード例 #1
0
        public void AddActivityWithTwoOutTransitionsExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

            int originalActCount = process.Activities.Count;

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

            targetActivity.Descriptor.ToTransitions.FirstOrDefault().Properties.SetValue("Name", "同意");

            //增加一条出线
            IWfTransitionDescriptor tReturn = targetActivity.Descriptor.ToTransitions.AddBackwardTransition(process.InitialActivity.Descriptor);

            tReturn.Properties.SetValue("Name", "不同意");

            WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams();

            createParams.AllAgreeWhenConsign = false;
            createParams.Users = new OguDataCollection <IUser>();
            createParams.Users.Add((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object);

            WfAddActivityExecutor executor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams);

            executor.Execute();

            process = WfRuntime.GetProcessByProcessID(process.ID);

            IWfActivity addedActivity = process.Activities[executor.AddedActivity.ID];

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

            Assert.AreEqual(originalActCount + 1, process.Activities.Count);
            Assert.AreEqual(1, targetActivity.Descriptor.ToTransitions.Count);
            Assert.IsFalse(targetActivity.Descriptor.ToTransitions[0].IsBackward);

            Assert.AreEqual(2, addedActivity.Descriptor.ToTransitions.Count, "新加的活动应该也有两条出线");
            Assert.AreEqual("同意", addedActivity.Descriptor.ToTransitions[0].Name);
            Assert.AreEqual("不同意", addedActivity.Descriptor.ToTransitions[1].Name);

            WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities();
            WfMainStreamActivityDescriptorCollection processMSA     = process.GetMainStreamActivities(true);

            processDespMSA.Output("流程描述中的主线活动");
            processMSA.Output("主线流程中的主线活动");

            Assert.AreEqual(process.Descriptor.Activities.Count, process.MainStream.Activities.Count);
            Assert.AreEqual(processDespMSA.Count, processMSA.Count);
        }
コード例 #2
0
        public void AddActivityBeforeConditionActivityExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcessDescriptorWithTransitionCondition();

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

            List <IWfTransitionDescriptor> originalTransitions = new List <IWfTransitionDescriptor>();

            targetActivity.Descriptor.ToTransitions.CopyTo(originalTransitions);

            WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams();

            WfAddActivityExecutor executor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams);

            executor.Execute();

            Console.WriteLine("Out transitions: {0}", originalTransitions.Count);
            Assert.AreEqual(originalTransitions.Count, executor.AddedActivity.Descriptor.ToTransitions.Count);
            Assert.AreEqual(1, targetActivity.Descriptor.ToTransitions.Count);
        }
コード例 #3
0
        public void BasicEditActivityExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

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

            WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams();

            WfVariableDescriptor variable = new WfVariableDescriptor("CodeName", "HelloKitty");

            createParams.Variables = new WfVariableDescriptor[] { variable };

            WfEditActivityExecutor editExecutor = new WfEditActivityExecutor(process.CurrentActivity, targetActivity, createParams);

            editExecutor.Execute();

            Assert.AreEqual("HelloKitty",
                            process.Descriptor.Activities["NormalActivity"].Properties.GetValue("CodeName", string.Empty));
            Assert.AreEqual("HelloKitty",
                            process.MainStream.Activities["NormalActivity"].Properties.GetValue("CodeName", string.Empty));
        }
コード例 #4
0
        public void BasicDeleteActivityExecutorTest()
        {
            IWfProcess process = WfProcessTestCommon.StartupSimpleProcess();

            int originalActCount = process.Activities.Count;

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

            WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams();

            WfAddActivityExecutor addExecutor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams);

            addExecutor.Execute();

            IWfActivityDescriptor newActDesp = targetActivity.Descriptor.ToTransitions.FirstOrDefault().ToActivity;

            WfRuntime.ClearCache();

            process = WfRuntime.GetProcessByProcessID(process.ID);

            targetActivity = process.Activities.FindActivityByDescriptorKey(newActDesp.Key);
            WfDeleteActivityExecutor deleteExecutor = new WfDeleteActivityExecutor(process.CurrentActivity, targetActivity);

            deleteExecutor.Execute();

            WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities();
            WfMainStreamActivityDescriptorCollection processMSA     = process.GetMainStreamActivities(true);

            processDespMSA.Output("流程描述中的主线活动");
            processMSA.Output("主线流程中的主线活动");

            Assert.AreEqual(process.Descriptor.Activities.Count, process.MainStream.Activities.Count);
            Assert.AreEqual(processDespMSA.Count, processMSA.Count);

            Assert.IsNull(process.Activities.FindActivityByDescriptorKey(targetActivity.Descriptor.Key));
            Assert.IsNull(process.MainStream.Activities[targetActivity.MainStreamActivityKey]);
        }
コード例 #5
0
        public static WfClientProcess DynamicProcessMoveto(WfClientDynamicProcessMovetoParameters parameters)
        {
            IWfProcess process = WfRuntime.GetProcessByActivityID(parameters.ActivityID);

            IWfActivity activity = process.CurrentActivity;

            if (parameters.MovetoActivityDescriptor != null)
            {
                WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams();

                createParams       = new WfActivityDescriptorCreateParams();
                createParams.Users = new OguDataCollection <IUser>();
                createParams.Name  = parameters.MovetoActivityDescriptor.ActivityName;

                foreach (WfClientUserResourceDescriptorParameters userResource in parameters.MovetoActivityDescriptor.UserResourceList)
                {
                    createParams.Users.Add(userResource.User);
                }

                WfAddActivityExecutor executor = new WfAddActivityExecutor(activity, activity, createParams);

                executor.Execute();
            }

            //工作流流向下一个节点
            WfClientMovetoParameters movetoParameters = new WfClientMovetoParameters()
            {
                ProcessID  = process.ID,
                ActivityID = activity.ID,
                ResourceID = process.ResourceID,
                Comment    = parameters.Comment
            };
            WfClientProcess clientProcess = WfClientProxy.Moveto(movetoParameters);

            return(clientProcess);
        }