Exemplo n.º 1
0
        public void WfBranchProcessTemplateDescriptorConverterTest()
        {
            WfConverterHelper.RegisterConverters();

            WfBranchProcessTemplateDescriptor branchProcessTempDesp = new WfBranchProcessTemplateDescriptor(Guid.NewGuid().ToString());

            branchProcessTempDesp.BlockingType    = WfBranchProcessBlockingType.WaitAnyoneBranchProcessComplete;
            branchProcessTempDesp.ExecuteSequence = WfBranchProcessExecuteSequence.Serial;


            string result = JSONSerializerExecute.Serialize(branchProcessTempDesp);

            Console.WriteLine(result);

            WfBranchProcessTemplateDescriptor deserializedBranchProcTempDesp = JSONSerializerExecute.Deserialize <WfBranchProcessTemplateDescriptor>(result);
            string reSerialized = JSONSerializerExecute.Serialize(deserializedBranchProcTempDesp);

            Assert.AreEqual(result, reSerialized);

            WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesp.InitialActivity.BranchProcessTemplates.Add(branchProcessTempDesp);

            string procResult = JSONSerializerExecute.Serialize(processDesp);

            Console.WriteLine(procResult);

            WfProcessDescriptor deserializedProcDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(procResult);
            string procReSerialized = JSONSerializerExecute.Serialize(deserializedProcDesp);

            Assert.AreEqual(procResult, procReSerialized);
        }
Exemplo n.º 2
0
        public void BasicDynamicActivityTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesp.Activities["NormalActivity"].RelativeLinks.Add(new WfRelativeLinkDescriptor("DynLink")
            {
                Url = "http://localhost"
            });

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp, (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object);

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.InitialActivity.Descriptor, templateActDesp);

            Assert.AreEqual(templateActDesp.RelativeLinks.Count, firstDynamicActDesp.RelativeLinks.Count);

            ValidateInDynamicTransitionsProperties(firstDynamicActDesp.FromTransitions, templateActDesp);

            ValidateLastDynamicTransitions(templateActDesp);

            ValidateTemplateCandidatesAndDynamicActivityCandidates(firstDynamicActDesp, templateActDesp);
        }
Exemplo n.º 3
0
        public void WfExternalUserTest()
        {
            WfConverterHelper.RegisterConverters();

            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";

            string         result           = JSONSerializerExecute.Serialize(externalUser);
            WfExternalUser deserializedUser = JSONSerializerExecute.Deserialize <WfExternalUser>(result);
            string         reSerialized     = JSONSerializerExecute.Serialize(deserializedUser);

            Assert.AreEqual(result, reSerialized);


            //创建流程描述
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesp.ExternalUsers.Add(externalUser);                 //作用于流程
            processDesp.InitialActivity.ExternalUsers.Add(externalUser); //作用于节点

            string procDesp = JSONSerializerExecute.Serialize(processDesp);
            WfProcessDescriptor reProcessDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(procDesp);
            string reuslt = JSONSerializerExecute.Serialize(reProcessDesp);

            Assert.AreEqual(procDesp, reuslt);
            Assert.AreEqual(processDesp.ExternalUsers[0].Name, processDesp.InitialActivity.ExternalUsers[0].Name);
        }
Exemplo n.º 4
0
        public void WfVariabledOfPrecessDescriptorConverterTest()
        {
            WfConverterHelper.RegisterConverters();

            WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessTestCommon.CreateSimpleProcessDescriptor();

            //给流程中变量描述赋值
            string guid = Guid.NewGuid().ToString();
            WfVariableDescriptor variDesc = new WfVariableDescriptor(guid);

            variDesc.Name          = "yo";
            variDesc.Description   = "流程中变量的赋值";
            variDesc.Enabled       = true;
            variDesc.OriginalType  = DataType.String;
            variDesc.OriginalValue = "原来的变量值";
            processDesp.Variables.Add(variDesc);

            string result = JSONSerializerExecute.Serialize(processDesp);

            Console.WriteLine(result);

            WfProcessDescriptor reProcessDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(result);

            string reSerialized = JSONSerializerExecute.Serialize(reProcessDesp);

            Assert.AreEqual(result, reSerialized);

            Assert.AreEqual(processDesp.Variables[0].Name, reProcessDesp.Variables[0].Name);
            Assert.AreEqual("流程中变量的赋值", reProcessDesp.Variables[0].Description);
            Assert.AreEqual(true, reProcessDesp.Variables[0].Enabled);
            Assert.AreEqual(processDesp.Variables[0].OriginalType, reProcessDesp.Variables[0].OriginalType);
        }
