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); } }
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, "此处为动态添加的活动"); }
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); }
/// <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--);//设置线的条件 } }
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; }