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 BasicEditActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); IWfActivity targetActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); WfActivityDescriptorCreateParams createParams = new WfActivityDescriptorCreateParams(); WfVariableDescriptor variable = new WfVariableDescriptor("CodeName", "HelloKitty"); createParams.Variables = new WfVariableDescriptor[] { variable }; WfEditActivityExecutor editExecutor = new WfEditActivityExecutor(process.CurrentActivity, targetActivity, createParams); editExecutor.Execute(); Assert.AreEqual("HelloKitty", process.Descriptor.Activities["NormalActivity"].Properties.GetValue("CodeName", string.Empty)); Assert.AreEqual("HelloKitty", process.MainStream.Activities["NormalActivity"].Properties.GetValue("CodeName", string.Empty)); }