// 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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #4
0
        /// <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());
        }