public void BaseAddApproverExecutorStandardModeWithWithdrawTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); int originalActCount = process.Activities.Count; WfProcessTestCommon.MoveToNextDefaultActivity(process); int originalElapsedActCount = process.ElapsedActivities.Count; IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfAddApproverExecutor executor = new WfAddApproverExecutor(process.CurrentActivity, targetActivity); executor.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object); executor.Execute(); Console.WriteLine("Elapsed activities: {0}", process.ElapsedActivities.Count); process = WfRuntime.GetProcessByProcessID(process.ID); WfWithdrawExecutor withdrawExecutor = new WfWithdrawExecutor(process.CurrentActivity, process.CurrentActivity); withdrawExecutor.Execute(); Console.WriteLine("Elapsed activities: {0}", process.ElapsedActivities.Count); Assert.AreEqual(originalElapsedActCount, process.ElapsedActivities.Count); Assert.AreEqual(originalActCount, process.Activities.Count, "撤回后,恢复为加签之前的状态"); Assert.AreEqual(originalActCount, process.MainStream.Activities.Count, "撤回后,主线流程的活动也没有变化"); WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities(); WfMainStreamActivityDescriptorCollection processMSA = process.GetMainStreamActivities(true); processDespMSA.Output("流程描述中的主线活动"); processMSA.Output("主线流程中的主线活动"); }
public void ReturnExecutorTestReplay() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver1, process); process = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver2, process); //退件到初始活动 process = WfRuntime.GetProcessByProcessID(process.ID); WfReturnExecutor returnExec = new WfReturnExecutor(process.CurrentActivity, process.Activities[0]); returnExec.Execute(); Assert.IsTrue(process.CurrentActivity.CreatorInstanceID != ""); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban)); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity act = process.Activities.FindActivityByDescriptorKey(process.CurrentActivity.Descriptor.AssociatedActivityKey); Assert.AreEqual(act.Assignees.Count, process.CurrentActivity.Assignees.Count); Assert.AreEqual(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity.AssociatedActivityKey, act.Descriptor.ToTransitions[0].ToActivity.Key); Assert.IsTrue(process.Activities.FindActivityByDescriptorKey(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity.Key).Assignees.Count > 0); }
private static IWfProcess GetProcessInstanceWithAssigneesResource() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver2); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivityDescriptor actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfActivityAssigneesResourceDescriptor actAssResDesp = new WfActivityAssigneesResourceDescriptor(); actAssResDesp.ActivityKey = actDesp.Key; actDesp.Resources.Add(actAssResDesp); nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tpa = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); process.MoveTo(tpa); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); return(process); }
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); }
public void ActivityOperatorResourceTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.approver1); IUser requestor = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object; tp.Operator = requestor; process.MoveTo(tp); WfActivityOperatorResourceDescriptor resource = new WfActivityOperatorResourceDescriptor(); resource.ActivityKey = process.InitialActivity.Descriptor.Key; process.CurrentActivity.Descriptor.Resources.Add(resource); OguDataCollection <IUser> users = process.CurrentActivity.Descriptor.Resources.ToUsers(); Assert.IsTrue(users.Count > 0); Assert.AreEqual(requestor.ID, users[0].ID, "验证资源中的人员是否是之前活动的操作人"); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); users = process.CurrentActivity.Descriptor.Resources.ToUsers(); Assert.IsTrue(users.Count > 0, "重新加载后资源中应该有人"); Assert.AreEqual(requestor.ID, users[0].ID, "重新加载后验证资源中的人员是否是之前活动的操作人"); }
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, "此处为动态添加的活动"); }
public void MainStreamActivitiesWithAmountCondition() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithCondition(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); process.ApplicationRuntimeParameters["Amount"] = 2500; WfMainStreamActivityDescriptorCollection mainActs = process.GetMainStreamActivities(true); mainActs.Output("不经过领导的主线活动"); Assert.IsTrue(mainActs.ContainsKey("NormalActivity")); Assert.IsFalse(mainActs.ContainsKey("ManagerActivity")); //改变条件 process.ApplicationRuntimeParameters["Amount"] = 10000; mainActs = process.GetMainStreamActivities(true); mainActs.Output("经过领导的主线活动"); Assert.IsTrue(mainActs.ContainsKey("NormalActivity")); Assert.IsTrue(mainActs.ContainsKey("ManagerActivity")); }
public void ActivityConditionTest() { TestContext.Properties["Amount"] = 2500; //不满足条件 WfRuntime.ProcessContext.EvaluateActivityCondition += new Expression.CalculateUserFunction(ProcessContext_EvaluateTransition); IWfProcess process = WfProcessTestCommon.StartupSimpleProcessDescriptorWithActivityCondition(); Assert.AreEqual(WfActivityStatus.Running, process.InitialActivity.Status); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams transferParams = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.requestor); process.MoveTo(transferParams); Assert.AreEqual(WfActivityStatus.Completed, process.InitialActivity.Status); Assert.AreEqual(WfActivityStatus.Pending, process.CurrentActivity.Status); IWfActivity activity = WfRuntime.ProcessContext.OriginalActivity; WfRuntime.PersistWorkflows(); TestContext.Properties["Amount"] = 7500; WfPendingActivityInfoCollection pendingActivities = WfPendingActivityInfoAdapter.Instance.Load(builder => builder.AppendItem("ACTIVITY_ID", process.CurrentActivity.ID)); pendingActivities.ForEach(pai => WfRuntime.ProcessPendingActivity(pai)); }
public void ActivityToTransitionsSort() { IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor(); AddActivitiesDespToSameActivityDesp(desp.Activities[1], 4); ToTransitionsDescriptorCollection transDespColl = desp.Activities[1].ToTransitions; Assert.AreEqual(4, transDespColl.Count); SetTransitionCondition(transDespColl[0], false, 4); SetTransitionCondition(transDespColl[1], true, 0); SetTransitionCondition(transDespColl[2], false, 2); SetTransitionCondition(transDespColl[3], true, 1); WfTransitionDescriptorCollection transitions = desp.Activities[1].ToTransitions.GetAllCanTransitTransitions(); Assert.IsTrue(transitions[0].DefaultSelect); Assert.AreEqual(transDespColl[1].DefaultSelect, transitions[0].DefaultSelect); Assert.IsTrue(transitions[1].DefaultSelect); Assert.AreEqual(transDespColl[3].DefaultSelect, transitions[1].DefaultSelect); Assert.IsFalse(transitions[2].DefaultSelect); Assert.AreEqual(transDespColl[2].Priority, transitions[2].Priority); Assert.IsFalse(transitions[3].DefaultSelect); Assert.AreEqual(transDespColl[0].Priority, transitions[3].Priority); }
public void WfAclAdapterDataTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); ((WfProcess)process).ResourceID = "resource2"; ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, process); process = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.requestor, process); process = WfRuntime.GetProcessByProcessID(process.ID); ProcessTestHelper.MoveToAndSaveNextActivity(OguObject.approver2, process); string userId = process.CurrentActivity.Assignees[0].User.ID; WfAclItemCollection itemColl = WfAclAdapter.Instance.Load(builder => { builder.AppendItem("RESOURCE_ID", "resource2"); builder.AppendItem("OBJECT_ID", userId); }); Assert.AreEqual(1, itemColl.Count, "相同的人只保留一条记录"); WfAclItemCollection coll = WfAclAdapter.Instance.LoadByResourceID("resource2"); Assert.AreEqual(2, coll.Count, "只会有两条记录.在一个资源下同一个人只会有一条记录存在.但是如果存在委托时,则个数就不定"); foreach (WfAclItem data in coll) { WfAclAdapter.Instance.Delete(data); } }
public void BasicAddActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); int originalActCount = process.Activities.Count; IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); WfAddActivityExecutor executor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams); executor.Execute(); Assert.IsNotNull(executor.AddedActivity.GetMainStreamActivityDescriptor()); Assert.AreEqual(originalActCount + 1, process.Activities.Count); WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities(); WfMainStreamActivityDescriptorCollection processMSA = process.GetMainStreamActivities(true); processDespMSA.Output("流程描述中的主线活动"); processMSA.Output("主线流程中的主线活动"); Assert.AreEqual(process.Descriptor.Activities.Count, process.MainStream.Activities.Count); Assert.AreEqual(processDespMSA.Count, processMSA.Count); }
public void AddActivityWithConsignExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); int originalActCount = process.Activities.Count; IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); createParams.AllAgreeWhenConsign = true; createParams.Users = new OguDataCollection <IUser>(); createParams.Users.Add((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); createParams.Users.Add((IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object); WfAddActivityExecutor executor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams); executor.Execute(); Assert.AreEqual(originalActCount + 1, process.Activities.Count); WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities(); WfMainStreamActivityDescriptorCollection processMSA = process.GetMainStreamActivities(true); processDespMSA.Output("流程描述中的主线活动"); processMSA.Output("主线流程中的主线活动"); Assert.AreEqual(1, executor.AddedActivity.Descriptor.BranchProcessTemplates.Count); Assert.AreEqual(1, executor.AddedActivity.GetMainStreamActivityDescriptor().BranchProcessTemplates.Count); Assert.AreEqual(process.Descriptor.Activities.Count, process.MainStream.Activities.Count); Assert.AreEqual(processDespMSA.Count, processMSA.Count); }
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"]); }
public void BaseAddApproverExecutorOnlyAddApproverModeTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); int originalActCount = process.Activities.Count; WfProcessTestCommon.MoveToNextDefaultActivity(process); IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfAddApproverExecutor executor = new WfAddApproverExecutor(process.CurrentActivity, targetActivity); executor.AddApproverMode = WfAddApproverMode.OnlyAddApprover; executor.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object); executor.Execute(); Assert.AreEqual(originalActCount + 1, process.Activities.Count); Assert.AreEqual(originalActCount + 1, process.MainStream.Activities.Count); WfMainStreamActivityDescriptorCollection processDespMSA = process.Descriptor.GetMainStreamActivities(); WfMainStreamActivityDescriptorCollection processMSA = process.GetMainStreamActivities(true); processDespMSA.Output("流程描述中的主线活动"); processMSA.Output("主线流程中的主线活动"); }
public void ReturnExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); 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); WfReturnExecutor returnExec = new WfReturnExecutor(process.CurrentActivity, process.Activities[1]); returnExec.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(process.CurrentActivity.CreatorInstanceID != ""); Assert.AreEqual(process.ElapsedActivities[process.ElapsedActivities.Count - 1].ID, process.CurrentActivity.CreatorInstanceID); WfMainStreamActivityDescriptorCollection coll = process.Descriptor.GetMainStreamActivities(); Assert.AreEqual(6, coll.Count); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban)); }
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); }
public void ConsignExecutorWithMoveToTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); List <IUser> users = null; //添加会签活动且启动了分支流程 ConsignExecutorWithCondition(process, out users); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(process.CurrentActivity.BranchProcessGroups.Count > 0); Assert.AreEqual(users.Count, process.CurrentActivity.BranchProcessGroups[0].Branches.Count); IWfActivity originalActivity = process.CurrentActivity; Assert.AreEqual(WfActivityStatus.Pending, process.CurrentActivity.Status); foreach (IWfProcess branchProcess in process.CurrentActivity.BranchProcessGroups[0].Branches) { IWfProcess subProcess = WfRuntime.GetProcessByProcessID(branchProcess.ID); MoveToExecutor(subProcess); } process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(originalActivity.ID, process.CurrentActivity.ID); Assert.AreEqual(WfActivityStatus.Running, process.CurrentActivity.Status); }
public void ReplaceAssigneeExecutorTestReplay() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; IUser originalApprover = (IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver1.ToString()].Object; normalActDesp.Resources.Clear(); normalActDesp.Resources.Add(new WfUserResourceDescriptor(originalApprover)); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IUser newApprover = (IUser)OguObjectSettings.GetConfig().Objects[OguObject.approver2.ToString()].Object; WfReplaceAssigneesExecutor executor = new WfReplaceAssigneesExecutor(process.CurrentActivity, process.CurrentActivity, originalApprover, new IUser[] { newApprover }); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); UserTaskCollection tasks = UserTaskAdapter.Instance.LoadUserTasks(build => build.AppendItem("ACTIVITY_ID", process.CurrentActivity.ID)); Assert.AreEqual(1, tasks.Count); Assert.AreEqual(newApprover.ID, tasks[0].SendToUserID); }
public void CancelProcessInOtherActivityTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, OguObject.requestor); process.MoveTo(tp); WfRuntime.PersistWorkflows(); UserTaskCollection tasks = UserTaskAdapter.Instance.LoadUserTasks(b => b.AppendItem("ACTIVITY_ID", process.CurrentActivity.ID)); Console.WriteLine("Current Activity ID: {0}", process.CurrentActivity.ID); Console.WriteLine("User Task Count: {0}", tasks.Count); process = CancelProcess(process, false); UserTaskCollection userAccomlishedTasks = UserTaskAdapter.Instance.GetUserAccomplishedTasks(UserTaskIDType.ActivityID, UserTaskFieldDefine.All, false, process.CurrentActivity.ID); Console.WriteLine("User Accomplished Task Count: {0}", userAccomlishedTasks.Count); Assert.AreEqual(tasks.Count, userAccomlishedTasks.Count); }
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()); }
public void CancelProcessInInitialActivityTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); WfRuntime.PersistWorkflows(); CancelProcess(process, false); }
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)); }
private static IWfProcess GetProcessInstanceWithBranchProcessRunning(WfBranchProcessExecuteSequence sequence, WfBranchProcessBlockingType blockingType) { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, sequence, blockingType); process.MoveTo(tp); WfRuntime.PersistWorkflows(); return(WfRuntime.GetProcessByProcessID(process.ID)); }
public void StartBranchProcessExecutorTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); IWfActivityDescriptor normalActivityDesp = processDesp.Activities["NormalActivity"]; //不自动启动分支流程 normalActivityDesp.Properties.SetValue("AutoStartBranchProcesses", false); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); //前进一步,但是没有启动流程 MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity normalActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); Assert.AreEqual(0, normalActivity.BranchProcessGroups.Count); WfProcessCollection processes = new WfProcessCollection(); for (int i = 0; i < normalActivity.Descriptor.BranchProcessTemplates.Count; i++) { process = WfRuntime.GetProcessByProcessID(process.ID); normalActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfStartBranchProcessExecutor executor = new WfStartBranchProcessExecutor(normalActivity, normalActivity, normalActivity.Descriptor.BranchProcessTemplates[i]); executor.Execute(); processes.CopyFrom(executor.StartedProcesses); } process = WfRuntime.GetProcessByProcessID(process.ID); normalActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); Console.WriteLine(processes.Count); Assert.AreEqual(2, normalActivity.BranchProcessGroups.Count); //Assert.AreEqual(1, normalActivity.BranchProcessGroups[0].BranchProcessStatistics.Total); //Assert.AreEqual(0, normalActivity.BranchProcessGroups[0].BranchProcessStatistics.Completed); //Assert.AreEqual(0, normalActivity.BranchProcessGroups[0].BranchProcessStatistics.Aborted); Assert.IsTrue(normalActivity.BranchProcessGroups[0].IsBlocking()); //Assert.AreEqual(1, normalActivity.BranchProcessGroups[1].BranchProcessStatistics.Total); //Assert.AreEqual(0, normalActivity.BranchProcessGroups[1].BranchProcessStatistics.Completed); //Assert.AreEqual(0, normalActivity.BranchProcessGroups[1].BranchProcessStatistics.Aborted); Assert.IsTrue(normalActivity.BranchProcessGroups[1].IsBlocking()); Assert.AreEqual(1, normalActivity.BranchProcessGroups[0].Branches.Count); Assert.AreEqual(1, normalActivity.BranchProcessGroups[1].Branches.Count); }
public void SimpleProcessMoveTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); WfTransferParams transferParams = new WfTransferParams(process.Descriptor.CompletedActivity); process.MoveTo(transferParams); Assert.IsTrue(process.InitialActivity.Status == WfActivityStatus.Completed); Assert.IsTrue(process.Status == WfProcessStatus.Completed); Assert.IsTrue(process.CompletedActivity.Status == WfActivityStatus.Completed); }
public static IWfProcess StartupSimpleProcess() { ProcessContextAction(); IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); WfProcessStartupParams startupParams = new WfProcessStartupParams(); startupParams.ResourceID = UuidHelper.NewUuidString(); startupParams.ProcessDescriptor = processDesp; return(WfRuntime.StartWorkflow(startupParams)); }
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)); }
public static IWfProcessDescriptor GetDynamicProcessDesp() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"]; normalActDesp.Properties.SetValue("IsDynamic", true); WfActivityMatrixResourceDescriptor resource = PrepareActivityMatrixResourceDescriptor(); normalActDesp.Resources.Add(resource); return(processDesp); }
public void NormalActivityAutoMoveTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptor(); processDesp.Activities["NormalActivity"].Properties.SetValue("AutoMoveTo", true); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); IWfActivity currentActivity = process.MoveToNextDefaultActivity(); Console.WriteLine(currentActivity.Descriptor.ActivityType); Assert.AreEqual(WfActivityType.CompletedActivity, currentActivity.Descriptor.ActivityType); }
private static string GetStartWorkflowResourceID(IUser user) { IWfProcessDescriptor procDesp = WfProcessTestCommon.CreateProcessDescriptor(); WfUserResourceDescriptor userDesp = new WfUserResourceDescriptor(user); procDesp.InitialActivity.Resources.Add(userDesp); WfProcessStartupParams startParams = WfProcessTestCommon.GetInstanceOfWfProcessStartupParams(procDesp); WfStartWorkflowExecutor exec = new WfStartWorkflowExecutor(null, startParams); exec.Execute(); return(startParams.ResourceID); }