Beispiel #1
0
        public void ExpenseProcessSerializationTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.LoadProcessDescriptorFromFile("Expense.xml");

            IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp);

            process.ApplicationRuntimeParameters["Amount"] = 500;

            WfRuntime.PersistWorkflows();

            process = WfRuntime.GetProcessByProcessID(process.ID);

            WfProcessTestCommon.MoveToNextDefaultActivityWithExecutor(process);

            process = WfRuntime.GetProcessByProcessID(process.ID);

            IWfActivityDescriptor currentActDesp = process.CurrentActivity.Descriptor;

            ToTransitionsDescriptorCollection transitions = currentActDesp.ToTransitions;

            foreach (string key in transitions.GetAllKeys())
            {
                Assert.IsTrue(key.IsNotEmpty());

                IWfTransitionDescriptor transition = transitions[key];

                Assert.AreEqual(key, transition.Key);
            }
        }
Beispiel #2
0
        public void MainStreamActivitiesWithConditionActivityPassed()
        {
            IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor();

            desp.InitialActivity.Resources.Add(new WfUserResourceDescriptor((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object));

            IWfActivityDescriptor actDesp = desp.Activities[1];

            AddActivitiesDespToSameActivityDesp(actDesp, 2);
            ToTransitionsDescriptorCollection transDespColl = actDesp.ToTransitions;

            SetTransitionCondition(transDespColl[0], false, 1);
            SetTransitionCondition(transDespColl[1], true, 3);

            WfProcessStartupParams startupParams = WfProcessTestCommon.GetInstanceOfWfProcessStartupParams(desp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver1, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.approver2, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            ProcessTestHelper.MoveToAndSaveNextActivityWithDefSelectTranstion(OguObject.requestor, process);

            process = WfRuntime.GetProcessByProcessID(process.ID);
            Assert.AreEqual(3, process.ElapsedActivities.Count);

            WfMainStreamActivityDescriptorCollection coll = process.Descriptor.GetMainStreamActivities();

            Assert.AreEqual(process.Activities.Count - 1, coll.Count);

            Assert.AreEqual(transDespColl[1].ToActivity.Key, coll[2].Activity.Key, "此处为动态添加的活动");
        }
Beispiel #3
0
        public void ActivityToTransitionsSort()
        {
            IWfProcessDescriptor desp = WfProcessTestCommon.CreateProcessDescriptor();

            AddActivitiesDespToSameActivityDesp(desp.Activities[1], 4);

            ToTransitionsDescriptorCollection transDespColl = desp.Activities[1].ToTransitions;

            Assert.AreEqual(4, transDespColl.Count);

            SetTransitionCondition(transDespColl[0], false, 4);
            SetTransitionCondition(transDespColl[1], true, 0);
            SetTransitionCondition(transDespColl[2], false, 2);
            SetTransitionCondition(transDespColl[3], true, 1);

            WfTransitionDescriptorCollection transitions = desp.Activities[1].ToTransitions.GetAllCanTransitTransitions();

            Assert.IsTrue(transitions[0].DefaultSelect);
            Assert.AreEqual(transDespColl[1].DefaultSelect, transitions[0].DefaultSelect);

            Assert.IsTrue(transitions[1].DefaultSelect);
            Assert.AreEqual(transDespColl[3].DefaultSelect, transitions[1].DefaultSelect);

            Assert.IsFalse(transitions[2].DefaultSelect);
            Assert.AreEqual(transDespColl[2].Priority, transitions[2].Priority);

            Assert.IsFalse(transitions[3].DefaultSelect);
            Assert.AreEqual(transDespColl[0].Priority, transitions[3].Priority);
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="activity">需要添加活动的活动点</param>
        /// <param name="n">添加的个数</param>
        /// <returns></returns>
        private void GetProcDespWithBranchActivities(IWfActivityDescriptor activityDesp, int n)
        {
            AddActivitiesDespToSameActivityDesp(activityDesp, n);

            ToTransitionsDescriptorCollection transDespColl = activityDesp.ToTransitions;
            bool def = false;
            int  i   = transDespColl.Count - 1;

            foreach (IWfTransitionDescriptor item in transDespColl)
            {
                SetTransitionCondition(item, def, i--);
                SetTransitionCondition(item, !def, i--);//设置线的条件
            }
        }
Beispiel #5
0
        public void ProcessWithReturnLineSerializationTest()
        {
            IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithReturnLine();

            XElementFormatter formatter = new XElementFormatter();

            XElement root = formatter.Serialize(processDesp);

            Console.WriteLine(root.ToString());
            processDesp = (IWfProcessDescriptor)formatter.Deserialize(root);

            IWfActivityDescriptor normalActDesp = processDesp.Activities["NormalActivity"];

            ToTransitionsDescriptorCollection transitions = normalActDesp.ToTransitions;

            foreach (string key in transitions.GetAllKeys())
            {
                Assert.IsTrue(key.IsNotEmpty());

                IWfTransitionDescriptor transition = transitions[key];

                Assert.AreEqual(key, transition.Key);
            }
        }
		public override IDictionary<string, object> Serialize(object obj, System.Web.Script.Serialization.JavaScriptSerializer serializer)
		{
			WfProcessDescriptor processDesp = (WfProcessDescriptor)obj;

			Dictionary<string, object> dictionary = (Dictionary<string, object>)base.Serialize(obj, serializer);

			DictionaryHelper.AddNonDefaultValue<string, object>(dictionary, "Version", processDesp.Version);
			DictionaryHelper.AddNonDefaultValue<string, object>(dictionary, "ApplicationName", processDesp.ApplicationName);
			DictionaryHelper.AddNonDefaultValue<string, object>(dictionary, "ProgramName", processDesp.ProgramName);
			DictionaryHelper.AddNonDefaultValue<string, object>(dictionary, "Url", processDesp.Url);
			DictionaryHelper.AddNonDefaultValue<string, object>(dictionary, "GraphDescription", processDesp.GraphDescription);

			dictionary.Add("Activities", processDesp.Activities);

			SetPropertiesValue(processDesp, "Variables", processDesp.Variables);
			SetPropertiesValue(processDesp, "RelativeLinks", processDesp.RelativeLinks);
			SetPropertiesValue(processDesp, "CancelEventReceivers", processDesp.CancelEventReceivers);
            SetPropertiesValue(processDesp, "CompleteEventReceivers", processDesp.CompleteEventReceivers);
			SetPropertiesValue(processDesp, "InternalRelativeUsers", processDesp.InternalRelativeUsers);
			SetPropertiesValue(processDesp, "ExternalUsers", processDesp.ExternalUsers);
			SetPropertiesValue(processDesp, "ParametersNeedToBeCollected", processDesp.ParametersNeedToBeCollected);
			SetPropertiesValue(processDesp, "CancelBeforeExecuteServices", processDesp.CancelBeforeExecuteServices);
			SetPropertiesValue(processDesp, "CancelAfterExecuteServices", processDesp.CancelAfterExecuteServices);

			ToTransitionsDescriptorCollection transitions = new ToTransitionsDescriptorCollection();

			foreach (WfActivityDescriptor actDesp in processDesp.Activities)
			{
				transitions.CopyFrom(actDesp.ToTransitions);
			}

			dictionary.Add("Transitions", transitions);

			return dictionary;
		}