Exemplo n.º 1
0
        private void ExecuteCSharpRule(RuleData rule, INeonIoTEntity entity)
        {
            var func = (Func <INeonIoTEntity, bool>)rule.RuleCondition;

            if (func.Invoke(entity))
            {
                rule.Action.Invoke(entity);
            }
        }
Exemplo n.º 2
0
        private void ExecuteLuaRule(RuleData rule, INeonIoTEntity entity)
        {
            var lParser = new LambdaParser();
            var context = new Dictionary <string, object> {
                { "entity", entity }, { "rule", rule }
            };


            var bResult = (bool)lParser.Eval((string)rule.RuleCondition, context);

            if (bResult)
            {
                _logger.LogInformation($"Executing rule {rule.RuleName}");
                rule.Action.Invoke(entity);
            }
        }
Exemplo n.º 3
0
        private void ParseRule(INeonIoTEntity entity)
        {
            Rules.Where(r => r.EntityType == entity.GetType()).ToList().ForEach(r =>
            {
                switch (r.RuleType)
                {
                case RuleTypeEnum.CSharp:
                    ExecuteCSharpRule(r, entity);
                    break;

                case RuleTypeEnum.Lambda:
                    ExecuteLuaRule(r, entity);
                    break;

                case RuleTypeEnum.Lua:
                    ExecuteLuaRule(r, entity);
                    break;
                }
            });
        }