Exemplo n.º 5
0
        public void ClearThenResetInitialActivitySecretaryTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesp.InitialActivity.Properties.SetValue("AutoAppendSecretary", true);

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            ChangeActivityResource(process.Descriptor.InitialActivity, (IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object);
            WfRuntime.DecorateProcess(process);

            ChangeActivityResource(process.Descriptor.Activities["Initial"], (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object);
            WfRuntime.DecorateProcess(process);

            OutputProcessCandidates(process);
            ReturnExecutorTestHelper.OutputMainStream(process);

            Assert.AreEqual(3, processDesp.Activities.Count);
            Assert.AreEqual(process.InitialActivity.Descriptor.Key, process.Descriptor.InitialActivity.Key);
            Assert.AreEqual(WfActivityType.InitialActivity, process.Descriptor.InitialActivity.ActivityType);
            Assert.AreEqual(WfActivityType.InitialActivity, process.Descriptor.Activities["Initial"].ActivityType);

            Assert.AreEqual(3, process.MainStream.Activities.Count);
            Assert.AreEqual(WfActivityType.InitialActivity, process.MainStream.InitialActivity.ActivityType);
        }
Exemplo n.º 6
0
        private static void ResourceConverterTest(WfResourceDescriptor resDesp)
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            processDesp.Activities[1].Resources.Add(resDesp);
            string re = JSONSerializerExecute.Serialize(processDesp);
            WfProcessDescriptor reProcessDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(re);
        }
Exemplo n.º 7
0
        public void SimpleProcessDescriptorTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            Console.WriteLine("Init Act Key: {0}, Completed Act Key: {1}, Transition Key: {2}",
                              processDesp.InitialActivity.Key, processDesp.CompletedActivity.Key, processDesp.InitialActivity.ToTransitions[0].Key);

            Assert.IsTrue(processDesp.InitialActivity.CanReachTo(processDesp.CompletedActivity));
        }
        private static IWfProcessDescriptor PrepareWithReturnTransitionsProcess()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"];

            normalActDesp.ToTransitions.AddBackwardTransition(processDesp.InitialActivity);

            return(processDesp);
        }
Exemplo n.º 9
0
        private static IWfProcessDescriptor PrepareDynamicProcessDesp()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"];

            normalActDesp.Properties.SetValue("IsDynamic", true);

            return(processDesp);
        }
Exemplo n.º 10
0
        public void WfRelativeLinkDespJSONTest()
        {
            WfConverterHelper.RegisterConverters();

            WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessTestCommon.CreateSimpleProcessDescriptor();
            string result = JSONSerializerExecute.Serialize(processDesp);
            IWfProcessDescriptor procDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(result);

            Assert.AreEqual(processDesp.RelativeLinks[0].Name, procDesp.RelativeLinks[0].Name);
            Assert.AreEqual(processDesp.RelativeLinks[0].Url, procDesp.RelativeLinks[0].Url);
        }
Exemplo n.º 11
0
        private static WfProcessDescriptorInfo PrepareProcessDescriptorInfo()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            WfProcessDescriptorInfo processInfo = WfProcessDescriptorInfo.FromProcessDescriptor(processDesp);

            processInfo.Creator  = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object;
            processInfo.Modifier = (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object;

            return(processInfo);
        }
