示例#1
0
        public ExpressionTask(string expId, string expName, ExpressionCalculateType expCalculateType, int timerInterval, string script, List <ICalculate> calcs)
        {
            Id   = expId;
            Name = expName;

            Script = script;

            PatternDataList = new List <string>();

            PatternDataList.AddRange(GetPatternDataList(Script));

            if (calcs == null || calcs.Count <= 0)
            {
                CalculateOperators = new List <ICalculate>()
                {
                    new ExpressionCalculate($"{Id}_result")
                };
            }
            else
            {
                CalculateOperators = calcs;
            }

            _timer           = new System.Timers.Timer(timerInterval);
            _timer.Elapsed  += OnTimedEvent;
            _timer.AutoReset = true;

            TimerInterval = timerInterval;

            ExpressionCalculateType = expCalculateType;
        }
示例#2
0
        public ExpressionTask(string expId, string expName, ExpressionCalculateType expCalculateType, int timerInterval, string script, ICalculate calc)
        {
            Id   = expId;
            Name = expName;

            Script = script;

            PatternDataList = new List <string>();

            PatternDataList.AddRange(GetPatternDataList(Script));

            if (calc == null)
            {
                CalculateOperator = new ExpressionCalculate();
            }
            else
            {
                CalculateOperator = calc;
            }

            _timer           = new System.Timers.Timer(timerInterval);
            _timer.Elapsed  += OnTimedEvent;
            _timer.AutoReset = true;

            TimerInterval = timerInterval;

            ExpressionCalculateType = expCalculateType;
        }
示例#3
0
        internal void PublishCalculate()
        {
            DateTime nowTime = DateTime.Now;

            IMetaData[] mds = new MetaData[PatternDataList.Count];
            for (int i = 0; i < mds.Length; i++)
            {
                mds[i] = new MetaData()
                {
                    TagId = PatternDataList[i]
                };
            }

            ICalculateContext calculateContext = new CalculateContext(Name, ExpressionCalculateType.ToString(), nowTime, nowTime, CalculateType.Expression, new CalculateInpute(Id, Script, nowTime, mds), null, CalculateOperators);

            GlobalContext.ActionBlock.Post(calculateContext);

            mds = null;
        }
        public void AddOrUpdateExpressionTask(string expId, string expName, ExpressionCalculateType expCalculateType, int timerInterval, string script, ICalculate calc)
        {
            if (!_expList.ContainsKey(expId))
            {
                IExpressionTask expTask = new ExpressionTask(expId, expName, expCalculateType, timerInterval, script, calc)
                {
                    GlobalContext = _context
                };

                _expList.TryAdd(expId, expTask);
            }
            else
            {
                IExpressionTask expTask;
                if (_expList.TryGetValue(expId, out expTask))
                {
                    expTask.Name   = expName;
                    expTask.Script = script;
                    expTask.ExpressionCalculateType = expCalculateType;
                    expTask.TimerInterval           = timerInterval;
                    expTask.CalculateOperator       = calc;
                }
            }
        }