// Travis.Frisinger - 28.01.2013 : Amended for Debug public override List <DebugItem> GetDebugOutputs(IBinaryDataList dataList) { var result = new List <DebugItem>(); string resultString = _theResult.ToString(); DebugItem itemToAdd = new DebugItem(); IDataListCompiler c = DataListFactory.CreateDataListCompiler(); var val = new StringBuilder(Dev2DecisionStack.ExtractModelFromWorkflowPersistedData(ExpressionText)); try { Dev2DecisionStack dds = c.ConvertFromJsonToModel <Dev2DecisionStack>(val); if (_theResult.ToString() == "True") { resultString = dds.TrueArmText; } else if (_theResult.ToString() == "False") { resultString = dds.FalseArmText; } itemToAdd.AddRange(new DebugItemStaticDataParams(resultString, "").GetDebugItemResult()); result.Add(itemToAdd); } catch (Exception) { if (!dataList.HasErrors()) { itemToAdd.AddRange(new DebugItemStaticDataParams(resultString, "").GetDebugItemResult()); result.Add(itemToAdd); } } return(result); }
/// <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()); }
// Travis.Frisinger - 28.01.2013 : Amended for Debug public override List <DebugItem> GetDebugOutputs(IExecutionEnvironment dataList) { if (_debugOutputs != null && _debugOutputs.Count > 0) { return(_debugOutputs); } var result = new List <DebugItem>(); string resultString = _theResult.ToString(); DebugItem itemToAdd = new DebugItem(); IDataListCompiler c = DataListFactory.CreateDataListCompiler(); var val = new StringBuilder(Dev2DecisionStack.ExtractModelFromWorkflowPersistedData(ExpressionText)); try { Dev2DecisionStack dds = c.ConvertFromJsonToModel <Dev2DecisionStack>(val); if (_theResult.ToString() == "True") { resultString = dds.TrueArmText; } else if (_theResult.ToString() == "False") { resultString = dds.FalseArmText; } itemToAdd.AddRange(new DebugItemStaticDataParams(resultString, "").GetDebugItemResult()); result.Add(itemToAdd); } // ReSharper disable EmptyGeneralCatchClause catch (Exception) // ReSharper restore EmptyGeneralCatchClause { itemToAdd.AddRange(new DebugItemStaticDataParams(resultString, "").GetDebugItemResult()); result.Add(itemToAdd); } return(result); }
/// <summary> /// Evaluates the region. /// </summary> /// <param name="payload">The payload.</param> /// <param name="dlId">The dl ID.</param> /// <returns></returns> private Dev2DecisionStack EvaluateRegion(string payload, Guid dlId) { var env = _environments[dlId]; if (payload.StartsWith("{\"TheStack\":[{") || payload.StartsWith("{'TheStack':[{")) { //2013.05.06: Ashley Lewis for PBI 9460 - handle record-sets with stars in their index by resolving them var dds = Compiler.ConvertFromJsonToModel <Dev2DecisionStack>(new StringBuilder(payload)); if (dds.TheStack != null) { var effectedCols = new[] { false, false, false }; //Find decisions that mention record sets with starred indexes var invalidDecisions = new List <Dev2Decision>(); for (int i = 0; i < dds.TotalDecisions; i++) { Dev2Decision dd = dds.GetModelItem(i); if (dd.Col1 != null && DataListUtil.GetRecordsetIndexType(dd.Col1) == enRecordsetIndexType.Star) { invalidDecisions.Add(dd); effectedCols[0] = true; } else { var warewolfEvalResult = GetWarewolfEvalResult(env, dd.Col1); dd.Col1 = ExecutionEnvironment.WarewolfEvalResultToString(warewolfEvalResult); } if (dd.Col2 != null && DataListUtil.GetRecordsetIndexType(dd.Col2) == enRecordsetIndexType.Star) { if (!effectedCols[0]) { invalidDecisions.Add(dd); } effectedCols[1] = true; } else { var warewolfEvalResult = GetWarewolfEvalResult(env, dd.Col2); dd.Col2 = ExecutionEnvironment.WarewolfEvalResultToString(warewolfEvalResult); } if (dd.Col3 != null && DataListUtil.GetRecordsetIndexType(dd.Col3) == enRecordsetIndexType.Star) { if (!effectedCols[0] && !effectedCols[1]) { invalidDecisions.Add(dd); } effectedCols[2] = true; } else { var warewolfEvalResult = GetWarewolfEvalResult(env, dd.Col3); dd.Col3 = ExecutionEnvironment.WarewolfEvalResultToString(warewolfEvalResult); } } //Remove those record sets and replace them with a new decision for each resolved value foreach (Dev2Decision decision in invalidDecisions) { ErrorResultTO errors; dds = ResolveAllRecords(env, dds, decision, effectedCols, out errors); } } return(dds); } return(null); }
// Travis.Frisinger - 28.01.2013 : Amended for Debug public override List <DebugItem> GetDebugInputs(IBinaryDataList dataList) { List <IDebugItem> result = new List <IDebugItem>(); IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); var allErrors = new ErrorResultTO(); var val = new StringBuilder(Dev2DecisionStack.ExtractModelFromWorkflowPersistedData(ExpressionText)); try { Dev2DecisionStack dds = compiler.ConvertFromJsonToModel <Dev2DecisionStack>(val); ErrorResultTO error; string userModel = dds.GenerateUserFriendlyModel(dataList.UID, dds.Mode, out error); allErrors.MergeErrors(error); foreach (Dev2Decision dev2Decision in dds.TheStack) { AddInputDebugItemResultsAfterEvaluate(result, ref userModel, dataList, dds.Mode, dev2Decision.Col1, out error); allErrors.MergeErrors(error); AddInputDebugItemResultsAfterEvaluate(result, ref userModel, dataList, dds.Mode, dev2Decision.Col2, out error); allErrors.MergeErrors(error); AddInputDebugItemResultsAfterEvaluate(result, ref userModel, dataList, dds.Mode, dev2Decision.Col3, out error); allErrors.MergeErrors(error); } var itemToAdd = new DebugItem(); userModel = userModel.Replace("OR", " OR\r\n") .Replace("AND", " AND\r\n") .Replace("\r\n ", "\r\n") .Replace("\r\n\r\n", "\r\n") .Replace(" ", " "); AddDebugItem(new DebugItemStaticDataParams(userModel, "Statement"), itemToAdd); result.Add(itemToAdd); itemToAdd = new DebugItem(); AddDebugItem(new DebugItemStaticDataParams(dds.Mode == Dev2DecisionMode.AND ? "YES" : "NO", "Require All decisions to be True"), itemToAdd); result.Add(itemToAdd); } catch (JsonSerializationException) { Dev2Switch ds = new Dev2Switch { SwitchVariable = val.ToString() }; DebugItem itemToAdd = new DebugItem(); ErrorResultTO errors; IBinaryDataListEntry expressionsEntry = compiler.Evaluate(dataList.UID, enActionType.User, ds.SwitchVariable, false, out errors); var debugResult = new DebugItemVariableParams(ds.SwitchVariable, "Switch on", expressionsEntry, dataList.UID); itemToAdd.AddRange(debugResult.GetDebugItemResult()); result.Add(itemToAdd); } catch (Exception e) { allErrors.AddError(e.Message); } finally { if (allErrors.HasErrors()) { var serviceName = GetType().Name; DisplayAndWriteError(serviceName, allErrors); ErrorResultTO error; compiler.UpsertSystemTag(_dataListId, enSystemTag.Dev2Error, allErrors.MakeDataListReady(), out error); } } return(result.Select(a => a as DebugItem).ToList()); }
// Travis.Frisinger - 28.01.2013 : Amended for Debug public override List <DebugItem> GetDebugInputs(IExecutionEnvironment env) { if (_debugInputs != null && _debugInputs.Count > 0) { return(_debugInputs); } List <IDebugItem> result = new List <IDebugItem>(); IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); var allErrors = new ErrorResultTO(); var val = new StringBuilder(Dev2DecisionStack.ExtractModelFromWorkflowPersistedData(ExpressionText)); try { Dev2DecisionStack dds = compiler.ConvertFromJsonToModel <Dev2DecisionStack>(val); ErrorResultTO error; string userModel = dds.GenerateUserFriendlyModel(env, dds.Mode, out error); allErrors.MergeErrors(error); foreach (Dev2Decision dev2Decision in dds.TheStack) { AddInputDebugItemResultsAfterEvaluate(result, ref userModel, env, dds.Mode, dev2Decision.Col1, out error); allErrors.MergeErrors(error); AddInputDebugItemResultsAfterEvaluate(result, ref userModel, env, dds.Mode, dev2Decision.Col2, out error); allErrors.MergeErrors(error); AddInputDebugItemResultsAfterEvaluate(result, ref userModel, env, dds.Mode, dev2Decision.Col3, out error); allErrors.MergeErrors(error); } var itemToAdd = new DebugItem(); userModel = userModel.Replace("OR", " OR\r\n") .Replace("AND", " AND\r\n") .Replace("\r\n ", "\r\n") .Replace("\r\n\r\n", "\r\n") .Replace(" ", " "); AddDebugItem(new DebugItemStaticDataParams(userModel, "Statement"), itemToAdd); result.Add(itemToAdd); itemToAdd = new DebugItem(); AddDebugItem(new DebugItemStaticDataParams(dds.Mode == Dev2DecisionMode.AND ? "YES" : "NO", "Require All decisions to be True"), itemToAdd); result.Add(itemToAdd); } catch (JsonSerializationException) { Dev2Switch ds = new Dev2Switch { SwitchVariable = val.ToString() }; DebugItem itemToAdd = new DebugItem(); var a = env.Eval(ds.SwitchVariable); var debugResult = new DebugItemWarewolfAtomResult(ExecutionEnvironment.WarewolfEvalResultToString(a), "", ds.SwitchVariable, "", "Switch on", "", "="); itemToAdd.AddRange(debugResult.GetDebugItemResult()); result.Add(itemToAdd); } catch (Exception e) { allErrors.AddError(e.Message); } finally { if (allErrors.HasErrors()) { var serviceName = GetType().Name; DisplayAndWriteError(serviceName, allErrors); } } return(result.Select(a => a as DebugItem).ToList()); }