Exemplo n.º 12
0
        public void RemoveFromTransitionTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor fromActDesp = processDesp.InitialActivity;

            IWfActivityDescriptor toActDesp = fromActDesp.ToTransitions.FirstOrDefault().ToActivity;

            toActDesp.FromTransitions.RemoveByFromActivity(fromActDesp);

            Assert.IsNull(fromActDesp.ToTransitions.Find(t => t.ToActivity.Key == toActDesp.Key));
            Assert.IsNull(toActDesp.FromTransitions.Find(t => t.FromActivity.Key == fromActDesp.Key));
        }
        public void BasicActivityDescriptorDeleteTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"];

            int originalActCount = processDesp.Activities.Count;

            normalActDesp.Delete();

            processDesp.Output();

            Assert.AreEqual(originalActCount - 1, processDesp.Activities.Count);
        }
Exemplo n.º 14
0
        public void ProcessPersistExecutionTimeTest()
        {
            IWfProcessDescriptor processDesc = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            int totalProcesses = 40;

            //准备流程实例
            List <IWfProcess> processes = ProcessTestHelper.StartupMultiProcesses(processDesc, totalProcesses);

            ProcessTestHelper.OutputExecutionTime(() =>
            {
                WfRuntime.PersistWorkflows();
            },
                                                  string.Format("保存{0}个流程", totalProcesses));
        }
Exemplo n.º 15
0
        public void ClearToTransitionTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor fromActDesp = processDesp.InitialActivity;

            IWfActivityDescriptor toActDesp = fromActDesp.ToTransitions.FirstOrDefault().ToActivity;

            fromActDesp.ToTransitions.Clear();

            Assert.AreEqual(0, fromActDesp.ToTransitions.Count);

            Assert.IsNull(fromActDesp.ToTransitions.Find(t => t.ToActivity.Key == toActDesp.Key));
            Assert.IsNull(toActDesp.FromTransitions.Find(t => t.FromActivity.Key == fromActDesp.Key));
        }
Exemplo n.º 16
0
        public void BasicDynamicActivityWithoutResourceTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp);

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.InitialActivity.Descriptor, templateActDesp);

            ValidateNoResourceTransitionsProperties(processDesp.InitialActivity.ToTransitions.FindAll(t => t.Properties.GetValue("DynamicSource", string.Empty) == templateActDesp.Key), templateActDesp);

            Assert.AreEqual(processDesp.CompletedActivity.Key, firstDynamicActDesp.Key, "起始点和终止点连接在一起");
        }
Exemplo n.º 17
0
        public void InlineUserFunctionTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor normalActivityDesp = processDesp.Activities["NormalActivity"];

            normalActivityDesp.Resources.Clear();
            normalActivityDesp.Resources.Add(new WfDynamicResourceDescriptor("InlineUserFunc", string.Format("InlineUser(\"{0}\")", "ceo")));

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

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

            Assert.IsTrue(normalActivity.Candidates.Count > 0);
            Assert.AreEqual(OguObjectSettings.GetConfig().Objects["ceo"].Object.ID, normalActivity.Candidates[0].User.ID);
        }
Exemplo n.º 18
0
        public void CreateProcessDescriptorWithBranchProcDesp()
        {
            //分支流程描述
            IWfProcessDescriptor procDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            //主流程描述
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateProcessDescriptor();

            WfBranchProcessTemplateDescriptor data = new WfBranchProcessTemplateDescriptor("branchProcessTemplateDesp");

            data.BlockingType     = WfBranchProcessBlockingType.WaitAllBranchProcessesComplete;
            data.ExecuteSequence  = WfBranchProcessExecuteSequence.Parallel;
            data.BranchProcessKey = procDesp.Key;

            processDesp.Activities[1].BranchProcessTemplates.Add(data);
        }
Exemplo n.º 19
0
        public void WfProcessDescriptorConverter()
        {
            WfConverterHelper.RegisterConverters();
            WfProcessDescriptor processDesp = (WfProcessDescriptor)WfProcessTestCommon.CreateSimpleProcessDescriptor();

            string result = JSONSerializerExecute.Serialize(processDesp);

            Console.WriteLine(result);

            WfProcessDescriptor deserializedProcessDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(result);

            //再次序列化时,字条串不相等,是因为创建流程时没有Key
            string reSerialized = JSONSerializerExecute.Serialize(deserializedProcessDesp);

            Console.WriteLine(reSerialized);
            Assert.AreEqual(result, reSerialized);
        }
