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 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 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 PersistProcessWithTenantCode() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); TenantContext.Current.TenantCode = "1001"; ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单的带TenantCode的流程"); }
public void ReturnTwiceTest() { IWfActivity activityD = ReturnExecutorTestHelper.PrepareAndMoveToSpecialActivity(); Assert.AreEqual("D", activityD.Descriptor.Key); ReturnExecutorTestHelper.OutputMainStream(activityD.Process); ReturnExecutorTestHelper.OutputEveryActivities(activityD.Process); //第一次退回 ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("第一次退回后"); ReturnExecutorTestHelper.OutputMainStream(activityD.Process); ReturnExecutorTestHelper.OutputEveryActivities(activityD.Process); WfProcessTestCommon.MoveToNextDefaultActivity(activityD.Process); //B1 WfProcessTestCommon.MoveToNextDefaultActivity(activityD.Process); //C1 WfProcessTestCommon.MoveToNextDefaultActivity(activityD.Process); //D1 Assert.AreEqual("D", activityD.Process.CurrentActivity.Descriptor.AssociatedActivityKey); //在B的出线C和E之间选择E activityD.Process.ApplicationRuntimeParameters["IsCLine"] = false; //第二次退回 ReturnExecutorTestHelper.ExecuteReturnOperation(activityD, "A"); Console.WriteLine("第二次退回后"); ReturnExecutorTestHelper.OutputMainStream(activityD.Process); ReturnExecutorTestHelper.OutputEveryActivities(activityD.Process); ReturnExecutorTestHelper.ValidateMainStreamActivities(activityD.Process, "A", "B", "E", "D", "F"); }
public void AddApproverReturnTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareAddApproverReturnProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); WfProcessTestCommon.MoveToNextDefaultActivity(process); Assert.AreEqual("B", process.CurrentActivity.Descriptor.Key); WfAddApproverExecutor executor = new WfAddApproverExecutor(process.CurrentActivity, process.CurrentActivity); executor.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object); executor.ExecuteNotPersist(); Assert.AreEqual(6, process.Activities.Count, "加签后变成6个活动"); WfProcessTestCommon.MoveToNextDefaultActivity(process); //B的衍生点 Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); WfProcessTestCommon.MoveToNextDefaultActivity(process); //C的衍生点 Assert.AreEqual("C", process.CurrentActivity.Descriptor.Key); ReturnExecutorTestHelper.ExecuteReturnOperation(process.CurrentActivity, "B"); Assert.AreEqual(8, process.Activities.Count, "退回后8个活动"); Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); WfProcessTestCommon.MoveToNextDefaultActivity(process); //C的衍生点 Assert.AreEqual("C", process.CurrentActivity.Descriptor.AssociatedActivityKey); WfProcessTestCommon.MoveToNextDefaultActivity(process); //D Assert.AreEqual("D", process.CurrentActivity.Descriptor.Key); }
public void BasicAdminDeleteTransitionWithMainStreamExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); IWfActivityDescriptor targetDesp = process.Descriptor.Activities["NormalActivity"]; IWfTransitionDescriptor transitionDesp = targetDesp.ToTransitions.FirstOrDefault(); IWfActivityDescriptor nextActDesp = transitionDesp.ToActivity; WfAdminDeleteTransitionExecutor executor = new WfAdminDeleteTransitionExecutor(process.CurrentActivity, process.Descriptor, transitionDesp, true); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfProcessDescriptor processDesp = process.Descriptor; targetDesp = processDesp.Activities[targetDesp.Key]; nextActDesp = processDesp.CompletedActivity; Assert.IsNull(targetDesp.ToTransitions.FirstOrDefault()); Assert.IsNull(nextActDesp.FromTransitions.FirstOrDefault()); processDesp = process.MainStream; targetDesp = processDesp.Activities[targetDesp.Key]; nextActDesp = processDesp.CompletedActivity; Assert.IsNull(targetDesp.ToTransitions.FirstOrDefault()); Assert.IsNull(nextActDesp.FromTransitions.FirstOrDefault()); }
public void EditActivityConditionExecutorTest() { WfConverterHelper.RegisterConverters(); IWfProcess process = WfProcessTestCommon.StartupSimpleProcessDescriptorWithActivityCondition(); IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); const string targetCondition = "Amount > 5000000"; targetActivity.Descriptor.Condition.Expression = targetCondition; targetActivity.Descriptor.Properties["Condition"].StringValue = JSONSerializerExecute.Serialize(targetActivity.Descriptor.Condition); WfEditActivityPropertiesExecutor executor = new WfEditActivityPropertiesExecutor(process.CurrentActivity, process, targetActivity.Descriptor, true); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); Assert.AreEqual(targetCondition, targetActivity.Descriptor.Condition.Expression); IWfActivityDescriptor msActDesp = process.Activities.FindActivityByDescriptorKey("NormalActivity").GetMainStreamActivityDescriptor(); Console.WriteLine(msActDesp.Condition.Expression); Assert.AreEqual(targetCondition, msActDesp.Condition.Expression); }
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)); }
public void BasicAdminDeleteActivityWithMainStreamExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); IWfActivityDescriptor targetDesp = process.Descriptor.Activities["NormalActivity"]; WfAdminDeleteActivityExecutor executor = new WfAdminDeleteActivityExecutor(process.CurrentActivity, targetDesp, true); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfProcessDescriptor processDesp = process.Descriptor; targetDesp = processDesp.Activities["NormalActivity"]; Assert.IsNull(targetDesp); Assert.AreEqual(0, processDesp.InitialActivity.ToTransitions.Count); Assert.AreEqual(0, processDesp.CompletedActivity.FromTransitions.Count); processDesp = process.MainStream; targetDesp = processDesp.Activities["NormalActivity"]; Assert.IsNull(targetDesp); Assert.AreEqual(0, processDesp.InitialActivity.ToTransitions.Count); Assert.AreEqual(0, processDesp.CompletedActivity.FromTransitions.Count); }
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 BasicAdminAddTransitionWithMainStreamExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); const string targetName = "修改后的名称"; IWfActivity fromActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); IWfTransitionDescriptor targetDesp = fromActivity.Descriptor.ToTransitions.AddBackwardTransition(process.Descriptor.InitialActivity); targetDesp.Properties.SetValue("Name", targetName); WfAdminAddTransitionExecutor executor = new WfAdminAddTransitionExecutor(process.CurrentActivity, process, targetDesp, true); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); fromActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); targetDesp = fromActivity.Descriptor.ToTransitions.GetTransitionByToActivity(process.Descriptor.InitialActivity); Assert.IsNotNull(targetDesp); Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty)); IWfActivityDescriptor msFromActDesp = process.MainStream.Activities["NormalActivity"]; IWfActivityDescriptor msToActDesp = process.MainStream.InitialActivity; targetDesp = msFromActDesp.ToTransitions.GetTransitionByToActivity(msToActDesp); Assert.IsNotNull(targetDesp); Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty)); }
public void BasicEditActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); const string targetName = "修改后的名称"; targetActivity.Descriptor.Properties.SetValue("Name", targetName); WfEditActivityPropertiesExecutor executor = new WfEditActivityPropertiesExecutor(process.CurrentActivity, process, targetActivity.Descriptor, false); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); Assert.AreEqual(targetName, targetActivity.Descriptor.Properties.GetValue("Name", string.Empty)); UserOperationLog log = UserOperationLogAdapter.Instance.Load(builder => builder.AppendItem("ACTIVITY_ID", process.CurrentActivity.ID)).FirstOrDefault(); Assert.IsNotNull(log); Console.WriteLine("{0}: {1}", log.OperationName, log.Subject); }
public void WfBranchProcessTransferParamsJsonTest() { WfConverterHelper.RegisterConverters(); IUser user = (IUser)OguObjectSettings.GetConfig().Objects[OguObject.requestor.ToString()].Object; IWfBranchProcessTemplateDescriptor template = WfProcessTestCommon.CreateTemplate("Consign", user); WfBranchProcessTransferParams data = new WfBranchProcessTransferParams(template); data.BranchParams.Clear(); WfBranchProcessStartupParams bpsp = new WfBranchProcessStartupParams(user); bpsp.Department = user.Parent; bpsp.RelativeParams["RP"] = UuidHelper.NewUuidString(); bpsp.ApplicationRuntimeParameters["context"] = UuidHelper.NewUuidString(); bpsp.ResourceID = UuidHelper.NewUuidString(); bpsp.DefaultTaskTitle = UuidHelper.NewUuidString(); bpsp.StartupContext = UuidHelper.NewUuidString(); data.BranchParams.Add(bpsp); string serilizedData = JSONSerializerExecute.Serialize(data); Console.WriteLine(serilizedData); WfBranchProcessTransferParams deserilizedData = JSONSerializerExecute.Deserialize <WfBranchProcessTransferParams>(serilizedData); Assert.AreEqual(data.Template.Key, deserilizedData.Template.Key); Assert.AreEqual(data.Template.BranchProcessKey, deserilizedData.Template.BranchProcessKey); AssertBranchProcessStartupParams(data.BranchParams[0], deserilizedData.BranchParams[0]); }
public void NoticeOfLeaveActivity() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfUserResourceDescriptor userResDesp = GetUserResDespInstance(); nextActivityDesp.LeaveEventReceivers.Add(userResDesp); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver2); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); process.MoveTo(new WfTransferParams(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity)); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); string actKey = process.CurrentActivity.Descriptor.FromTransitions[0].FromActivity.Key; Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(userResDesp.User.ID, process.Activities[1].ID, TaskStatus.Yue)); }
public void SimpleCopyMainStreamActivitiesTest() { IWfProcessDescriptor processDesp = ReturnExecutorTestHelper.PrepareStraightProcessDesp(); IWfProcess process = ReturnExecutorTestHelper.StartSpecialReturnProcess(processDesp); WfProcessTestCommon.MoveToNextDefaultActivity(process); //To B WfProcessTestCommon.MoveToNextDefaultActivity(process); //To C IWfActivity activityB = process.Activities.FindActivityByDescriptorKey("B"); //从B复制到C process.Activities.FindActivityByDescriptorKey("C").CopyMainStreamActivities(activityB, null, WfControlOperationType.Return); process.Descriptor.Output(); WfProcessTestCommon.MoveToNextDefaultActivity(process); //To CopiedB Assert.AreEqual("B", process.CurrentActivity.Descriptor.AssociatedActivityKey); IWfActivityDescriptor copiedB = process.CurrentActivity.Descriptor; Assert.AreEqual("B", copiedB.AssociatedActivityKey); Assert.AreEqual("C", copiedB.ToTransitions.First().ToActivity.AssociatedActivityKey, "复制出的B指向C"); }
public void ReplaceUserResourceTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateProcessDescriptorWithBranchTemplateAndUsers(); IUser approver1 = (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object; List <IUser> replaceUsers = new List <IUser>(); IUser ceo = (IUser)OguObjectSettings.GetConfig().Objects["ceo"].Object; replaceUsers.Add((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); replaceUsers.Add(ceo); int affectedUsers = processDesp.ReplaceAllUserResourceDescriptors(approver1, replaceUsers); Console.WriteLine(affectedUsers); Assert.AreEqual(2, processDesp.InitialActivity.Resources.Count); Assert.IsTrue(ContainsUserResource(processDesp.InitialActivity.Resources, ceo)); IWfActivityDescriptor normalActivity = processDesp.Activities["NormalActivity"]; Assert.AreEqual(1, normalActivity.BranchProcessTemplates["Consign"].Resources.Count); Assert.IsTrue(ContainsUserResource(normalActivity.BranchProcessTemplates["Consign"].Resources, ceo)); IUser approver2 = (IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object; affectedUsers = processDesp.ReplaceAllUserResourceDescriptors(approver2, new IUser[] { }); Assert.AreEqual(0, normalActivity.BranchProcessTemplates["Distribute"].Resources.Count); }
public void AgreeReturnTwiceThenWithdrawTest() { IWfActivity activityB = ReturnExecutorTestHelper.PrepareAndMoveToAgreeSelectorActivity(); Assert.AreEqual("B", activityB.Descriptor.Key); SetToLineAndMSLineSelected(activityB, "C", false); SetToLineAndMSLineSelected(activityB, "A", true); Console.WriteLine("退回之前"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); ReturnExecutorTestHelper.OutputMainStream(activityB.Process); ReturnExecutorTestHelper.OutputEveryActivities((activityB.Process)); MoveAgreeProcessOneStepAndValidate(activityB.Process, 1); WfProcessTestCommon.MoveToNextDefaultActivity(activityB.Process); //To N2(B) Console.WriteLine("第二次退回之前"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); ReturnExecutorTestHelper.OutputMainStream(activityB.Process); ReturnExecutorTestHelper.OutputEveryActivities((activityB.Process)); Assert.AreEqual("N2", activityB.Process.CurrentActivity.Descriptor.Key); MoveAgreeProcessOneStepAndValidate(activityB.Process, 2); Console.WriteLine("第二次退回之后"); Console.WriteLine("当前活动{0}", activityB.Process.CurrentActivity.Descriptor.Key); ReturnExecutorTestHelper.OutputMainStream(activityB.Process); ReturnExecutorTestHelper.OutputEveryActivities(activityB.Process); Assert.AreEqual("N3", activityB.Process.CurrentActivity.Descriptor.Key); }
public void MovetoDelegationTest() { WfDelegation delegation = PrepareDelegation(); WfDelegationAdapter.Instance.Update(delegation); //添加委托 try { //创建流程 IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); process.MoveTo(tp); //流转 WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue((ProcessTestHelper.GetActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban).Count) >= 2, "至少有两个待办事项。或许其它人也会去为当前人指定相应的委托人"); } finally { WfDelegationAdapter.Instance.Delete(delegation); //清理委托 } }
public void SimpleProcessPersistRepeatTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); //process.DefaultTaskTitle = "测试保存的流程"; WfRuntime.PersistWorkflows(); IWfProcess loadedProcess = WfRuntime.GetProcessByProcessID(process.ID); IWfProcess loadedProcess2 = WfRuntime.GetProcessByActivityID(process.Activities[0].ID); Assert.AreEqual(loadedProcess, loadedProcess2); int n = loadedProcess.Activities.Count; for (int i = 0; i < n; i++) { if (loadedProcess.Activities[i].Descriptor != loadedProcess.Descriptor.InitialActivity) { WfTransferParams transferPara = new WfTransferParams(loadedProcess.Activities[i].Descriptor); loadedProcess.MoveTo(transferPara); WfRuntime.PersistWorkflows(); } loadedProcess = WfRuntime.GetProcessByActivityID(loadedProcess.Activities[i].ID); } IWfProcess OnceAgainloadedProcess = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(OnceAgainloadedProcess.ID, process.ID); }
public void CancelDelegationTest() { WfDelegation delegation = PrepareDelegation(); WfDelegationAdapter.Instance.Update(delegation); try { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); process.CancelProcess(false); //取消 WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(2, ProcessTestHelper.GetActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Yue).Count, "应该产生两条待阅"); } finally { WfDelegationAdapter.Instance.Delete(delegation); //清理委托 } }
public void BranchProcessPersistTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); process.MoveTo(tp); Assert.AreEqual(1, process.CurrentActivity.BranchProcessGroups.Count); IWfBranchProcessGroup group = process.CurrentActivity.BranchProcessGroups[0]; AssertBranchProcessesInfo(group, tp.BranchTransferParams[0].Template.BranchProcessKey); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); group = process.CurrentActivity.BranchProcessGroups[0]; AssertBranchProcessesInfo(group, tp.BranchTransferParams[0].Template.BranchProcessKey); string subProcessID = process.CurrentActivity.BranchProcessGroups[0].Branches[0].ID; WfRuntime.ClearCache(); //构造子流程,反向查找主流程信息 IWfProcess subProcess = WfRuntime.GetProcessByProcessID(subProcessID); AssertBranchProcessesInfo(subProcess.EntryInfo.OwnerActivity.BranchProcessGroups[0], tp.BranchTransferParams[0].Template.BranchProcessKey); }
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); }
public void SimpleProcessPersistTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); //process.DefaultTaskTitle = "测试保存的流程"; ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单流程"); try { IWfProcess loadedProcess = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(process.ID, loadedProcess.ID); Assert.AreEqual(process.Status, loadedProcess.Status); Assert.AreEqual(DataLoadingType.External, loadedProcess.LoadingType); WfTransferParams transferParams = new WfTransferParams(process.Descriptor.CompletedActivity); transferParams.Assignees.Add(new WfAssignee((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object)); transferParams.Assignees.Add(new WfAssignee((IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object)); loadedProcess.MoveTo(transferParams); WfRuntime.PersistWorkflows(); Assert.AreEqual(process.ID, loadedProcess.ID); Assert.AreEqual(WfProcessStatus.Completed, loadedProcess.Status); Assert.AreEqual(DataLoadingType.External, loadedProcess.LoadingType); } finally { //WfRuntime.DeleteProcessByProcessID(process.ID); } }
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); }
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 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); }
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 FetchPersistQueueTest() { WfPersistQueueAdapter.Instance.ClearQueue(); WfPersistQueueAdapter.Instance.ClearArchivedQueue(); IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单流程"); Assert.AreEqual(0, WfProcessCurrentAssigneeAdapter.Instance.Load(process.ID).Count); Assert.AreEqual(0, WfProcessRelativeParamsAdapter.Instance.Load(process.ID).Count); Assert.IsNull(WfProcessDimensionAdapter.Instance.Load(process.ID)); Console.WriteLine(process.ID); WfPersistQueue pq = WfPersistQueueAdapter.Instance.FetchQueueItemsAndDoOperation(1).FirstOrDefault(); Assert.IsTrue(WfProcessCurrentAssigneeAdapter.Instance.Load(pq.ProcessID).Count > 0); Assert.AreEqual(process.RelativeParams.Count, WfProcessRelativeParamsAdapter.Instance.Load(pq.ProcessID).Count); Assert.IsNull(WfPersistQueueAdapter.Instance.Load(pq.ProcessID)); WfPersistQueue pqArchieved = WfPersistQueueAdapter.Instance.LoadArchived(pq.ProcessID); Assert.IsNotNull(pqArchieved); Assert.AreEqual(pq.UpdateTag, pqArchieved.UpdateTag); WfProcessDimension pd = WfProcessDimensionAdapter.Instance.Load(pq.ProcessID); Assert.IsNotNull(pd); Console.WriteLine(pd.Data); }