public void WfTransitionJsonToCreateTransitionParams() { WfForwardTransitionDescriptor transition1 = new WfForwardTransitionDescriptor("T1"); transition1.Name = "Transition1"; transition1.Condition.Expression = "Amount > 4000"; transition1.Variables.Add(new WfVariableDescriptor("V1", "Shen Zheng")); transition1.Variables.Add(new WfVariableDescriptor("Level", "10", DataType.Int)); WfForwardTransitionDescriptor transition2 = new WfForwardTransitionDescriptor("T2"); transition2.Name = "Transition2"; JSONSerializerExecute.RegisterConverter(typeof(EasyWfForwardTransitionDescriptorConverter)); JSONSerializerExecute.RegisterConverter(typeof(WfConditionDescriptorConverter)); JSONSerializerExecute.RegisterConverter(typeof(EasyWfVariableDescriptorConverter)); string json = JSONSerializerExecute.Serialize(new WfForwardTransitionDescriptor[] { transition1, transition2 }); Console.WriteLine(json); WfCreateTransitionParamCollection transitionParams = new WfCreateTransitionParamCollection(json); Assert.AreEqual(2, transitionParams.Count); Assert.AreEqual(transition1.Key, transitionParams[0].Parameters["Key"]); Assert.AreEqual(transition1.Name, transitionParams[0].Parameters["Name"]); Assert.AreEqual(transition1.Condition.Expression, transitionParams[0].Parameters["Condition"]); Assert.AreEqual(transition2.Key, transitionParams[1].Parameters["Key"]); Assert.AreEqual(transition2.Name, transitionParams[1].Parameters["Name"]); Assert.IsFalse(transitionParams[1].Parameters.ContainsKey("Condition")); Assert.AreEqual(transition1.Variables.Count, ((Dictionary <string, object>[])transitionParams[0].Parameters["Variables"]).Length); }
public void WfTransitionJsonToCreateTransitionParams() { WfForwardTransitionDescriptor transition1 = new WfForwardTransitionDescriptor("T1"); transition1.Name = "Transition1"; transition1.Condition.Expression = "Amount > 4000"; transition1.Variables.Add(new WfVariableDescriptor("V1", "Shen Zheng")); transition1.Variables.Add(new WfVariableDescriptor("Level", "10", DataType.Int)); WfForwardTransitionDescriptor transition2 = new WfForwardTransitionDescriptor("T2"); transition2.Name = "Transition2"; JSONSerializerExecute.RegisterConverter(typeof(EasyWfForwardTransitionDescriptorConverter)); JSONSerializerExecute.RegisterConverter(typeof(WfConditionDescriptorConverter)); JSONSerializerExecute.RegisterConverter(typeof(EasyWfVariableDescriptorConverter)); string json = JSONSerializerExecute.Serialize(new WfForwardTransitionDescriptor[] { transition1, transition2 }); Console.WriteLine(json); WfCreateTransitionParamCollection transitionParams = new WfCreateTransitionParamCollection(json); Assert.AreEqual(2, transitionParams.Count); Assert.AreEqual(transition1.Key, transitionParams[0].Parameters["Key"]); Assert.AreEqual(transition1.Name, transitionParams[0].Parameters["Name"]); Assert.AreEqual(transition1.Condition.Expression, transitionParams[0].Parameters["Condition"]); Assert.AreEqual(transition2.Key, transitionParams[1].Parameters["Key"]); Assert.AreEqual(transition2.Name, transitionParams[1].Parameters["Name"]); Assert.IsFalse(transitionParams[1].Parameters.ContainsKey("Condition")); Assert.AreEqual(transition1.Variables.Count, ((Dictionary<string, object>[])transitionParams[0].Parameters["Variables"]).Length); }
/// <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); }
/// <summary> /// 创建新的线,如果processDesp不为null,则使用processDesp生成的不重复的Key /// </summary> /// <param name="processDesp"></param> /// <returns></returns> public IWfTransitionDescriptor CreateTransition(IWfProcessDescriptor processDesp) { string newKey = "TempTransitionKey"; if (processDesp != null) { newKey = processDesp.FindNotUsedTransitionKey(); } else { newKey = DictionaryHelper.GetValue(this.Parameters, "Key", string.Empty); } WfForwardTransitionDescriptor transition = new WfForwardTransitionDescriptor(newKey); string expression = DictionaryHelper.GetValue(this.Parameters, "Condition", string.Empty); if (expression.IsNotEmpty()) { transition.Condition.Expression = expression; } MergeProperties(transition.Properties, this.Parameters); if (this.Parameters.ContainsKey("Variables")) { CreateVariables(transition.Variables, (object[])this.Parameters["Variables"]); } return(transition); }
public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer) { WfForwardTransitionDescriptor forwardTranDesp = (WfForwardTransitionDescriptor)obj; IDictionary <string, object> dictionary = base.Serialize(obj, serializer); return(dictionary); }
/// <summary> /// 创建一个有连线的Server端流程 /// </summary> /// <returns></returns> public static WfProcessDescriptor CreateSimpleServerProcessWithLines() { WfProcessDescriptor processDesp = CreateSimpleServerProcessWithoutLines(); WfForwardTransitionDescriptor transition = new WfForwardTransitionDescriptor("L1"); transition.ConnectActivities(processDesp.InitialActivity, processDesp.CompletedActivity); return(processDesp); }
public override void ClientToServer(WfClientTransitionDescriptor client, ref WfTransitionDescriptor server) { client.NullCheck("client"); if (server == null) { server = new WfForwardTransitionDescriptor(client.Key); } base.ClientToServer(client, ref server); server.ToActivityKey = client.ToActivityKey; server.FromActivityKey = client.FromActivityKey; WfConditionDescriptor serverCondition = server.Condition; WfClientConditionDescriptorConverter.Instance.ClientToServer(client.Condition, ref serverCondition); server.Condition = serverCondition; WfClientVariableDescriptorCollectionConverter.Instance.ClientToServer(client.Variables, server.Variables); }
private void descriptorEditor_PreRenderControl(object sender, EventArgs e) { if (this.descriptorEditor.CurrentProcess != null) { WfForwardTransitionDescriptor transitionTemplate = new WfForwardTransitionDescriptor(); transitionTemplate.Key = this.descriptorEditor.CurrentProcessDescriptor.FindNotUsedTransitionKey(); PrepareTargetActivityDescriptors(); this.ClientScript.RegisterHiddenField("template", JSONSerializerExecute.Serialize(transitionTemplate)); this.descriptorEditor.RegisterAfterProcessDeserializedFunction( "WFWeb.BindPropertyGrid(process.Key, Sys.Serialization.JavaScriptSerializer.deserialize($get(\"template\").value));"); } if (this.descriptorEditor.ShowMainStream) { this.syncMSObj.Disabled = true; } }
/// <summary> /// 创建一个有连线的Server端流程 /// </summary> /// <returns></returns> public static WfProcessDescriptor CreateSimpleServerProcessWithLines() { WfProcessDescriptor processDesp = CreateSimpleServerProcessWithoutLines(); WfForwardTransitionDescriptor transition = new WfForwardTransitionDescriptor("L1"); transition.ConnectActivities(processDesp.InitialActivity, processDesp.CompletedActivity); return processDesp; }
public override object Deserialize(IDictionary <string, object> dictionary, Type type, System.Web.Script.Serialization.JavaScriptSerializer serializer) { WfForwardTransitionDescriptor forwardTranDesp = (WfForwardTransitionDescriptor)base.Deserialize(dictionary, type, serializer); return(forwardTranDesp); }
/// <summary> /// 生成空前向线定义的JSON串 /// </summary> /// <returns></returns> public static string GetEmptyForwardTransitionDescriptorJsonString() { RegisterConverters(); WfForwardTransitionDescriptor transition = new WfForwardTransitionDescriptor(); return JSONSerializerExecute.Serialize(transition); }