Exemplo n.º 20
0
        public void DynamicActivityWithActivityMatrixReturnToInitialTest()
        {
            IRole role = PrepareSOARole();

            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp, new WfResourceDescriptorCollection()
            {
                new WfRoleResourceDescriptor(role)
            });

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp, new Dictionary <string, object>()
            {
                { "CostCenter", "1001" }
            });

            //到第一个动态活动
            WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process);

            process = WfRuntime.GetProcessByProcessID(process.ID);

            //到第二个动态活动
            WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process);

            process = WfRuntime.GetProcessByProcessID(process.ID);

            //退回到起始点
            ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, process.InitialActivity.Descriptor.Key);

            process = WfRuntime.GetProcessByProcessID(process.ID);

            Console.WriteLine(process.CurrentActivity.Descriptor.Key);
            Console.WriteLine(process.CompletedActivity.Descriptor.FromTransitions.GetAllCanTransitForwardTransitions().Count);

            ReturnExecutorTestHelper.OutputMainStream(process);
            ReturnExecutorTestHelper.OutputEveryActivities(process);

            Assert.AreEqual(1, process.CompletedActivity.Descriptor.FromTransitions.GetAllCanTransitForwardTransitions().Count,
                            "结束点应该只有一条有效的入线s");

            Assert.AreEqual(process.InitialActivity.Descriptor.Key, process.CurrentActivity.Descriptor.AssociatedActivityKey);
        }
Exemplo n.º 21
0
        public void BasicDynamicActivityReturnTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp, (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object);

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            ReturnExecutorTestHelper.OutputMainStream(process);

            ReturnExecutorTestHelper.OutputEveryActivities(process);

            WfProcessTestCommon.MoveToNextDefaultActivity(process);
            ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, processDesp.InitialActivity.Key);

            //N2(Initial)->N1->N4->N5->Completed
            ReturnExecutorTestHelper.OutputMainStream(process);

            //N1->N2(Initial)->N4->N5->Completed
            ReturnExecutorTestHelper.OutputEveryActivities(process);

            Assert.AreEqual("Initial", process.CurrentActivity.Descriptor.GetAssociatedActivity().Key);
            Assert.AreEqual(2, process.CurrentActivity.Descriptor.ToTransitions.Count);

            WfProcessTestCommon.MoveToNextDefaultActivity(process);
            //Assert.AreEqual("N4", process.CurrentActivity.Descriptor.Key); //To N4

            //N2(Initial)->N1->N4->N5->Completed
            ReturnExecutorTestHelper.OutputMainStream(process);

            //N1->N2(Initial)->N4->N5->Completed
            ReturnExecutorTestHelper.OutputEveryActivities(process);

            //IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.InitialActivity.Descriptor, templateActDesp);

            //ValidateInDynamicTransitionsProperties(firstDynamicActDesp.FromTransitions, templateActDesp);

            //ValidateLastDynamicTransitions(templateActDesp);

            //ValidateTemplateCandidatesAndDynamicActivityCandidates(firstDynamicActDesp, templateActDesp);
        }
