Example #1
0
        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);
		}
Example #3
0
        /// <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);
        }
Example #5
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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;
        }
Example #10
0
        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);
        }