Example #1
0
        public void ProcessSerializeTest()
        {
            IWfProcessDescriptor processDesc = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            WfProcessStartupParams startupParams = new WfProcessStartupParams();

            startupParams.ProcessDescriptor = processDesc;
            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            ((WfProcess)process).ResourceID = UuidHelper.NewUuidString();

            WfProcessContext context = process.Context;

            context.Add("UCC", "the same");

            XElementFormatter formatter = new XElementFormatter();

            //formatter.OutputShortType = false;

            XElement root = formatter.Serialize(process);

            Console.WriteLine(root.ToString());

            IWfProcess clonedProcess = (IWfProcess)formatter.Deserialize(root);

            Assert.IsNotNull(clonedProcess.Context["UCC"]);
            Assert.AreEqual(process.Context.Count, clonedProcess.Context.Count);
            Assert.AreEqual(process.Context["UCC"], clonedProcess.Context["UCC"]);
        }
Example #2
0
        public void ProcessWithMatrix()
        {
            try
            {
                var wfDescriptor = WfProcessDescriptorManager.GetDescriptor("workflowmatrixtest");
                WfProcessStartupParams startParam = new WfProcessStartupParams();
                startParam.ProcessDescriptor = wfDescriptor;

                var processInstance = WfRuntime.StartWorkflow(startParam);
                processInstance.ApplicationRuntimeParameters.Add("支付方式", "网银");
                processInstance.ApplicationRuntimeParameters.Add("成本中心", "成1");
                processInstance.ApplicationRuntimeParameters.Add("费用类型", "差旅费");
                processInstance.ApplicationRuntimeParameters.Add("金额", "100");
                processInstance.ApplicationRuntimeParameters.Add("部门", "商务部");

                WfTransferParams transferParams = new WfTransferParams(processInstance.Descriptor.Activities["N2"]);

                var currentAct = processInstance.MoveTo(transferParams);
                currentAct.Candidates.ForEach(p =>
                {
                    Console.WriteLine(p.User.DisplayName);
                });
            }
            catch
            {
            }
        }
Example #3
0
        public void ActivitySerializeTest()
        {
            IWfProcessDescriptor processDesc = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            WfProcessStartupParams startupParams = new WfProcessStartupParams();

            startupParams.ProcessDescriptor = processDesc;
            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            Sky sky = new Sky();

            sky.air   = "清新";
            sky.Cloud = 1;
            Sky space = new Sky();

            space.air   = "干净";
            space.Cloud = 1;

            process.InitialActivity.Context.Add("DDO", sky);
            process.InitialActivity.Context.Add("DFO", space);

            XElementFormatter formatter = new XElementFormatter();
            XElement          root      = formatter.Serialize(process);

            Console.WriteLine(root.ToString());

            IWfProcess clonedProcess = (IWfProcess)formatter.Deserialize(root);

            Assert.IsNotNull(clonedProcess.InitialActivity.Context["DDO"]);
            Assert.AreEqual(process.InitialActivity.Context.Count, clonedProcess.InitialActivity.Context.Count);
            Assert.AreEqual(((Sky)process.InitialActivity.Context["DDO"]).air, ((Sky)clonedProcess.InitialActivity.Context["DDO"]).air);
            Assert.AreEqual(((Sky)process.InitialActivity.Context["DDO"]).Cloud, ((Sky)clonedProcess.InitialActivity.Context["DDO"]).Cloud);
            Assert.AreEqual(((Sky)process.InitialActivity.Context["DFO"]).air, ((Sky)clonedProcess.InitialActivity.Context["DFO"]).air);
            Assert.AreEqual(((Sky)process.InitialActivity.Context["DFO"]).Cloud, ((Sky)clonedProcess.InitialActivity.Context["DFO"]).Cloud);
        }
Example #4
0
        public void WfExternalUserTest()
        {
            WfExternalUser externalUser = new WfExternalUser();

            externalUser.Key         = "user0";
            externalUser.Name        = "zLing";
            externalUser.Gender      = Gender.Female;
            externalUser.Email       = "*****@*****.**";
            externalUser.MobilePhone = "13552630000";
            externalUser.Phone       = "0409987";
            externalUser.Title       = "programer";

            IWfProcessDescriptor processDesc = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesc.ExternalUsers.Add(externalUser);

            WfProcessStartupParams startupParams = new WfProcessStartupParams();

            startupParams.ProcessDescriptor = processDesc;
            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            XElementFormatter formatter = new XElementFormatter();

            XElement   rootProc      = formatter.Serialize(process);
            IWfProcess clonedProcess = (IWfProcess)formatter.Deserialize(rootProc);

            XElement resultProc = formatter.Serialize(clonedProcess);

            Assert.AreEqual(processDesc.ExternalUsers[0].Name, clonedProcess.Descriptor.ExternalUsers[0].Name);
            Assert.AreEqual(processDesc.ExternalUsers[0].Gender, clonedProcess.Descriptor.ExternalUsers[0].Gender);

            Assert.AreEqual(rootProc.ToString(), resultProc.ToString());
        }