Exemplo n.º 22
0
        private IWfProcessDescriptor CreateComplexDynamicActivityProcess(params IUser[] users)
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp, users);

            processDesp.InitialActivity.ToTransitions.RemoveByToActivity(templateActDesp);
            templateActDesp.FromTransitions.RemoveByFromActivity(processDesp.InitialActivity);
            templateActDesp.ToTransitions.RemoveByToActivity(processDesp.CompletedActivity);
            processDesp.CompletedActivity.FromTransitions.RemoveByFromActivity(templateActDesp);

            IWfActivityDescriptor a1Activity = WfProcessTestCommon.CreateNormalActivity("A1");

            processDesp.Activities.Add(a1Activity);

            IWfActivityDescriptor a2Activity = WfProcessTestCommon.CreateNormalActivity("A2");

            processDesp.Activities.Add(a2Activity);

            IWfActivityDescriptor b1Activity = WfProcessTestCommon.CreateNormalActivity("B1");

            processDesp.Activities.Add(b1Activity);

            IWfActivityDescriptor b2Activity = WfProcessTestCommon.CreateNormalActivity("B2");

            processDesp.Activities.Add(b2Activity);

            processDesp.InitialActivity.ToTransitions.AddForwardTransition(a1Activity);
            processDesp.InitialActivity.ToTransitions.AddForwardTransition(a2Activity);

            a1Activity.ToTransitions.AddForwardTransition(templateActDesp);
            a2Activity.ToTransitions.AddForwardTransition(templateActDesp);

            templateActDesp.ToTransitions.AddForwardTransition(b1Activity);
            templateActDesp.ToTransitions.AddForwardTransition(b2Activity);

            b1Activity.ToTransitions.AddForwardTransition(processDesp.CompletedActivity);
            b2Activity.ToTransitions.AddForwardTransition(processDesp.CompletedActivity);

            return(processDesp);
        }
Exemplo n.º 23
0
        public void SimpleProcessSimulation()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

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

            WfSimulationParameters simulationParameters = new WfSimulationParameters();
            WfSimulationResult     result = WfSimulator.StartSimulation(processDesp, new WfSimulationParameters());

            Console.WriteLine(WfRuntime.ProcessContext.SimulationContext.GetOutputString());

            while (result.ProcessStatus != WfProcessStatus.Completed)
            {
                result = WfSimulator.MoveToSimulation(result.ProcessID, simulationParameters);

                Console.WriteLine(WfRuntime.ProcessContext.SimulationContext.GetOutputString());
            }
        }
Exemplo n.º 24
0
        public void MergeToTransitionsTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor fromActDesp = processDesp.InitialActivity;

            IWfActivityDescriptor toActDesp = fromActDesp.ToTransitions.FirstOrDefault().ToActivity;

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

            toActDesp.ToTransitions.CopyTo(transitionsNeedToMerge);
            fromActDesp.ToTransitions.CopyTo(transitionsNeedToMerge);

            IList <IWfTransitionDescriptor> addedTransitions = fromActDesp.CloneAndMergeToTransitions(transitionsNeedToMerge);

            Assert.AreEqual(1, addedTransitions.Count);
            Assert.AreEqual(2, fromActDesp.ToTransitions.Count);

            Assert.IsNotNull(fromActDesp.ToTransitions.Find(t => t.ToActivity == processDesp.CompletedActivity));
            Assert.IsNotNull(processDesp.CompletedActivity.FromTransitions.Find(t => t.FromActivity == fromActDesp));
        }
Exemplo n.º 25
0
        public void DispatchCancelNoBranchProcessTaskTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            MoveToExecutor(process);

            SysTaskAdapter.Instance.ClearAll();

            DispatchCancelProcessTask cancelTask = DispatchCancelProcessTask.SendTask(string.Empty, process.ID, true);

            //直接发布一个作废的任务流程
            SysTaskCommon.ExecuteAndAssertTask(cancelTask);

            int executedTaskCount = SysTaskCommon.ExecuteAllTasks();

            WfRuntime.ClearCache();
            process = WfRuntime.GetProcessByProcessID(process.ID);
            AssertProcessAndAllBranchesStatus(WfProcessStatus.Aborted, process);
        }
Exemplo n.º 26
0
        public void BasicDynamicActivityWithTwoAssigneesTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp,
                                              (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object,
                                              (IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object);

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.InitialActivity.Descriptor, templateActDesp);

            ValidateInDynamicTransitionsProperties(firstDynamicActDesp.FromTransitions, templateActDesp);

            WfActivityDescriptorCollection dynamicToActivities = firstDynamicActDesp.GetToActivities();

            ValidateLastDynamicTransitions(templateActDesp);

            ValidateTemplateCandidatesAndDynamicActivityCandidates(firstDynamicActDesp, templateActDesp);
        }
