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 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); }
private void ChangeProcessButton_Click(object sender, EventArgs e) { try { WfActivityDescriptorCreateParams createParams = null; WfMoveToControl.DoActionAfterRegisterContextConverter(() => createParams = JSONSerializerExecute.Deserialize <WfActivityDescriptorCreateParams>(_HiddenData.Value)); WfExecutorBase executor = null; IWfActivity targetActivity = FindCurrentActivity(createParams); IWfActivity changedActivity = targetActivity; switch (createParams.Operation.ToLower()) { case "add": executor = new WfAddActivityExecutor(CurrentActivity, targetActivity, createParams); break; case "update": executor = new WfEditActivityExecutor(CurrentActivity, targetActivity, createParams); break; case "delete": executor = new WfDeleteActivityExecutor(CurrentActivity, targetActivity); break; default: throw new SystemSupportException(string.Format("Invalid operation name: {0}", createParams.Operation)); } WfMoveToControl.Current.OnAfterCreateModifyProcessExecutor(executor); WfClientContext.Current.Execute(executor); WfMoveToControl.Current.OnProcessChanged(targetActivity.Process); RecreateProcesses(WfMoveToControl.Current.NextSteps, false, false); if (executor != null) { WfMoveToControl.Current.OnAfterProcessChanged(targetActivity.Process); } } catch (System.Exception ex) { RegisterPostBackException(ex); } }
public void AddActivityWithTwoOutTransitionsExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); int originalActCount = process.Activities.Count; IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); targetActivity.Descriptor.ToTransitions.FirstOrDefault().Properties.SetValue("Name", "同意"); //增加一条出线 IWfTransitionDescriptor tReturn = targetActivity.Descriptor.ToTransitions.AddBackwardTransition(process.InitialActivity.Descriptor); tReturn.Properties.SetValue("Name", "不同意"); WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); createParams.AllAgreeWhenConsign = false; createParams.Users = new OguDataCollection <IUser>(); createParams.Users.Add((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object); WfAddActivityExecutor executor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity addedActivity = process.Activities[executor.AddedActivity.ID]; targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); Assert.AreEqual(originalActCount + 1, process.Activities.Count); Assert.AreEqual(1, targetActivity.Descriptor.ToTransitions.Count); Assert.IsFalse(targetActivity.Descriptor.ToTransitions[0].IsBackward); Assert.AreEqual(2, addedActivity.Descriptor.ToTransitions.Count, "新加的活动应该也有两条出线"); Assert.AreEqual("同意", addedActivity.Descriptor.ToTransitions[0].Name); Assert.AreEqual("不同意", addedActivity.Descriptor.ToTransitions[1].Name); 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 AddActivityBeforeConditionActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcessDescriptorWithTransitionCondition(); IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); List <IWfTransitionDescriptor> originalTransitions = new List <IWfTransitionDescriptor>(); targetActivity.Descriptor.ToTransitions.CopyTo(originalTransitions); WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); WfAddActivityExecutor executor = new WfAddActivityExecutor(process.CurrentActivity, targetActivity, createParams); executor.Execute(); Console.WriteLine("Out transitions: {0}", originalTransitions.Count); Assert.AreEqual(originalTransitions.Count, executor.AddedActivity.Descriptor.ToTransitions.Count); Assert.AreEqual(1, targetActivity.Descriptor.ToTransitions.Count); }
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 static WfClientProcess DynamicProcessMoveto(WfClientDynamicProcessMovetoParameters parameters) { IWfProcess process = WfRuntime.GetProcessByActivityID(parameters.ActivityID); IWfActivity activity = process.CurrentActivity; if (parameters.MovetoActivityDescriptor != null) { WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); createParams = new WfActivityDescriptorCreateParams(); createParams.Users = new OguDataCollection <IUser>(); createParams.Name = parameters.MovetoActivityDescriptor.ActivityName; foreach (WfClientUserResourceDescriptorParameters userResource in parameters.MovetoActivityDescriptor.UserResourceList) { createParams.Users.Add(userResource.User); } WfAddActivityExecutor executor = new WfAddActivityExecutor(activity, activity, createParams); executor.Execute(); } //工作流流向下一个节点 WfClientMovetoParameters movetoParameters = new WfClientMovetoParameters() { ProcessID = process.ID, ActivityID = activity.ID, ResourceID = process.ResourceID, Comment = parameters.Comment }; WfClientProcess clientProcess = WfClientProxy.Moveto(movetoParameters); return(clientProcess); }