public RuleEngineDispatcher(ILinkCache linkCache,
                             IDispatcher dispatcher,
                             ILogicInstancesStore logicInstancesStore,
                             IDriverNodesStore driverNodesStore,
                             INodeInstanceCache nodeInstanceCache,
                             ILogicInterfaceInstanceCache logicInterfaceInstanceCache,
                             ILogger <RuleEngineDispatcher> logger)
 {
     _linkCache                   = linkCache;
     _dispatcher                  = dispatcher;
     _logicInstancesStore         = logicInstancesStore;
     _driverNodesStore            = driverNodesStore;
     _nodeInstanceCache           = nodeInstanceCache;
     _logicInterfaceInstanceCache = logicInterfaceInstanceCache;
     _logger = logger;
 }
        public static async Task <LogicMock> CreateLogicMock(
            string name,
            IDispatcher dispatcher,
            ILogicInstanceCache instanceCache,
            ILogicInterfaceInstanceCache interfaceInstanceCache,
            ILogicInstancesStore logicInstances)
        {
            var ruleInstance = new RuleInstance
            {
                ObjId = Guid.NewGuid(),
                Name  = "Logic_" + name
            };

            var inputTemplate = new RuleInterfaceTemplate
            {
                ObjId               = Guid.NewGuid(),
                Name                = "Input",
                ParameterDataType   = RuleInterfaceParameterDataType.Integer,
                IsLinkableParameter = true
            };

            var input = new RuleInterfaceInstance
            {
                ObjId = Guid.NewGuid(),
                This2RuleInstanceNavigation          = ruleInstance,
                This2RuleInstance                    = ruleInstance.ObjId,
                This2RuleInterfaceTemplateNavigation = inputTemplate,
                This2RuleInterfaceTemplate           = inputTemplate.ObjId
            };


            var outputTemplate = new RuleInterfaceTemplate
            {
                ObjId               = Guid.NewGuid(),
                Name                = "Output",
                ParameterDataType   = RuleInterfaceParameterDataType.Integer,
                IsLinkableParameter = true
            };
            var output = new RuleInterfaceInstance
            {
                ObjId = Guid.NewGuid(),
                This2RuleInstanceNavigation          = ruleInstance,
                This2RuleInstance                    = ruleInstance.ObjId,
                This2RuleInterfaceTemplateNavigation = outputTemplate,
                This2RuleInterfaceTemplate           = outputTemplate.ObjId
            };

            ruleInstance.RuleInterfaceInstance.Add(input);
            ruleInstance.RuleInterfaceInstance.Add(output);

            var mock = new LogicMock(new RuleContextMock(ruleInstance, dispatcher));

            await mock.Start();

            instanceCache?.Add(ruleInstance.ObjId, ruleInstance);
            interfaceInstanceCache?.Add(input.ObjId, input);
            interfaceInstanceCache?.Add(output.ObjId, output);
            logicInstances?.Add(ruleInstance, mock);

            return(mock);
        }
Esempio n. 3
0
 public LinkCache(IConfiguration configuration, ILogicInterfaceInstanceCache logicInterfaceCache) : base(configuration)
 {
     _logicInterfaceCache = logicInterfaceCache;
 }