Exemplo n.º 27
0
        public void DynamicActivityWithActivityMatrixTest()
        {
            IRole role = PrepareSOARole();

            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp, new WfResourceDescriptorCollection()
            {
                new WfRoleResourceDescriptor(role)
            });

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp, new Dictionary <string, object>()
            {
                { "CostCenter", "1001" }
            });

            Assert.AreEqual(6, process.Activities.Count);

            IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.Descriptor.InitialActivity, templateActDesp);

            Assert.AreEqual(2, firstDynamicActDesp.Instance.Candidates.Count);

            foreach (WfAssignee assignee in firstDynamicActDesp.Instance.Candidates)
            {
                Assert.IsTrue(assignee.User.LogOnName == "fanhy" || assignee.User.LogOnName == "yangrui1");
            }

            IWfActivityDescriptor limingActDesp = firstDynamicActDesp.GetToActivities().FirstOrDefault();

            Assert.AreEqual(1, limingActDesp.Instance.Candidates.Count);
            Assert.IsTrue(limingActDesp.Instance.Candidates[0].User.LogOnName == "liming");

            IWfActivityDescriptor quymActDesp = limingActDesp.GetToActivities().FirstOrDefault();

            Assert.AreEqual(1, quymActDesp.Instance.Candidates.Count);
            Assert.IsTrue(quymActDesp.Instance.Candidates[0].User.LogOnName == "quym");
        }
Exemplo n.º 28
0
        public void CreateTransitionAndConnectActivitiesTest()
        {
            //创建一个三个活动的流程
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"];

            normalActDesp.ToTransitions.RemoveByToActivity(processDesp.CompletedActivity);

            WfCreateTransitionParamCollection transitionParams = new WfCreateTransitionParamCollection();

            WfCreateTransitionParam tp = new WfCreateTransitionParam();

            tp.Parameters["Key"]  = "T1";
            tp.Parameters["Name"] = "Transition1";

            tp.CreateTransitionAndConnectActivities(normalActDesp, processDesp.CompletedActivity);

            processDesp.Output();

            Assert.AreEqual(tp.Parameters["Name"], normalActDesp.ToTransitions.FirstOrDefault().Name);
        }
Exemplo n.º 29
0
        public void DynamicActivityActivityMatrixWithoutProcessContextTest()
        {
            IRole role = PrepareSOARole();

            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor();

            IWfActivityDescriptor templateActDesp = processDesp.Activities["NormalActivity"];

            FillDynamicActivitySimpleResource(templateActDesp, new WfResourceDescriptorCollection()
            {
                new WfRoleResourceDescriptor(role)
            });

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            Assert.AreEqual(3, process.Activities.Count);

            IWfActivityDescriptor firstDynamicActDesp = ValidateDynamicActivities(process.InitialActivity.Descriptor, templateActDesp);

            ValidateNoResourceTransitionsProperties(processDesp.InitialActivity.ToTransitions.FindAll(t => t.Properties.GetValue("DynamicSource", string.Empty) == templateActDesp.Key), templateActDesp);

            Assert.AreEqual(processDesp.CompletedActivity.Key, firstDynamicActDesp.Key, "起始点和终止点连接在一起");
        }
Exemplo n.º 30
0
        public void WfConditionOfProcessDescriptorConverterTest()
        {
            WfConverterHelper.RegisterConverters();

            WfProcessDescriptor   processDesp   = (WfProcessDescriptor)WfProcessTestCommon.CreateSimpleProcessDescriptor();
            WfConditionDescriptor conditionDesp = new WfConditionDescriptor()
            {
                Expression = "A>5"
            };

            ((WfForwardTransitionDescriptor)processDesp.InitialActivity.ToTransitions[0]).Condition = conditionDesp;

            string result = JSONSerializerExecute.Serialize(processDesp);

            Console.WriteLine(result);

            WfProcessDescriptor reProcessDesp = JSONSerializerExecute.Deserialize <WfProcessDescriptor>(result);

            Assert.AreEqual(conditionDesp.Expression, ((WfForwardTransitionDescriptor)reProcessDesp.InitialActivity.ToTransitions[0]).Condition.Expression);

            string reSerialized = JSONSerializerExecute.Serialize(reProcessDesp);

            Assert.AreEqual(result, reSerialized);
        }