/// <summary> /// Removes the dummy options from model. /// </summary> /// <param name="val">The val.</param> /// <returns></returns> public static string RemoveDummyOptionsFromModel(StringBuilder val) { var tmp = val.Replace(@"""EvaluationFn"":""Choose...""", @"""EvaluationFn"":""Choose"""); // Hydrate and remove Choose options ;) try { Dev2DecisionStack dds = JsonConvert.DeserializeObject <Dev2DecisionStack>(tmp.ToString()); if (dds.TheStack != null) { IList <Dev2Decision> toKeep = dds.TheStack.Where(item => item.EvaluationFn != enDecisionType.Choose).ToList(); dds.TheStack = toKeep; } tmp = new StringBuilder(JsonConvert.SerializeObject(dds)); } catch (Exception ex) { Dev2Logger.Log.Error("Dev2DecisionStack", ex); // Best effort ;) } return(tmp.ToString()); }
/// <summary> /// Removes the dummy options from model. /// </summary> /// <param name="val">The val.</param> /// <returns></returns> public static string RemoveDummyOptionsFromModel(StringBuilder val) { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); var tmp = val.Replace(@"""EvaluationFn"":""Choose...""", @"""EvaluationFn"":""Choose"""); // Hydrate and remove Choose options ;) try { Dev2DecisionStack dds = compiler.ConvertFromJsonToModel <Dev2DecisionStack>(tmp); if (dds.TheStack != null) { IList <Dev2Decision> toKeep = dds.TheStack.Where(item => item.EvaluationFn != enDecisionType.Choose).ToList(); dds.TheStack = toKeep; } tmp = compiler.ConvertModelToJson(dds); } catch (Exception ex) { Dev2Logger.Log.Error("Dev2DecisionStack", ex); // Best effort ;) } return(tmp.ToString()); }
protected override void BuildDataList() { BuildShapeAndTestData(); var decisionActivity = new DsfFlowDecisionActivity(); Dev2DecisionMode mode; ScenarioContext.Current.TryGetValue("mode", out mode); var decisionModels = ScenarioContext.Current.Get<List<Tuple<string, enDecisionType, string, string>>>("decisionModels"); var dds = new Dev2DecisionStack { TheStack = new List<Dev2Decision>(), Mode = mode, TrueArmText = "YES", FalseArmText = "NO" }; foreach(var dm in decisionModels) { var dev2Decision = new Dev2Decision { Col1 = dm.Item1 ?? string.Empty, EvaluationFn = dm.Item2, Col2 = dm.Item3 ?? string.Empty, Col3 = dm.Item4 ?? string.Empty }; dds.AddModelItem(dev2Decision); } string modelData = dds.ToVBPersistableModel(); ScenarioContext.Current.Add("modelData", modelData); decisionActivity.ExpressionText = string.Join("", GlobalConstants.InjectedDecisionHandler, "(\"", modelData, "\",", GlobalConstants.InjectedDecisionDataListVariable, ")"); List<Tuple<string, string>> variableList; ScenarioContext.Current.TryGetValue("variableList", out variableList); if(variableList == null) { variableList = new List<Tuple<string, string>>(); ScenarioContext.Current.Add("variableList", variableList); } var multiAssign = new DsfMultiAssignActivity(); int row = 1; foreach(var variable in variableList) { multiAssign.FieldsCollection.Add(new ActivityDTO(variable.Item1, variable.Item2, row, true)); row++; } FlowDecision x = new FlowDecision(); x.Condition=decisionActivity; TestStartNode = new FlowStep { Action = multiAssign, Next = x }; ScenarioContext.Current.Add("activity", decisionActivity); }
public static void InjectExpression(Dev2DecisionStack ds, ModelProperty activityExpression) { if(ds == null) return; string modelData = ds.ToVBPersistableModel(); string expressionToInject = String.Join("", GlobalConstants.InjectedDecisionHandler, "(\"", modelData, "\",", GlobalConstants.InjectedDecisionDataListVariable, ")"); if(activityExpression != null) { activityExpression.SetValue(expressionToInject); } }
public static void SetArmTextDefaults(Dev2DecisionStack dds) { if(String.IsNullOrEmpty(dds.TrueArmText.Trim())) { dds.TrueArmText = GlobalConstants.DefaultTrueArmText; } if(String.IsNullOrEmpty(dds.FalseArmText.Trim())) { dds.FalseArmText = GlobalConstants.DefaultFalseArmText; } }
public static void SetArmText(ModelItem decisionActivity, Dev2DecisionStack dds) { SetArmText(decisionActivity, GlobalConstants.TrueArmPropertyText, dds.TrueArmText); SetArmText(decisionActivity, GlobalConstants.FalseArmPropertyText, dds.FalseArmText); }
Dev2DecisionStack ResolveAllRecords(IExecutionEnvironment env, Dev2DecisionStack stack, Dev2Decision decision, bool[] effectedCols, out ErrorResultTO errors) { if(effectedCols == null) { throw new ArgumentNullException("effectedCols"); } int stackIndex = stack.TheStack.IndexOf(decision); stack.TheStack.Remove(decision); errors = new ErrorResultTO(); if(effectedCols[0]) { var data = env.EvalAsListOfStrings(decision.Col1); int reStackIndex = stackIndex; foreach(var item in data) { var newDecision = new Dev2Decision { Col1 = item, Col2 = decision.Col2, Col3 = decision.Col3, EvaluationFn = decision.EvaluationFn }; stack.TheStack.Insert(reStackIndex++, newDecision); } } if(effectedCols[1]) { var data = env.EvalAsListOfStrings(decision.Col2); int reStackIndex = stackIndex; foreach(var item in data) { var newDecision = new Dev2Decision { Col1 = FetchStackValue(stack, reStackIndex, 1), Col2 = item, Col3 = decision.Col3, EvaluationFn = decision.EvaluationFn }; if(effectedCols[0]) { // ensure we have the correct indexing ;) if(reStackIndex < stack.TheStack.Count) { stack.TheStack[reStackIndex++] = newDecision; } else { stack.TheStack.Insert(reStackIndex++, newDecision); } } else { stack.TheStack.Insert(reStackIndex++, newDecision); } } } if(effectedCols[2]) { var data = env.EvalAsListOfStrings(decision.Col3); int reStackIndex = stackIndex; foreach (var item in data) { var newDecision = new Dev2Decision { Col1 = FetchStackValue(stack, reStackIndex, 1), Col2 = FetchStackValue(stack, reStackIndex, 2), Col3 = item, EvaluationFn = decision.EvaluationFn }; if(effectedCols[0] || effectedCols[1]) { // ensure we have the correct indexing ;) if(reStackIndex < stack.TheStack.Count) { stack.TheStack[reStackIndex++] = newDecision; } else { stack.TheStack.Insert(reStackIndex++, newDecision); } } else { stack.TheStack.Insert(reStackIndex++, newDecision); } } } return stack; }
/// <summary> /// Fetches the stack value. /// </summary> /// <param name="stack">The stack.</param> /// <param name="stackIndex">Index of the stack.</param> /// <param name="columnIndex">Index of the column.</param> /// <returns></returns> private string FetchStackValue(Dev2DecisionStack stack, int stackIndex, int columnIndex) { // if out of bounds return an empty string ;) if(stackIndex >= stack.TheStack.Count) { return string.Empty; } if(columnIndex == 1) { return stack.TheStack[stackIndex].Col1; } if(columnIndex == 2) { return stack.TheStack[stackIndex].Col2; } return string.Empty; }