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 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 CancelSerialSubProcessTest() { IWfProcess process = GetProcessInstanceWithBranchProcessRunning(WfBranchProcessExecuteSequence.Serial, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); IWfProcess branchProcess = process.CurrentActivity.BranchProcessGroups[0].Branches[0]; CheckOperationAndStatusBeforeCancelProcess(branchProcess); CancelProcess(branchProcess, false); process = WfRuntime.GetProcessByProcessID(process.ID); //检查第二个流程是否启动 branchProcess = process.CurrentActivity.BranchProcessGroups[0].Branches[1]; Assert.AreEqual(WfProcessStatus.Running, branchProcess.Status); ProcessTestHelper.CompleteActivityBranchProcessesByBlockingType(process.CurrentActivity, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); WfRuntime.PersistWorkflows(); ProcessTestHelper.ProcessPendingActivity(process.CurrentActivity.ID); process = WfRuntime.GetProcessByProcessID(process.ID); branchProcess = process.CurrentActivity.BranchProcessGroups[0].Branches[1]; Assert.AreEqual(WfProcessStatus.Completed, branchProcess.Status, "第二个子流程的状态"); }
protected void btnSave_Click(object sender, EventArgs e) { try { if (CurrentProcess != null) { this.propertyGrid.Properties.FillDictionary(CurrentProcess.ApplicationRuntimeParameters); WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(CurrentProcess); WfRuntime.PersistWorkflows(); PropertyValueCollection properties = ObjectToPropertiesHelper.ToProperties <string, object>(CurrentProcess.ApplicationRuntimeParameters); responseData.Value = JSONSerializerExecute.Serialize(properties); Page.ClientScript.RegisterStartupScript(this.GetType(), "notifyTop", "notifyTopWindowDataChange();", true); } } catch (System.Exception ex) { responseData.Value = string.Empty; Page.ClientScript.RegisterStartupScript(this.GetType(), "notifyTop", "notifyTopWindowDataChange();", true); WebUtility.RegisterClientErrorMessage(ex); } }
public void PersistQueueBasicTest() { IWfProcess process = ProcessHelper.CreateSimpleProcessDescriptor().StartupProcess(); ProcessHelper.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 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 FetchPersistQueueTest() { WfPersistQueueAdapter.Instance.ClearQueue(); WfPersistQueueAdapter.Instance.ClearArchivedQueue(); IWfProcess process = ProcessHelper.CreateSimpleProcessDescriptor().StartupProcess(); ProcessHelper.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 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 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 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 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 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 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); } }
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 PersistProcessWithTenantCode() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessWithAssignee(); TenantContext.Current.TenantCode = "1001"; ProcessTestHelper.OutputExecutionTime(() => WfRuntime.PersistWorkflows(), "保存简单的带TenantCode的流程"); }
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 WaitAllCompleteOfSerialBranchProcessTest() { IWfProcess wfProcess = GetProcessInstanceWithBranchProcessRunning(WfBranchProcessExecuteSequence.Serial, WfBranchProcessBlockingType.WaitAllBranchProcessesComplete); AssertProcessStatus(wfProcess); CheckProcessRelationOperationAndStatus(wfProcess, false); //第一个子流程办结 wfProcess.Activities[1].BranchProcessGroups[0].Branches[0].CompleteProcess(true); WfRuntime.PersistWorkflows(); wfProcess = WfRuntime.GetProcessByProcessID(wfProcess.ID); Assert.AreEqual(WfProcessStatus.Completed, wfProcess.CurrentActivity.BranchProcessGroups[0].Branches[0].Status); Assert.AreEqual(WfProcessStatus.Running, wfProcess.CurrentActivity.BranchProcessGroups[0].Branches[1].Status); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(wfProcess.CurrentActivity.BranchProcessGroups[0].Branches[1].InitialActivity.ID, TaskStatus.Ban)); //第二个子流程办结 wfProcess.CurrentActivity.BranchProcessGroups[0].Branches[1].CompleteProcess(true); WfRuntime.PersistWorkflows(); ProcessTestHelper.ProcessPendingActivity(wfProcess.CurrentActivity.ID); IWfProcess wfProc = WfRuntime.GetProcessByProcessID(wfProcess.ID); Assert.AreEqual(WfProcessStatus.Completed, wfProc.CurrentActivity.BranchProcessGroups[0].Branches[0].Status); Assert.AreEqual(WfProcessStatus.Completed, wfProc.CurrentActivity.BranchProcessGroups[0].Branches[1].Status); Assert.AreEqual(WfActivityStatus.Running, wfProc.CurrentActivity.Status); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(wfProc.CurrentActivity.ID, TaskStatus.Ban)); }
public void CancelProcessInInitialActivityTest() { IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); WfRuntime.PersistWorkflows(); CancelProcess(process, false); }
public static void MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject oguObject, IWfProcess process) { IWfActivityDescriptor nextActivityDesp = process.CurrentActivity.Descriptor.ToTransitions.FindDefaultSelectTransition().ToActivity; WfTransferParams transferParams = ProcessTestHelper.GetInstanceOfWfTransferParams(nextActivityDesp, oguObject); process.MoveTo(transferParams); WfRuntime.PersistWorkflows(); }
public void ChangeProcessPendingActivity(string processID) { DoProcessCallbackAction(processID, currentProcess => { currentProcess.ProcessPendingActivity(); WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(this.CurrentProcess); WfRuntime.PersistWorkflows(); }); }
public int DisplaceUserInProcess(string processID, string userID, string[] displacingUserIDArray) { IUser originalUser = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, userID).FirstOrDefault(); OguObjectCollection <IUser> displacingUsers = OguMechanismFactory.GetMechanism().GetObjects <IUser>(SearchOUIDType.Guid, displacingUserIDArray); List <IUser> distinctUsers = new List <IUser>(); foreach (IUser user in displacingUsers) { if (distinctUsers.Exists(u => u.ID == user.ID) == false) { distinctUsers.Add(user); } } IWfProcess process = WfRuntime.GetProcessByProcessID(processID); int result = 0; foreach (IWfActivity activity in process.Activities) { bool needReplace = false; if (activity.Status != WfActivityStatus.Completed && activity.Status != WfActivityStatus.Aborted) { if (activity.Status == WfActivityStatus.Running || activity.Status == WfActivityStatus.Pending) { needReplace = activity.Assignees.Contains(originalUser.ID); } else { needReplace = activity.Candidates.Contains(originalUser.ID); } if (needReplace) { WfReplaceAssigneesExecutor executor = new WfReplaceAssigneesExecutor(null, activity, originalUser, distinctUsers); executor.ExecuteNotPersist(); result++; } } } using (TransactionScope scope = TransactionScopeFactory.Create()) { WfReplaceAssigneesExecutor.DoUserTaskOperations(); WfRuntime.PersistWorkflows(); scope.Complete(); } return(result); }
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 WithdrawProcessAndCancelBranchProcessRunning() { IWfProcess process = GetProcessInstance(false); string fromActivityId = process.CurrentActivity.ID; process.Withdraw(process.Activities[0], true); WfRuntime.PersistWorkflows(); CheckOperationAndStatusAfterWithdrawProcess(process.ID, fromActivityId, process.Activities[0].ID); }
public void WithdrawProcessWithBranchProcess() { IWfProcess process = GetProcessInstance(true); string fromActivityID = process.CurrentActivity.ID; process.Withdraw(process.Activities[0], false); WfRuntime.PersistWorkflows(); //撤销两步后查阅状态 CheckOperationAndStatusAfterWithdrawProcess(process.ID, fromActivityID, process.Activities[0].ID); }
private IWfProcess CancelProcess(IWfProcess process, bool cancelAllBranchProcess) { process = WfRuntime.GetProcessByProcessID(process.ID); CheckOperationAndStatusBeforeCancelProcess(process); process.CancelProcess(cancelAllBranchProcess); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); CheckOperationAndStatusAfterCancelProcess(process); return(process); }
public void GenerateCurrentProcessCandidates(string processID) { DoProcessCallbackAction(processID, currentProcess => { (currentProcess.Status != WfProcessStatus.Aborted && currentProcess.Status != WfProcessStatus.Completed). FalseThrow(Translator.Translate(Define.DefaultCulture, "流程已经作废或者完成,无法重新计算")); currentProcess.GenerateCandidatesFromResources(); WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(currentProcess); WfRuntime.PersistWorkflows(); }); }
private static IWfProcess PrepareProcess() { WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] }; IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray()); WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp); IWfProcess process = WfRuntime.StartWorkflow(startupParams); WfRuntime.PersistWorkflows(); return(process); }
public void WithdrawProcessAndCancelBranchProcessCompleted() { IWfProcess process = GetProcessInstance(true); string fromActivityId = process.CurrentActivity.ID; process.Withdraw(process.Activities[0], true); WfRuntime.PersistWorkflows(); CheckOperationAndStatusAfterWithdrawProcess(process.ID, fromActivityId, process.Activities[0].ID); process = WfRuntime.GetProcessByProcessID(process.ID); CheckOperationAndStatusAfterCancelProcess(process.Activities[1].BranchProcessGroups[0].Branches[0]); CheckOperationAndStatusAfterCancelProcess(process.Activities[1].BranchProcessGroups[0].Branches[1]); }
public void ProcessPersistExecutionTimeTest() { IWfProcessDescriptor processDesc = WfProcessTestCommon.CreateSimpleProcessDescriptor(); int totalProcesses = 40; //准备流程实例 List <IWfProcess> processes = ProcessTestHelper.StartupMultiProcesses(processDesc, totalProcesses); ProcessTestHelper.OutputExecutionTime(() => { WfRuntime.PersistWorkflows(); }, string.Format("保存{0}个流程", totalProcesses)); }
public void WfActivityAssigneesResourceTest() { IWfProcess process = GetProcessInstanceWithAssigneesResource(); Assert.AreEqual(process.CurrentActivity.Assignees[0].User.ID, process.CurrentActivity.Descriptor.Resources.ToUsers()[0].ID); IWfActivityDescriptor actDesp = process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity; WfTransferParams par = new WfTransferParams(actDesp); par.Assignees.Add(actDesp.FromTransitions[0].FromActivity.Resources.ToUsers()[0]); process.MoveTo(par); WfRuntime.PersistWorkflows(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(ProcessTestHelper.ExistsActivityUserTasks(process.CurrentActivity.ID, TaskStatus.Ban)); }