Example #5
0
        private static IWfProcess StartNewProcess(IWfProcessDescriptor processDesp, IWfProcess originalProcess, string newResourceID, IUser processCreator, IOrganization department)
        {
            WfProcessStartupParams wp =
                new WfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(typeof(OAWfProcess), wp);

            process.OwnerDepartment = department;
            WfTransferParams tParams = new WfTransferParams(wp.Descriptor.InitialActivity);

            tParams.Operator = DeluxeIdentity.CurrentUser;

            tParams.Receivers.Add(processCreator);

            process.MoveTo(tParams);

            process.Context["ApplicationName"] = originalProcess.Context["ApplicationName"];
            process.Context["ProgramName"]     = originalProcess.Context["ProgramName"];

            ((OAWfProcess)process).ResourceID = newResourceID;
            process.Context[WfVariableDefine.ProcessDraftDepartmentNameVariableName] =
                WfVariableDefine.GetProcessDraftDepartmentName(originalProcess);

            process.Context[WfVariableDefine.ProcessDraftUserIDVariableName] =
                WfVariableDefine.GetProcessDraftUserID(originalProcess);

            process.Context[WfVariableDefine.ProcessDraftUserNameVariableName] =
                WfVariableDefine.GetProcessDraftUserName(originalProcess);

            return(process);
        }
Example #6
0
        public void ReturnTestWithBranchActivity()
        {
            IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor();

            desp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            GetProcDespWithBranchActivities(desp.Activities[1], 2);

            WfProcessStartupParams startupParams = WfProcessTestCommon.GetInstanceOfWfProcessStartupParams(desp);
            IWfProcess             process       = WfRuntime.StartWorkflow(startupParams);

            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver1, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver2, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            Assert.AreEqual(2, process.ElapsedActivities.Count);
            WfRuntime.ProcessContext.ActivityChangingContext.CreatorInstanceID = process.CurrentActivity.ID;
            process.CurrentActivity.CopyMainStreamActivities(process.Activities[1], null, WfControlOperationType.Return); //退件
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.requestor, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);

            Assert.IsTrue(process.CurrentActivity.CreatorInstanceID.IsNotEmpty());
            Assert.AreEqual(process.ElapsedActivities[2].ID, process.CurrentActivity.CreatorInstanceID);

            Assert.AreEqual(10, process.Activities.Count);
        }
