Example #1
0
        public void DoWork(ICalculateContext context)
        {
            List <ICalculateOutput> outputs = new List <ICalculateOutput>();

            foreach (ICalculate calc in context.CalculateOperators)
            {
                ICalculateOutput output = calc.Calc(context.CalculateInpute);
                if (output != null)
                {
                    outputs.Add(output);
                }
            }
#if DEBUG
            List <string> vals = new List <string>();
#endif
            if (outputs != null && outputs.Count > 0)
            {
                foreach (ICalculateOutput output in outputs)
                {
                    foreach (SinkFunction sf in context.Sinks)
                    {
                        try
                        {
                            sf.Open();

                            sf.Invoke(output.DataSource, null);

                            sf.Close();
#if DEBUG
                            foreach (IMetaData md in output.DataSource)
                            {
                                vals.Add(md.TagValue);
                            }
#endif
                        }
                        catch (Exception ex)
                        {
                            Logger.Log.Error(true, sf.GetType().ToString(), ex);
                        }
                    }
                }

                if (PublishCalculateCompleted != null)
                {
                    context.CalculateOutputs = outputs;

                    PublishCalculateCompleted(context);
                }
#if DEBUG
                string resultVals = String.Join(",", vals);
                Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:{resultVals}");
#else
                Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:{outputs.Count.ToString()}");
#endif
            }
            else
            {
                Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:计算结果为空");
            }
        }
Example #2
0
        public void DoWork(ICalculateContext context)
        {
            ICalculateOutput output = context.CalculateOperator.Calc(context.CalculateInpute);

            if (output != null)
            {
                foreach (SinkFunction sf in context.Sinks)
                {
                    try
                    {
                        sf.Open();

                        sf.Invoke(output.DataSource, null);

                        sf.Close();
                    }
                    catch (Exception ex)
                    {
                        Logger.Log.Error(true, sf.GetType().ToString(), ex);
                    }
                }

                if (PublishCalculateCompleted != null)
                {
                    context.CalculateOutput = output;

                    PublishCalculateCompleted(context);
                }
            }

            if (output != null)
            {
                Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:{output.DataSource[0].TagValue}");
            }
            else
            {
                Logger.Log.Info(false, $"{context.Name}_{this.Name}_{context.Desc}-线程({Thread.CurrentThread.ManagedThreadId.ToString("0000")}):【{context.LeftTime.ToString()}-{context.RightTime.ToString()}】,【Result】:计算结果为空");
            }
        }
Example #3
0
        public CalculateContext(string name, string desc, DateTime leftTime, DateTime rightTime, CalculateType calculateType, ICalculateInpute inpute, ICalculateOutput output, ICalculate calculateOperator)
        {
            Name              = name;
            Desc              = desc;
            LeftTime          = leftTime;
            RightTime         = rightTime;
            CalculateType     = calculateType;
            CalculateInpute   = inpute;
            CalculateOutput   = output;
            CalculateOperator = calculateOperator;

            IExecutionEnvironment env = ExecutionEnvironment.GetExecutionEnvironment(null);

            if (env == null)
            {
                Sinks = new List <SinkFunction>();
            }
            else
            {
                Sinks = new List <SinkFunction>(((ExecutionEnvironment)env).Sinks);
            }
        }