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 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); }
private void Run() { PendingActServiceConfigurationElement pendingActServiceParam = PendingActServiceSettings.GetConfig().PendingActServices[this.Params.Name]; pendingActServiceParam.NullCheck(string.Format("pendingActServiceConfig配置节错误,没有找到线程{0}对应的节点.", this.Params.Name)); WfPendingActivityInfoCollection pendingActs = LoadPendingActs(pendingActServiceParam.ApplicationName, pendingActServiceParam.ProgramName); if (pendingActs.Count > 0) { Thread.CurrentPrincipal = new DeluxePrincipal(new DeluxeIdentity(pendingActServiceParam.Operator)); //WfActivity中CanMoveTo没有判断StartTime。我希望在workflowSettings加开关,是否使用它。 foreach (var pendingAct in pendingActs) { try { WfRuntime.ProcessPendingActivity(pendingAct); } catch (System.Exception ex) { this.Params.Log.Write(ex); } finally { WfRuntime.ClearCache(); } } } }
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 static IWfProcess LoadProcessDescriptor(string processid) { WfRuntime.ClearCache(); IWfProcess process = WfRuntime.GetProcessByProcessID(processid); //string xml = File.ReadAllText(@"C:\Documents and Settings\issuser\Desktop\111.txt"); //Type descType = process.Descriptor.GetType(); //PropertyInfo graphProp = descType.GetProperty("GraphDescription"); //graphProp.SetValue(process.Descriptor, xml, null); //WorkflowSettings.GetConfig().GetPersistManager().SaveProcess(process); //WfRuntime.PersistWorkflows(); return(process); }
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 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 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 BasicDeleteActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); int originalActCount = process.Activities.Count; IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); WfAddActivityExecutor addExecutor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams); addExecutor.Execute(); IWfActivityDescriptor newActDesp = targetActivity.Descriptor.ToTransitions.FirstOrDefault().ToActivity; WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); targetActivity = process.Activities.FindActivityByDescriptorKey(newActDesp.Key); WfDeleteActivityExecutor deleteExecutor = new WfDeleteActivityExecutor(process.CurrentActivity, targetActivity); deleteExecutor.Execute(); 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); Assert.IsNull(process.Activities.FindActivityByDescriptorKey(targetActivity.Descriptor.Key)); Assert.IsNull(process.MainStream.Activities[targetActivity.MainStreamActivityKey]); }
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); }