Esempio n. 1
0
 public void Apply(IRuntimeBuilder builder)
 {
     foreach (var condition in _conditions)
     {
         condition.Apply(builder);
     }
 }
        public AlphaBuilderContext <TFact> Build(IRuntimeBuilder builder, AlphaBuilderContext <TFact> context)
        {
            foreach (var condition in _conditions)
            {
                context = builder.BuildSelectionNode(context, condition.ConditionExpression);
            }

            return(context);
        }
        public void ConfigureProcessors(IRuntimeBuilder runtimeBuilder, IHostingEnvironment environment)
        {
            if (runtimeBuilder == null)
            {
                throw new ArgumentNullException(nameof(runtimeBuilder));
            }

            using var scope = runtimeBuilder.ApplicationServices.CreateScope();
            ConfigureProcessors(runtimeBuilder, scope.ServiceProvider);
        }
        public BuilderContextCollection Build(IRuntimeBuilder builder)
        {
            var builderContexts = new BuilderContextCollection();

            foreach (var declaration in _declarations.Values)
            {
                declaration.Build(builder, builderContexts);
            }

            return(builderContexts);
        }
Esempio n. 5
0
        public void Apply(IRuntimeBuilder builder)
        {
            var contextCollection = _declarations.Build(builder);



            var context = builder.CreateContext();


//            foreach (var condition in _conditions)
//                condition.Apply(builder, context);

//            foreach (var action in _actions)
//                action.Apply(builder, context);
        }
        public BetaBuilderContext <TFact> Build(IRuntimeBuilder builder, BetaBuilderContext <TFact> context)
        {
//            var terminalContext = builder.BuildTerminalNode(context);
//
//
//            terminalContext = builder.BuildRuleNode(terminalContext, _actions);
//
//            foreach (var action in _actions)
//            {
//
//                context = builder.BuildSelectionNode(context, action.ConditionExpression);
//            }

            return(context);
        }
Esempio n. 7
0
        public void Apply(IRuntimeBuilder builder)
        {
            var context = builder.CreateContext();

            context.AddParameter(_ruleFact.Parameter);

            builder.BuildTypeNode <T>(context);

            builder.BuildSelectionNode(context, _conditionExpression);



//            protected override void VisitPattern(ReteBuilderContext context, PatternElement element)
//        {
//            if (element.Source == null)
//            {
//                context.CurrentAlphaNode = _root;
//                context.RegisterDeclaration(element.Declaration);
//
//                BuildTypeNode(context, element.ValueType);
//                List<ConditionElement> alphaConditions = element.Conditions.Where(x => x.References.Count() == 1).ToList();
//                foreach (var alphaCondition in alphaConditions)
//                    BuildSelectionNode(context, alphaCondition);
//                BuildAlphaMemoryNode(context);
//
//                List<ConditionElement> betaConditions = element.Conditions.Where(x => x.References.Count() > 1).ToList();
//                if (betaConditions.Count > 0)
//                    BuildJoinNode(context, betaConditions);
//            }
//            else
//            {
//                if (element.Conditions.Any())
//                {
//                    BuildSubnet(context, element.Source);
//                    context.RegisterDeclaration(element.Declaration);
//
//                    BuildJoinNode(context, element.Conditions);
//                }
//                else
//                {
//                    Visit(context, element.Source);
//                    context.RegisterDeclaration(element.Declaration);
//                }
//            }
//        }
        }
 private IProducerEngine <int> BuildProducerEngine(IRuntimeBuilder runtimeBuilder, ISynchronizationPolicy synchronizationPolicy)
 {
     return(new ScheduledProducerEngine <int>(
                new DefaultProducerExecutionStrategy <int>(
                    runtimeBuilder.ApplicationServices.GetRequiredService <IServiceScopeFactory>(),
                    new CallbackProducerResolver <int>(
                        (context) => new RandomIntProducer()),
                    synchronizationPolicy,
                    false),
                new CancellationSourceFactory(),
                new StrategyErrorHandler(
                    new LogToConsoleErrorStrategy(new ConsoleWriter(), LoggingLevel.All)),
                new PollingScheduler(TimeSpan.FromSeconds(5)),
                new ScheduledEngineOptions
     {
         ContinueUntilEmpty = true
     }));
 }
        public Processor Build(IRuntimeBuilder runtimeBuilder, AppProcessor config)
        {
            if (runtimeBuilder == null)
            {
                throw new ArgumentNullException(nameof(runtimeBuilder));
            }
            else if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            var producerEngine1 = BuildProducerEngine(runtimeBuilder, null);
            var producerEngine2 = BuildProducerEngine(runtimeBuilder, null);

            var consumerEngine = BuildConsumerEngine();

            return(new ProducerConsumerProcessor <int>(
                       config.Name,
                       new CancellationSourceFactory(),
                       new[] { producerEngine1, producerEngine2 },
                       consumerEngine));
        }
        private static void ConfigureProcessors(IRuntimeBuilder runtimeBuilder, IServiceProvider serviceProvider)
        {
            var unitOfWork = serviceProvider.GetRequiredService <IUnitOfWork>();

            var configs = unitOfWork.AppProcessors.GetProcessorsForMachine(Environment.MachineName);

            foreach (var config in configs)
            {
                var builder = GetBuilder(config.ProcessorType);
                if (builder == null)
                {
                    throw new InvalidOperationException("The processor builder was not created.");
                }

                var processor = builder.Build(runtimeBuilder, config);
                if (processor == null)
                {
                    throw new InvalidOperationException("The processor was not built.");
                }

                runtimeBuilder.RegisterProcessor(processor);
            }
        }
Esempio n. 11
0
 public void ConfigureProcessors(IRuntimeBuilder runtimeBuilder, IHostingEnvironment environment)
 {
     onConfigureProcessorsCallback?.Invoke(runtimeBuilder);
 }
Esempio n. 12
0
 public void Apply(IRuntimeBuilder builder, BuilderContext context)
 {
     var terminalNode = builder.BuildTerminalNode(context, _declaration);
 }