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 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 PersistProcessWithTenantCode() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); TenantContext.Current.TenantCode = "1001"; ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单的带TenantCode的流程"); }
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 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); }
public void PersistQueueBasicTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单流程"); WfPersistQueue pq = WfPersistQueue.FromProcess(process); Console.WriteLine(pq.ProcessID); Assert.AreEqual(0, WfProcessCurrentAssigneeAdapter.Instance.Load(pq.ProcessID).Count); Assert.AreEqual(0, WfProcessRelativeParamsAdapter.Instance.Load(pq.ProcessID).Count); Assert.IsNull(WfProcessDimensionAdapter.Instance.Load(pq.ProcessID)); WfPersistQueueAdapter.Instance.DoQueueOperation(pq); Assert.IsTrue(WfProcessCurrentAssigneeAdapter.Instance.Load(pq.ProcessID).Count > 0); Assert.AreEqual(process.RelativeParams.Count, WfProcessRelativeParamsAdapter.Instance.Load(pq.ProcessID).Count); WfProcessDimension pd = WfProcessDimensionAdapter.Instance.Load(pq.ProcessID); Assert.IsNotNull(pd); Console.WriteLine(pd.Data); }
public void ProcessSimpleSerializationTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); XElement processElem = XElement.Parse("<Process/>"); ((ISimpleXmlSerializer)process).ToXElement(processElem, string.Empty); Console.WriteLine(processElem.ToString()); }
public void BranchProcessUserTasksTest() { //启支流程及其子流程 IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); process.MoveTo(tp); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfBranchProcessGroup group = process.CurrentActivity.BranchProcessGroups[0]; AssertBranchProcessesInfo(group, tp.BranchTransferParams[0].Template.BranchProcessKey); UserTaskCollection currentActTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => { builder.LogicOperator = Data.Builder.LogicOperatorDefine.Or; foreach (IWfProcess subProcess in group.Branches) { builder.AppendItem("ACTIVITY_ID", subProcess.CurrentActivity.ID); } }); foreach (IWfProcess subProcess in group.Branches) { bool containsTask = false; group.Branches.ForEach(p => { containsTask = currentActTasks.Exists(u => u.ActivityID == p.CurrentActivity.ID); Assert.IsTrue(containsTask); }); } }