public override IWfProcessDescriptor Build(string processKey, string processName) { processKey.CheckStringIsNullOrEmpty("processKey"); processName.CheckStringIsNullOrEmpty("processName"); IWfProcessDescriptor processDesp = base.Build(processKey, processName); IWfActivityDescriptor currentActDesp = processDesp.InitialActivity; for (int i = 0; i < _StepUsers.Length; i++) { WfActivityDescriptor actDesp = new WfActivityDescriptor(processDesp.FindNotUsedActivityKey(), WfActivityType.NormalActivity); actDesp.ActivityType = WfActivityType.NormalActivity; actDesp.Name = _StepUsers[i].DisplayName; actDesp.Resources.Add(new WfUserResourceDescriptor(_StepUsers[i])); processDesp.Activities.Add(actDesp); WfTransitionDescriptor transitionDesp = (WfTransitionDescriptor)currentActDesp.ToTransitions.AddForwardTransition(actDesp); transitionDesp.Name = "审核"; currentActDesp = actDesp; } currentActDesp.ToTransitions.AddForwardTransition(processDesp.CompletedActivity); return(processDesp); }
public override void ClientToServer(WfClientProcessDescriptor client, ref WfProcessDescriptor server) { client.NullCheck("client"); if (server == null) { server = new WfProcessDescriptor(client.Key); } base.ClientToServer(client, ref server); WfClientRelativeLinkDescriptorCollectionConverter.Instance.ClientToServer(client.RelativeLinks, server.RelativeLinks); WfClientVariableDescriptorCollectionConverter.Instance.ClientToServer(client.Variables, server.Variables); WfClientResourceDescriptorCollectionConverter.Instance.ClientToServer(client.CancelEventReceivers, server.CancelEventReceivers); foreach (WfClientActivityDescriptor cad in client.Activities) { WfActivityDescriptor actDesp = null; WfClientActivityDescriptorConverter.Instance.ClientToServer(cad, ref actDesp); server.Activities.Add(actDesp); } TransitionsClientToServer(client, server); }
/// <summary> /// 构造流程的起始点和终止点,并且连线 /// </summary> /// <param name="processKey"></param> /// <param name="processName"></param> /// <returns></returns> public override IWfProcessDescriptor Build(string processKey, string processName) { IWfProcessDescriptor processDesp = base.Build(processKey, processName); WfActivityDescriptor actDesp = processDesp.InitialActivity as WfActivityDescriptor; actDesp.Name = "传阅"; processDesp.Properties.SetValue("UseMatrix", false); processDesp.Properties.SetValue("Independent", false); WfForwardTransitionDescriptor transition = (WfForwardTransitionDescriptor)processDesp.InitialActivity.ToTransitions.AddForwardTransition(processDesp.CompletedActivity); transition.Name = "已阅"; //设置一些传阅活动的属性设置 PropertyDefineCollection definedProperties = GetDefinedProperties(); processDesp.InitialActivity.Properties.MergeDefinedProperties(definedProperties, true); processDesp.InitialActivity.Properties.ForEach(p => { if (p.StringValue == null) { p.StringValue = p.Definition.DefaultValue; } }); return(processDesp); }
private static WfActivityDescriptor PrepareServerActivity(string key) { WfActivityDescriptor actDesp = new WfActivityDescriptor(key, WfActivityType.InitialActivity); actDesp.Key = key; actDesp.Name = key; actDesp.Condition.Expression = "Amount > 1000"; actDesp.Variables.SetValue("ActKey", key); actDesp.Variables.SetValue("ActName", key); actDesp.Resources.Add(new WfUserResourceDescriptor((IUser)OguUser.CreateWrapperObject(ActivityConverterTest.UserID, SchemaType.Users))); actDesp.Resources.Add(new WfDepartmentResourceDescriptor((IOrganization)OguOrganization.CreateWrapperObject(ActivityConverterTest.OrganizationID, SchemaType.Organizations))); actDesp.Resources.Add(new WfGroupResourceDescriptor((IGroup)OguGroup.CreateWrapperObject(ActivityConverterTest.GroupID, SchemaType.Groups))); actDesp.Resources.Add(new WfRoleResourceDescriptor(new SOARole(ActivityConverterTest.RoleFullCodeName))); actDesp.Resources.Add(new WfActivityOperatorResourceDescriptor() { ActivityKey = ActivityConverterTest.ResActivityKey }); actDesp.Resources.Add(new WfActivityAssigneesResourceDescriptor() { ActivityKey = ActivityConverterTest.ResActivityKey }); actDesp.Resources.Add(new WfDynamicResourceDescriptor("ConditionResource", "Amount > 1000")); actDesp.BranchProcessTemplates.Add(BranchProcessTemplateConverterTest.PrepareServerBranchProcessTemplate()); return(actDesp); }
public override IWfProcessDescriptor Build(string processKey, string processName) { processKey.CheckStringIsNullOrEmpty("processKey"); processName.CheckStringIsNullOrEmpty("processName"); IWfProcessDescriptor processDesp = base.Build(processKey, processName); IWfActivityDescriptor currentActDesp = processDesp.InitialActivity; for (int i = 0; i < _StepUsers.Length; i++) { WfActivityDescriptor actDesp = new WfActivityDescriptor(processDesp.FindNotUsedActivityKey(), WfActivityType.NormalActivity); actDesp.ActivityType = WfActivityType.NormalActivity; actDesp.Name = _StepUsers[i].DisplayName; actDesp.Resources.Add(new WfUserResourceDescriptor(_StepUsers[i])); processDesp.Activities.Add(actDesp); WfTransitionDescriptor transitionDesp = (WfTransitionDescriptor)currentActDesp.ToTransitions.AddForwardTransition(actDesp); transitionDesp.Name = "审核"; currentActDesp = actDesp; } currentActDesp.ToTransitions.AddForwardTransition(processDesp.CompletedActivity); return processDesp; }
public void BasicAdminAddActivityWithFromActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); const string targetName = "修改后的名称"; IWfActivity fromActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); IWfActivityDescriptor targetDesp = new WfActivityDescriptor(process.Descriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity); targetDesp.Properties.SetValue("Name", targetName); process.Descriptor.Activities.Add(targetDesp); WfActivityBase.CreateActivityInstance(targetDesp, process); WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor(process.CurrentActivity, process, fromActivity.Descriptor, targetDesp, false); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); targetDesp = process.Descriptor.Activities[targetDesp.Key]; Assert.IsNotNull(targetDesp); Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty)); fromActivity = process.Activities.FindActivityByDescriptorKey("NormalActivity"); Assert.IsNotNull(fromActivity.Descriptor.ToTransitions.GetTransitionByToActivity(targetDesp)); }
public void BasicAdminAddActivityWithMainStreamExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); const string targetName = "修改后的名称"; IWfActivityDescriptor targetDesp = new WfActivityDescriptor(process.Descriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity); targetDesp.Properties.SetValue("Name", targetName); process.Descriptor.Activities.Add(targetDesp); WfActivityBase.CreateActivityInstance(targetDesp, process); WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor(process.CurrentActivity, process, null, targetDesp, true); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); targetDesp = process.Descriptor.Activities[targetDesp.Key]; Assert.IsNotNull(targetDesp); Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty)); IWfActivityDescriptor msActDesp = targetDesp.Instance.GetMainStreamActivityDescriptor(); Assert.IsNotNull(msActDesp); Assert.AreEqual(process.MainStream, msActDesp.Process); Assert.AreEqual(targetName, msActDesp.Properties.GetValue("Name", string.Empty)); }
/// <summary> /// 创建一个有多个节点的流程 /// </summary> /// <returns></returns> public static IWfProcessDescriptor CreateProcessDescriptor() { WfProcessDescriptor processDesp = new WfProcessDescriptor(); processDesp.Key = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8); processDesp.Name = "测试流程"; processDesp.ApplicationName = "TEST_APP_NAME"; processDesp.ProgramName = "TEST_PROGRAM_NAME"; processDesp.Url = "/MCS_Framework/WebTestProject/defaultHandler.aspx"; WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity); initAct.Name = "Initial"; initAct.CodeName = "Initial Activity"; processDesp.Activities.Add(initAct); WfActivityDescriptor normalAct = new WfActivityDescriptor("NormalActivity", WfActivityType.NormalActivity); normalAct.Name = "Normal"; normalAct.CodeName = "Normal Activity"; processDesp.Activities.Add(normalAct); WfActivityDescriptor normalAct1 = new WfActivityDescriptor("NormalActivity1", WfActivityType.NormalActivity); normalAct1.Name = "Normal"; normalAct1.CodeName = "Normal Activity1"; processDesp.Activities.Add(normalAct1); WfActivityDescriptor normalAct2 = new WfActivityDescriptor("NormalActivity2", WfActivityType.NormalActivity); normalAct2.Name = "Normal"; normalAct2.CodeName = "Normal Activity2"; processDesp.Activities.Add(normalAct2); WfActivityDescriptor normalAct3 = new WfActivityDescriptor("NormalActivity3", WfActivityType.NormalActivity); normalAct3.Name = "Normal"; normalAct3.CodeName = "Normal Activity3"; processDesp.Activities.Add(normalAct3); WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity); completedAct.Name = "Completed"; completedAct.CodeName = "Completed Activity"; processDesp.Activities.Add(completedAct); initAct.ToTransitions.AddForwardTransition(normalAct); normalAct.ToTransitions.AddForwardTransition(normalAct1); normalAct1.ToTransitions.AddForwardTransition(normalAct2); normalAct2.ToTransitions.AddForwardTransition(normalAct3); normalAct3.ToTransitions.AddForwardTransition(completedAct); return(processDesp); }
/// <summary> /// 创建一个只有开始和结束点的流程描述 /// </summary> /// <returns></returns> public static IWfProcessDescriptor CreateInitAndCompletedProcessDescriptor() { WfProcessDescriptor processDesp = new WfProcessDescriptor(); processDesp.Key = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8); processDesp.Name = "测试流程"; processDesp.ApplicationName = "TEST_APP_NAME"; processDesp.ProgramName = "TEST_PROGRAM_NAME"; processDesp.Url = "/MCS_Framework/WebTestProject/defaultHandler.aspx"; WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity); initAct.Name = "Initial"; initAct.CodeName = "Initial Activity"; processDesp.Activities.Add(initAct); WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity); completedAct.Name = "Completed"; completedAct.CodeName = "Completed Activity"; completedAct.RelativeLinks.Add(new WfRelativeLinkDescriptor("TestLink") { Name = "测试链接", Url = "/MCSWebApp/Sample.htm" }); processDesp.Activities.Add(completedAct); initAct.ToTransitions.AddForwardTransition(completedAct); return(processDesp); }
private static void DoInsert(HttpContext context) { string id = context.Request["id"]; string category = context.Request["category"]; string content = context.Request["content"]; if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(content)) { return; } WfConverterHelper.RegisterConverters(); WfActivityDescriptor activityDesc = JSONSerializerExecute.Deserialize <WfActivityDescriptor>(content); activityDesc.Key = id; activityDesc.FromTransitions.Clear(); activityDesc.ToTransitions.Clear(); WfActivityTemplate template = new WfActivityTemplate() { ID = id, Name = activityDesc.Name, Category = activityDesc.ActivityType.ToString(), CreateTime = DateTime.Now, Content = JSONSerializerExecute.Serialize(activityDesc), Available = true, CreatorID = DeluxeIdentity.CurrentUser.ID, CreatorName = DeluxeIdentity.CurrentUser.Name }; WfActivityTemplateAdpter.Instance.Update(template); OutputResult(context, true, activityDesc.Key); }
private void descriptorEditor_SaveButtonClicked(object sender, EventArgs e) { if (this.descriptorEditor.CurrentProcess != null) { WfActivityDescriptor activityTemplate = new WfActivityDescriptor( this.descriptorEditor.CurrentProcessDescriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity); activityTemplate.Properties.ReplaceExistedPropertyValues(this.propertyGrid.Properties); this.descriptorEditor.CurrentProcessDescriptor.Activities.Add(activityTemplate); if (this.descriptorEditor.CurrentProcessDescriptor.IsMainStream == false) { WfActivityBase.CreateActivityInstance(activityTemplate, this.descriptorEditor.CurrentProcess); } WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor( this.descriptorEditor.CurrentProcess.CurrentActivity, this.descriptorEditor.CurrentProcess, this.FromActivity, activityTemplate, this.syncMSObj.Checked); executor.Execute(); } }
public void WfActivitySerilizeConverterTest() { WfConverterHelper.RegisterConverters(); WfActivityDescriptor normalAct = new WfActivityDescriptor("NormalActivity", WfActivityType.NormalActivity); normalAct.Name = "Normal"; normalAct.CodeName = "Normal Activity"; WfServiceOperationDefinition enterSvcDef = new WfServiceInvokerFactory().SvcOpDef; enterSvcDef.AddressDef.RequestMethod = WfServiceRequestMethod.Get; enterSvcDef.OperationName = "StringTypeService"; enterSvcDef.RtnXmlStoreParamName = "EnterServiceRtnXml"; enterSvcDef.Params.Add(new WfServiceOperationParameter() { Name = "input", Type = WfSvcOperationParameterType.String, Value = "this is a get action!" }); normalAct.EnterEventExecuteServices.Add(enterSvcDef); string result = JSONSerializerExecute.Serialize(normalAct); Console.WriteLine(result); WfActivityDescriptor deserializedActDesp = JSONSerializerExecute.Deserialize <WfActivityDescriptor>(result); string reSerialized = JSONSerializerExecute.Serialize(deserializedActDesp); Assert.AreEqual(result, reSerialized); }
/// <summary> /// 准备同意/不同意的退回流程。在B环节有两根出线BC和BA,BA是退回线,退回到A。其中BA默认是没有选择的 /// </summary> /// <returns></returns> public static IWfProcessDescriptor PrepareAgreeReturnProcessDesp() { WfProcessDescriptor processDesp = new WfProcessDescriptor(); processDesp.Key = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8); processDesp.Name = "专用退回流程"; processDesp.ApplicationName = "TEST_APP_NAME"; processDesp.ProgramName = "TEST_PROGRAM_NAME"; processDesp.Url = "/MCS_Framework/WebTestProject/defaultHandler.aspx"; WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity); initActivity.Name = "A"; initActivity.CodeName = "A"; processDesp.Activities.Add(initActivity); IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B"); processDesp.Activities.Add(activityB); IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C"); processDesp.Activities.Add(activityC); IWfActivityDescriptor activityD = CreateNormalDescriptor("D", "D"); processDesp.Activities.Add(activityD); WfActivityDescriptor completedActivity = new WfActivityDescriptor("F", WfActivityType.CompletedActivity); completedActivity.Name = "F"; completedActivity.CodeName = "F"; processDesp.Activities.Add(completedActivity); //A->B initActivity.ToTransitions.AddForwardTransition(activityB); //B有两根出线,分别是C和A,A是退回线 WfTransitionDescriptor transitionBC = (WfTransitionDescriptor)activityB.ToTransitions.AddForwardTransition(activityC); transitionBC.Enabled = true; transitionBC.DefaultSelect = true; WfTransitionDescriptor transitionBA = (WfTransitionDescriptor)activityB.ToTransitions.AddBackwardTransition(initActivity); //transitionBA.Enabled = false; transitionBA.Enabled = true; transitionBC.DefaultSelect = false; transitionBA.IsBackward = true; //C->D activityC.ToTransitions.AddForwardTransition(activityD); //D到结束点 activityD.ToTransitions.AddForwardTransition(completedActivity); return(processDesp); }
private static IWfActivityDescriptor CreateNormalDescriptor(string key, string name) { WfActivityDescriptor activityDesp = new WfActivityDescriptor(key, WfActivityType.NormalActivity); activityDesp.Name = name; activityDesp.CodeName = key; return(activityDesp); }
/// <summary> /// 生成用于复制退件活动的测试流程 /// A为起点、两条分支,A、B、C、D和A、E、D,D为终点 /// </summary> /// <returns></returns> public static IWfProcessDescriptor PrepareCopyTestProcessDesp() { WfProcessDescriptor processDesp = new WfProcessDescriptor(); processDesp.Key = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8); processDesp.Name = "专用退回流程"; processDesp.ApplicationName = "TEST_APP_NAME"; processDesp.ProgramName = "TEST_PROGRAM_NAME"; processDesp.Url = "/MCS_Framework/WebTestProject/defaultHandler.aspx"; WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity); initActivity.Name = "A"; initActivity.CodeName = "A"; processDesp.Activities.Add(initActivity); IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B"); processDesp.Activities.Add(activityB); IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C"); processDesp.Activities.Add(activityC); IWfActivityDescriptor activityE = CreateNormalDescriptor("E", "E"); processDesp.Activities.Add(activityE); WfActivityDescriptor completedActivity = new WfActivityDescriptor("D", WfActivityType.CompletedActivity); completedActivity.Name = "D"; completedActivity.CodeName = "D"; processDesp.Activities.Add(completedActivity); //A到B WfTransitionDescriptor transitionAB = (WfTransitionDescriptor)initActivity.ToTransitions.AddForwardTransition(activityB); transitionAB.Enabled = true; //A到E WfTransitionDescriptor transitionAE = (WfTransitionDescriptor)initActivity.ToTransitions.AddBackwardTransition(activityE); transitionAE.Enabled = false; //B到C activityB.ToTransitions.AddForwardTransition(activityC); //E到C activityE.ToTransitions.AddForwardTransition(activityC); //C到结束点 activityC.ToTransitions.AddForwardTransition(completedActivity); return(processDesp); }
public static IWfActivityDescriptor CreateNormalActivity(string key) { WfActivityDescriptor normalAct = new WfActivityDescriptor(key, WfActivityType.NormalActivity); normalAct.Name = key; normalAct.CodeName = key; return(normalAct); }
public static WfActivityDescriptor CreateSimpleServerActivity(string key, string name, WfActivityType actType) { WfActivityDescriptor actDesp = new WfActivityDescriptor(key, actType); actDesp.Name = name; actDesp.RelativeLinks.Add(new WfRelativeLinkDescriptor("AR1") { Category = "Activity", Url = "http://www.ak47.com" }); return(actDesp); }
private static WfActivityDescriptor AddActivity(IWfProcess process) { string activityKey = process.Descriptor.FindNotUsedActivityKey(); WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); WfRuntime.ProcessContext.ActivityChangingContext.CreatorInstanceID = process.CurrentActivity.ID; WfRuntime.ProcessContext.ActivityChangingContext.AssociatedActivityKey = process.CurrentActivity.Descriptor.AssociatedActivityKey.IsNotEmpty() ? process.CurrentActivity.Descriptor.AssociatedActivityKey : process.CurrentActivity.Descriptor.Key; process.CurrentActivity.Append(actDesp); return(actDesp); }
public void StandardServerActivitiesToClient() { WfActivityDescriptor serverActDesp = PrepareServerActivity("N1"); serverActDesp.Output(); WfClientActivityDescriptor clientActDesp = null; WfClientActivityDescriptorConverter.Instance.ServerToClient(serverActDesp, ref clientActDesp); clientActDesp.Output(); clientActDesp.Variables.Output(); clientActDesp.AssertActivityDescriptor(serverActDesp); }
/// <summary> /// 准备一条简单的直线流程,主要用于两次退回等场景 /// 流程为A->B->C->D /// </summary> /// <returns></returns> public static IWfProcessDescriptor PrepareStraightProcessDesp() { WfProcessDescriptor processDesp = new WfProcessDescriptor(); processDesp.Key = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8); processDesp.Name = "简单直线流程"; processDesp.ApplicationName = "TEST_APP_NAME"; processDesp.ProgramName = "TEST_PROGRAM_NAME"; processDesp.Url = "/MCS_Framework/WebTestProject/defaultHandler.aspx"; WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity); initActivity.Name = "A"; initActivity.CodeName = "A"; initActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object)); processDesp.Activities.Add(initActivity); IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B"); processDesp.Activities.Add(activityB); activityB.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object)); IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C"); processDesp.Activities.Add(activityC); WfActivityDescriptor completedActivity = new WfActivityDescriptor("D", WfActivityType.CompletedActivity); completedActivity.Name = "D"; completedActivity.CodeName = "D"; processDesp.Activities.Add(completedActivity); //A到B WfTransitionDescriptor transitionAB = (WfTransitionDescriptor)initActivity.ToTransitions.AddForwardTransition(activityB); transitionAB.Enabled = true; //B到C activityB.ToTransitions.AddForwardTransition(activityC); //C到结束点 activityC.ToTransitions.AddForwardTransition(completedActivity); return(processDesp); }
public void FindElapsedTransitionTest() { //流程运行时 IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee(); //新增加活动描述,没有为此添加实例 string activityKey = process.Descriptor.FindNotUsedActivityKey(); WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); process.CurrentActivity.Descriptor.Append(actDesp); //使用GetMainStreamActivities方法时,会出错,因为只添加了描述,没添加实例。这里需要正常抛出异常 WfMainStreamActivityDescriptorCollection coll = process.Descriptor.GetMainStreamActivities(); Assert.IsNotNull(coll); }
public void BasicMainStreamActivities() { //主流程描述点 IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor(); WfMainStreamActivityDescriptorCollection coll = desp.GetMainStreamActivities(); Assert.AreEqual(desp.Activities.Count, coll.Count); //添加动态点 string activityKey = desp.FindNotUsedActivityKey(); WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); desp.InitialActivity.Append(actDesp); coll = desp.GetMainStreamActivities(); Assert.AreEqual(desp.Activities.Count, coll.Count, "流程描述时,添加节点描述也为主线流程中的活动"); }
/// <summary> /// 在某个活动下 的同级添加一组活动 /// </summary> /// <param name="desp"></param> /// <param name="n">添加的个数</param> private static void AddActivitiesDespToSameActivityDesp(IWfActivityDescriptor actDesp, int n) { IWfActivityDescriptor toActDesp = actDesp.ToTransitions[0].ToActivity; actDesp.ToTransitions.Clear(); for (int i = 7; i < 7 + n; i++) { WfActivityDescriptor normalAct = new WfActivityDescriptor("NormalActivity" + i, WfActivityType.NormalActivity); normalAct.Name = "Normal" + i; normalAct.CodeName = "Normal Activity" + i; actDesp.Process.Activities.Add(normalAct); actDesp.ToTransitions.AddForwardTransition(normalAct); normalAct.ToTransitions.AddForwardTransition(toActDesp); } }
private static void CreateInitAndCompletedActivities(WfProcessDescriptor processDesp) { WfActivityDescriptor initAct = new WfActivityDescriptor("Initial", WfActivityType.InitialActivity); initAct.Name = "开始"; initAct.CodeName = "Initial Activity"; processDesp.Activities.Add(initAct); WfActivityDescriptor completedAct = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity); completedAct.Name = "结束"; completedAct.CodeName = "Completed Activity"; processDesp.Activities.Add(completedAct); initAct.ToTransitions.AddForwardTransition(completedAct); }
private void descriptorEditor_PreRenderControl(object sender, EventArgs e) { if (this.descriptorEditor.CurrentProcess != null) { WfActivityDescriptor activityTemplate = new WfActivityDescriptor( this.descriptorEditor.CurrentProcessDescriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity); this.ClientScript.RegisterHiddenField("template", JSONSerializerExecute.Serialize(activityTemplate)); this.descriptorEditor.RegisterAfterProcessDeserializedFunction( "WFWeb.BindPropertyGrid(process.Key, Sys.Serialization.JavaScriptSerializer.deserialize($get(\"template\").value));"); } if (this.descriptorEditor.ShowMainStream) { this.syncMSObj.Disabled = true; } }
/// <summary> /// 准备加签退件流程 /// </summary> /// <returns></returns> public static IWfProcessDescriptor PrepareAddApproverReturnProcessDesp() { WfProcessDescriptor processDesp = new WfProcessDescriptor(); processDesp.Key = "TestProcess" + UuidHelper.NewUuidString().Substring(0, 8); processDesp.Name = "加签退回流程"; processDesp.ApplicationName = "TEST_APP_NAME"; processDesp.ProgramName = "TEST_PROGRAM_NAME"; processDesp.Url = "/MCS_Framework/WebTestProject/defaultHandler.aspx"; WfActivityDescriptor initActivity = new WfActivityDescriptor("A", WfActivityType.InitialActivity); initActivity.Name = "A"; initActivity.CodeName = "A"; processDesp.Activities.Add(initActivity); IWfActivityDescriptor activityB = CreateNormalDescriptor("B", "B"); processDesp.Activities.Add(activityB); IWfActivityDescriptor activityC = CreateNormalDescriptor("C", "C"); processDesp.Activities.Add(activityC); WfActivityDescriptor completedActivity = new WfActivityDescriptor("D", WfActivityType.CompletedActivity); completedActivity.Name = "D"; completedActivity.CodeName = "D"; processDesp.Activities.Add(completedActivity); //A到B initActivity.ToTransitions.AddForwardTransition(activityB); //B到C activityB.ToTransitions.AddForwardTransition(activityC); //C到结束点 activityC.ToTransitions.AddForwardTransition(completedActivity); return(processDesp); }
/// <summary> /// 准备管理单元相关的模板 /// </summary> /// <returns></returns> private IWfActivityDescriptor PrepareAURelativeActivityDescriptor(string key) { WfActivityDescriptor templateActDesp = new WfActivityDescriptor(key, WfActivityType.NormalActivity); templateActDesp.Name = "审批"; templateActDesp.CodeName = key; templateActDesp.Properties.SetValue("IsDynamic", true); WrappedAUSchemaRole role = new WrappedAUSchemaRole(AUHelper.AUSchemaActivityMatrixRoleID) { Name = "实物管理员", Description = "实物管理员" }; WfAURoleResourceDescriptor roleDesp = new WfAURoleResourceDescriptor(role); templateActDesp.Resources.Add(roleDesp); return(templateActDesp); }
public void CreateInstanceTest() { WfActivitySettings setting = WfActivitySettings.GetConfig(); var process1 = new WfProcessDescriptor() { Key = "Process1" }; IWfActivityDescriptor actDescriptor = new WfActivityDescriptor("Init", WfActivityType.InitialActivity) { CodeName = "test", Description = "test", Enabled = true }; process1.Activities.Add(actDescriptor); IWfActivity initActivity = setting.GetActivityBuilder(actDescriptor).CreateActivity(actDescriptor); Assert.IsTrue(initActivity.EnterActions.Count > 0); Assert.IsTrue(initActivity.LeaveActions.Count > 0); initActivity.EnterActions.PrepareActions(null); initActivity.EnterActions.PersistActions(null); initActivity.LeaveActions.PrepareActions(null); initActivity.LeaveActions.PersistActions(null); actDescriptor = new WfActivityDescriptor("Completed", WfActivityType.CompletedActivity) { CodeName = "test", Description = "test", Enabled = true }; process1.Activities.Add(actDescriptor); var completedActivity = setting.GetActivityBuilder(actDescriptor).CreateActivity(actDescriptor); Assert.IsTrue(completedActivity.EnterActions.Count > 0); Assert.IsTrue(completedActivity.LeaveActions.Count > 0); }
public static void AddNodeToDescription(IWfProcess process, int addNumber) { WfNormalActivityBuilder builder = new WfNormalActivityBuilder(); var desc = process.Descriptor; for (var i = 0; i < addNumber; i++) { WfActivityDescriptor normalAct = new WfActivityDescriptor("Extra" + i, WfActivityType.NormalActivity); normalAct.Name = "Normal" + i; normalAct.CodeName = "Normal Activity" + i; normalAct.ActivityType = WfActivityType.NormalActivity; normalAct.BranchProcessTemplates.Add(new WfBranchProcessTemplateDescriptor("no delete tks!")); desc.Activities.Add(normalAct); desc.Activities[1].ToTransitions.AddForwardTransition(normalAct); normalAct.ToTransitions.AddForwardTransition(desc.Activities[2]); WfActivityBase act = WfActivitySettings.GetConfig().GetActivityBuilder(normalAct).CreateActivity(normalAct); act.Process = process; process.Activities.Add(act); } }
/// <summary> /// 创建一个有四个节点的带条件流程,Init,Complete,Normal和Manager /// </summary> /// <returns></returns> public static IWfProcessDescriptor CreateSimpleProcessDescriptorWithCondition() { IWfProcessDescriptor processDesp = CreateSimpleProcessDescriptor(); //直接到结束点 ((IWfForwardTransitionDescriptor)processDesp.Activities["NormalActivity"].ToTransitions[0]).Condition.Expression = "Amount < 5000"; WfActivityDescriptor mgrAct = new WfActivityDescriptor("ManagerActivity", WfActivityType.NormalActivity); mgrAct.Name = "Manager"; mgrAct.CodeName = "Manager"; processDesp.Activities.Add(mgrAct); //经过管理员点 IWfForwardTransitionDescriptor transition = processDesp.Activities["NormalActivity"].ToTransitions.AddForwardTransition(mgrAct); transition.Condition.Expression = "Amount >= 5000"; mgrAct.ToTransitions.AddForwardTransition(processDesp.CompletedActivity); return(processDesp); }
public void AddProcess() { string processID = "182364d3-2e59-bc73-40e9-fb94672d21a1"; IWfProcess process = WfRuntime.GetProcessByProcessID(processID); string activityKey = process.Descriptor.FindNotUsedActivityKey(); WfActivityDescriptor actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); process.CurrentActivity.Append(actDesp); WfRuntime.PersistWorkflows(); activityKey = process.Descriptor.FindNotUsedActivityKey(); actDesp = new WfActivityDescriptor(activityKey, WfActivityType.NormalActivity); process.CurrentActivity.Append(actDesp); process = WfRuntime.GetProcessByProcessID(processID); WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, WfBranchProcessExecuteSequence.Parallel, WfBranchProcessBlockingType.WaitAnyoneBranchProcessComplete); process.MoveTo(tp); WfRuntime.PersistWorkflows(); }