public void ComplexDynamicActivityWithTwoAssigneesTest() { IWfProcessDescriptor processDesp = CreateComplexDynamicActivityProcess( (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object, (IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); IWfActivityDescriptor templateActDesp = process.Descriptor.Activities["NormalActivity"]; IWfActivityDescriptor a1Activity = process.Descriptor.Activities["A1"]; IWfActivityDescriptor a2Activity = process.Descriptor.Activities["A2"]; IWfActivityDescriptor firstDynamicActDesp1 = ValidateDynamicActivities(a1Activity, templateActDesp); IWfActivityDescriptor firstDynamicActDesp2 = ValidateDynamicActivities(a2Activity, templateActDesp); Assert.AreEqual(firstDynamicActDesp1.Key, firstDynamicActDesp2.Key); IWfActivityDescriptor secondDynamicActDesp = firstDynamicActDesp1.GetToActivities().FirstOrDefault(); //第二个动态点的出线对应活动 WfActivityDescriptorCollection secondDynamicActDespOutDesps = secondDynamicActDesp.GetToActivities(); Assert.AreEqual(2, secondDynamicActDespOutDesps.Count); Assert.IsTrue(secondDynamicActDespOutDesps.ContainsKey("B1")); Assert.IsTrue(secondDynamicActDespOutDesps.ContainsKey("B2")); ValidateLastDynamicTransitions(templateActDesp); ValidateTemplateCandidatesAndDynamicActivityCandidates(firstDynamicActDesp1, templateActDesp); }
public void ParallelBranchActivitySecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); IWfBranchProcessTemplateDescriptor template = processDesp.Activities["NormalActivity"].BranchProcessTemplates["Consign"]; template.Resources.Clear(); template.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object)); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); WfProcessTestCommon.MoveToNextDefaultActivity(process); IWfProcess consignBranchProcess = process.Activities.FindActivityByDescriptorKey("NormalActivity").BranchProcessGroups["Consign"].Branches.FirstOrDefault(); IWfProcess distributeBranchProcess = process.Activities.FindActivityByDescriptorKey("NormalActivity").BranchProcessGroups["Distribute"].Branches.FirstOrDefault(); Console.WriteLine("Consign Process"); OutputProcessCandidates(consignBranchProcess); ReturnExecutorTestHelper.OutputMainStream(consignBranchProcess); Console.WriteLine(""); Console.WriteLine("Distribute Process"); OutputProcessCandidates(distributeBranchProcess); ReturnExecutorTestHelper.OutputMainStream(distributeBranchProcess); Assert.AreEqual(4, consignBranchProcess.Activities.Count); Assert.AreEqual(2, distributeBranchProcess.Activities.Count); Assert.AreEqual(4, consignBranchProcess.MainStream.Activities.Count); Assert.AreEqual(2, distributeBranchProcess.MainStream.Activities.Count); }
public void SimpleSecretaryWithReturnLineTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretaryAndReturnLine(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); IWfActivity normalActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); IWfActivityDescriptor firstSecretary = normalActivity.Descriptor.FromTransitions.FirstOrDefault().FromActivity; Assert.AreEqual(1, firstSecretary.ToTransitions.Count); IWfActivityDescriptor secondSecretary = normalActivity.Descriptor.ToTransitions.FirstOrDefault().ToActivity; Assert.AreEqual(2, secondSecretary.ToTransitions.Count); Assert.AreEqual(2, normalActivity.Descriptor.ToTransitions.Count); foreach (IWfTransitionDescriptor transition in normalActivity.Descriptor.ToTransitions) { Assert.AreEqual(secondSecretary.Key, transition.ToActivity.Key); } }
public void DispatchWithdrawProcessTaskTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); SysTaskAdapter.Instance.ClearAll(); DispatchWithdrawProcessTask withdrawTask = DispatchWithdrawProcessTask.SendTask(string.Empty, process.ID, true); //直接发布一个撤回的任务流程 SysTaskCommon.ExecuteAndAssertTask(withdrawTask); int executedTaskCount = SysTaskCommon.ExecuteAllTasks(); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfProcessStatus.Running, process.Status); Assert.AreEqual(WfActivityType.InitialActivity, process.CurrentActivity.Descriptor.ActivityType); AssertAllBranchesStatus(WfProcessStatus.Aborted, process); }
public void ChangeLeaderToApproverThenChangeToLeaderSecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretary(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); ChangeActivityResource(process.Descriptor.Activities["NormalActivity"], (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); WfRuntime.DecorateProcess(process); Console.WriteLine("没有秘书的"); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); ChangeActivityResource(process.Descriptor.Activities["NormalActivity"], (IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object); WfRuntime.DecorateProcess(process); Console.WriteLine("有秘书的"); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); }
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); }
public void ExpenseProcessSerializationTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.LoadProcessDescriptorFromFile("Expense.xml"); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); process.ApplicationRuntimeParameters["Amount"] = 500; WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivityDescriptor currentActDesp = process.CurrentActivity.Descriptor; ToTransitionsDescriptorCollection transitions = currentActDesp.ToTransitions; foreach (string key in transitions.GetAllKeys()) { Assert.IsTrue(key.IsNotEmpty()); IWfTransitionDescriptor transition = transitions[key]; Assert.AreEqual(key, transition.Key); } }
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); }
public void SimpleSecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretary(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); }
public void ExitMaintainingStatusTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); process.ExitMaintainingStatus(true); Console.WriteLine(process.CurrentActivity.Descriptor.Key); }
public void DispatchStartBranchProcessTaskTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity ownerActivity = process.CurrentActivity; Console.WriteLine("OwnerActivityID: {0}", ownerActivity.ID); //在Template设置资源为一个组织,用于后续分发分支流程的测试 IWfBranchProcessTemplateDescriptor template = ownerActivity.Descriptor.BranchProcessTemplates[0]; IUser userInTemplate = template.Resources.ToUsers().FirstOrDefault(); WfDepartmentResourceDescriptor deptResourceDesp = new WfDepartmentResourceDescriptor(userInTemplate.Parent); template.Resources.Clear(); template.Resources.Add(deptResourceDesp); SysTaskAdapter.Instance.ClearAll(); SysTaskCommon.ExecuteAndAssertTask(DispatchStartBranchProcessTask.SendTask(ownerActivity.ID, template, true)); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); int startedTaskCount = (int)WfServiceInvoker.InvokeContext["returnValue"]; Console.WriteLine("Started Branch Task Count: {0}", startedTaskCount); Assert.IsTrue(startedTaskCount > 0); int executedTaskCount = SysTaskCommon.ExecuteAllTasks(); Assert.AreEqual(startedTaskCount, executedTaskCount); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfProcessStatus.Running, process.Status); Assert.IsTrue(process.CurrentActivity.BranchProcessGroups.Count > 0); Assert.AreEqual(startedTaskCount - 1, process.CurrentActivity.BranchProcessGroups[0].Branches.Count); }
public void EnterMaintainingStatusTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfProcessStatus.Maintaining, process.Status); Assert.AreEqual(WfActivityStatus.Pending, process.CurrentActivity.Status); Assert.AreEqual(0, process.CurrentActivity.BranchProcessGroups.Count); }
public void AllApprovalProcessScheduleRootTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); IWfActivityDescriptor normalActivity = processDesp.InitialActivity.ToTransitions[0].ToActivity; WfTransferParams transferParams0 = new WfTransferParams(normalActivity); //初始化后,流转到有分支流程的活动 process.MoveTo(transferParams0); Assert.AreEqual(process.ID, normalActivity.Instance.BranchProcessGroups[0].Branches[0].ScheduleRootProcess.ID); Assert.AreEqual(normalActivity.Instance.ID, normalActivity.Instance.BranchProcessGroups[0].Branches[0].InitialActivity.ScheduleRootActivity.ID); }
public void BranchProcessContainsSecretaryWithAgreeLineTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateBranchProcessWithSecretaryAndAgreeLine(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); process.CurrentActivity.BranchProcessGroups[0].Branches.ForEach(subProcess => { Console.WriteLine("分支流程ID={0}", subProcess.ID); OutputProcessCandidatesAndOutTransitions(subProcess); }); }
public void ChangeGenerateSimpleSecretaryTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithSecretary(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); ChangeActivityResource(process.Descriptor.Activities["NormalActivity"], (IUser)OguObjectSettings.GetConfig().Objects["vp"].Object); WfRuntime.DecorateProcess(process); OutputProcessCandidates(process); ReturnExecutorTestHelper.OutputMainStream(process); Assert.AreEqual(5, processDesp.Activities.Count); Assert.AreEqual(5, process.MainStream.Activities.Count); }
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, "起始点和终止点连接在一起"); }
public void CancelProcessTaskTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); ExecuteAndAssertTask(() => CancelProcessTask.SendTask(process.ID, false)); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfProcessStatus.Aborted, process.Status); }
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); }
public void ActiveMatrixResourceTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.GetDynamicProcessDesp(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp, new Dictionary <string, object>() { { "CostCenter", "1001" }, { "PayMethod", "1" }, { "Age", 30 } }); Console.WriteLine(process.Activities.Count); ReturnExecutorTestHelper.OutputMainStream(process); ReturnExecutorTestHelper.OutputEveryActivities(process); Assert.AreEqual(4, process.Activities.Count); }
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); }
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); }
public void WithdrawProcessTaskTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); ExecuteAndAssertTask(() => WithdrawProcessTask.SendTask(process.ID, false)); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfProcessStatus.Running, process.Status); Assert.AreEqual(WfActivityType.InitialActivity, process.CurrentActivity.Descriptor.ActivityType); Assert.AreEqual(WfActivityStatus.Running, process.CurrentActivity.Status); }
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); }
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); }
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"); }
public void BuildStartBranchProcessTaskProcessTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity ownerActivity = process.CurrentActivity; Console.WriteLine("OwnerActivityID: {0}", ownerActivity.ID); //在Template设置资源为一个组织,用于后续分发分支流程的测试 IWfBranchProcessTemplateDescriptor template = ownerActivity.Descriptor.BranchProcessTemplates[0]; IUser userInTemplate = template.Resources.ToUsers().FirstOrDefault(); WfDepartmentResourceDescriptor deptResourceDesp = new WfDepartmentResourceDescriptor(userInTemplate.Parent); template.Resources.Clear(); template.Resources.Add(deptResourceDesp); SysTaskAdapter.Instance.ClearAll(); StartBranchProcessSysTaskProcessBuilder builder = new StartBranchProcessSysTaskProcessBuilder(ownerActivity.ID, template, true); SysTaskProcess sysTaskProcess = builder.Build(); SysTaskProcessRuntime.ClearCache(); sysTaskProcess = SysTaskProcessRuntime.GetProcessByID(sysTaskProcess.ID); Console.WriteLine("SysTaskProcess ID: {0}", sysTaskProcess.ID); Console.WriteLine("SysTaskProcess Activities: {0}", sysTaskProcess.Activities.Count); Assert.AreEqual(template.Resources.ToUsers().Count + 1, sysTaskProcess.Activities.Count); }
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, "起始点和终止点连接在一起"); }
public void ExitMaintainingStatusTaskTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity ownerActivity = process.CurrentActivity; WfBranchProcessTransferParams transferParams = new WfBranchProcessTransferParams(ownerActivity.Descriptor.BranchProcessTemplates[0]); Console.WriteLine("Process ID: {0}", process.ID); ExecuteAndAssertTask(() => ExitMaintainingStatusTask.SendTask(ownerActivity.ID, process.ID, true)); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfProcessStatus.Completed, process.Status); }
public void TwoScheduleProcessRootTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); ((WfProcessDescriptor)processDesp).ProcessType = WfProcessType.Schedule; IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); IWfActivityDescriptor normalActivity = processDesp.InitialActivity.ToTransitions[0].ToActivity; WfTransferParams transferParams0 = new WfTransferParams(normalActivity); //初始化后,流转到有分支流程的活动 process.MoveTo(transferParams0); normalActivity.Instance.BranchProcessGroups.ForEach(g => g.Branches.ForEach(p => ((WfProcessDescriptor)p.Descriptor).ProcessType = WfProcessType.Schedule)); Assert.AreEqual(normalActivity.Instance.BranchProcessGroups[0].Branches[0].ID, normalActivity.Instance.BranchProcessGroups[0].Branches[0].ScheduleRootProcess.ID); Assert.AreEqual(normalActivity.Instance.BranchProcessGroups[0].Branches[0].InitialActivity.ID, normalActivity.Instance.BranchProcessGroups[0].Branches[0].InitialActivity.ScheduleRootActivity.ID); }
public void StartBranchProcessTaskTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity ownerActivity = process.CurrentActivity; Console.WriteLine("OwnerActivityID: {0}", ownerActivity.ID); WfBranchProcessTransferParams transferParams = new WfBranchProcessTransferParams(ownerActivity.Descriptor.BranchProcessTemplates[0]); ExecuteAndAssertTask(() => StartBranchProcessTask.SendTask(ownerActivity.ID, transferParams)); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(process.CurrentActivity.BranchProcessGroups.Count > 0); Assert.IsTrue(process.CurrentActivity.BranchProcessGroups[0].Branches.Count > 0); }