Example #7
0
        public void MainStreamActivitiesWithConditionActivityPassed()
        {
            IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor();

            desp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            IWfActivityDescriptor actDesp = desp.Activities[1];

            AddActivitiesDespToSameActivityDesp(actDesp, 2);
            ToTransitionsDescriptorCollection transDespColl = actDesp.ToTransitions;

            SetTransitionCondition(transDespColl[0], false, 1);
            SetTransitionCondition(transDespColl[1], true, 3);

            WfProcessStartupParams startupParams = WfProcessTestCommon.GetInstanceOfWfProcessStartupParams(desp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver1, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver2, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.requestor, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            Assert.AreEqual(3, process.ElapsedActivities.Count);

            WfMainStreamActivityDescriptorCollection coll = process.Descriptor.GetMainStreamActivities();

            Assert.AreEqual(process.Activities.Count - 1, coll.Count);

            Assert.AreEqual(transDespColl[1].ToActivity.Key, coll[2].Activity.Key, "此处为动态添加的活动");
        }
Example #8
0
        public static IWfProcess StartSpecialReturnProcess(IWfProcessDescriptor processDesp)
        {
            WfProcessStartupParams startupParams = new WfProcessStartupParams();

            startupParams.ProcessDescriptor = processDesp;
            startupParams.ApplicationRuntimeParameters["IsCLine"] = true;

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #9
0
        public static IWfProcess StartupSimpleProcessDescriptorWithTransitionCondition()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithCondition();

            processDesp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #10
0
        public static IWfProcess CreateFreeStepsProcessInstance(params IUser[] stepUsers)
        {
            IWfProcessDescriptor processDesp = CreateFreeStepsProcess(stepUsers);

            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            process.Context["Context"] = "This is a context";

            return(process);
        }
Example #11
0
        public static IWfProcess StartupProcess(IWfProcessDescriptor processDesp, Dictionary <string, object> runtimeParameters)
        {
            ProcessContextAction();

            WfProcessStartupParams startupParams = new WfProcessStartupParams();

            startupParams.ResourceID        = UuidHelper.NewUuidString();
            startupParams.ProcessDescriptor = processDesp;

            runtimeParameters.ForEach(kp => startupParams.ApplicationRuntimeParameters.Add(kp.Key, kp.Value));

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #12
0
        public static IWfProcess StartupSimpleProcess()
        {
            ProcessContextAction();

            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            WfProcessStartupParams startupParams = new WfProcessStartupParams();

            startupParams.ResourceID        = UuidHelper.NewUuidString();
            startupParams.ProcessDescriptor = processDesp;

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #13
0
        public static IWfProcess CreateProcessInstance(WfClientProcessDescriptor client)
        {
            WfProcessDescriptor processDesp = null;

            WfClientProcessDescriptorConverter.Instance.ClientToServer(client, ref processDesp);
            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            startupParams.ApplicationRuntimeParameters["CostCenter"] = "1001";
            startupParams.ApplicationRuntimeParameters["PayMethod"]  = "1";
            startupParams.ApplicationRuntimeParameters["Age"]        = 30;

            return(WfRuntime.StartWorkflow(startupParams));
        }
        private static IWfProcess PrepareProcess()
        {
            WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] };

            IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray());

            WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            WfRuntime.PersistWorkflows();

            return(process);
        }
Example #15
0
        public static IWfProcess StartupSimpleProcessDescriptorWithActivityCondition()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithCondition();

            processDesp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            processDesp.Activities["NormalActivity"].Condition.Expression = "Amount >= 5000";

            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            startupParams.DefaultTaskTitle = "测试流程节点带条件";

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #16
0
        public static List <IWfProcess> StartupMultiProcesses(IWfProcessDescriptor processDesp, int totalProcesses)
        {
            List <IWfProcess> processes = new List <IWfProcess>();

            //准备流程实例
            for (int i = 0; i < totalProcesses; i++)
            {
                WfProcessStartupParams startupParams = new WfProcessStartupParams();
                startupParams.ProcessDescriptor = processDesp;
                IWfProcess process = WfRuntime.StartWorkflow(startupParams);

                processes.Add(process);
            }

            return(processes);
        }
Example #17
0
        public static IWfProcess StartupSimpleProcessWithAssignee()
        {
            ProcessContextAction();

            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            process.ApplicationRuntimeParameters["CostCenter"] = "1001";
            process.ApplicationRuntimeParameters["Requestor"]  = process.Creator;

            return(process);
        }
Example #18
0
        /// <summary>
        /// 将服务定义加入流程每个节点上
        /// </summary>
        /// <param name="enter"></param>
        /// <param name="leave"></param>
        /// <returns></returns>
        public static IWfProcess StartupProcessWithServiceDefinition(WfServiceOperationDefinition enter,
                                                                     WfServiceOperationDefinition leave)
        {
            ProcessContextAction();

            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateProcessDescriptor();

            foreach (var item in processDesp.Activities)
            {
                item.EnterEventExecuteServices.Add(enter);
                item.LeaveEventExecuteServices.Add(leave);
            }

            processDesp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            return(WfRuntime.StartWorkflow(startupParams));
        }
        public void SimpleProcessServerInstanceToClientTest()
        {
            WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] };

            IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray());

            WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            process.Context["Context"] = "This is a context";

            WfClientProcess client = null;

            WfClientProcessConverter.Instance.ServerToClient(process, ref client);

            Console.WriteLine(client.InitialActivity.ID);
            Console.WriteLine(client.CompletedActivity.ID);
            Console.WriteLine(client.Descriptor.Url);

            Assert.AreEqual(startupParams.DefaultUrl, client.Descriptor.Url);
            Assert.AreEqual(process.Context["Context"], client.ProcessContext["Context"]);
        }
Example #20
0
        /// <summary>
        /// 带上下文参数的启动流程
        /// </summary>
        /// <param name="processDesp"></param>
        /// <param name="runtimeParameters"></param>
        /// <returns></returns>
        public static IWfProcess StartupProcess(this IWfProcessDescriptor processDesp, Dictionary <string, object> runtimeParameters = null)
        {
            WfProcessStartupParams startupParams = PrepareStartupParams(processDesp, runtimeParameters);

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #21
0
        private static IWfProcess StartProcess(IWfProcessDescriptor processDesp)
        {
            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            return(WfRuntime.StartWorkflow(startupParams));
        }