public void AddCondition <T>(FactDeclaration <T> factDeclaration, IRuleCondition <T> condition) where T : class { var declaration = GetDeclaration(factDeclaration.Name); declaration.AddCondition(condition); }
public AlphaBuilderContext <T> CreateContext <T>(FactDeclaration <T> declaration) where T : class { using (_logger.BeginScope($"{nameof(CreateContext)}<{typeof(T).Name}>")) { TypeNode <T> typeNode = _network.GetTypeNode <T, TypeNode <T> >(); return(new RuntimeAlphaBuilderContext <T>(declaration, typeNode)); } }
public RuleCondition <T> GetRuleCondition <T>(FactDeclaration <T> factDeclaration, Expression <Func <T, bool> > conditionExpression) where T : class { if (conditionExpression == null) { throw new ArgumentNullException(nameof(conditionExpression)); } if (conditionExpression.Parameters.Count != 1) { throw new ArgumentException($"Expected 1 parameter, found {conditionExpression.Parameters.Count}", nameof(conditionExpression)); } var condition = new RuleCondition <T>(factDeclaration, conditionExpression); return(condition); }
public ITerminalNode <T> BuildTerminalNode <T>(BuilderContext context, FactDeclaration <T> factDeclaration) where T : class { using (_logger.BeginScope($"{nameof(BuildTerminalNode)}<{typeof(T).Name}>")) { if (context.AlphaSource != null) { BuildJoinNode <T>(context); } var factIndexMap = context.CreateIndexMap(factDeclaration); var betaSource = context.BetaSource as ITupleSource <T>; _logger.LogDebug($"Creating terminal node: {typeof(T).Name}"); return(new TerminalNode <T>(betaSource, factIndexMap)); } }
public RuntimeAlphaBuilderContext(FactDeclaration <T> declaration, IAlphaNode <T> currentNode) { Declaration = declaration; CurrentNode = currentNode; CurrentSource = currentNode.MemoryNode; }
public RuntimeBetaBuilderContext(FactDeclaration <TRight> declaration, IBetaNode <TLeft, TRight> currentNode) { Declaration = declaration; CurrentNode = currentNode; CurrentSource = currentNode.MemoryNode; }
public RuleAction(FactDeclaration <T> declaration, Func <FactContext <T>, Task> action) { _declaration = declaration; _action = action; }
public IndexMap CreateIndexMap(FactDeclaration factDeclaration) { return(IndexMap.CreateMap(_parameters, _parameters)); }
public void Add <T>(string name, FactDeclaration <T> factDeclaration) where T : class { _declarations.Add(name, new Declaration <T>(factDeclaration)); }
public RuleCondition(FactDeclaration <T> factDeclaration, Expression <Func <T, bool> > conditionExpression) { FactDeclaration = factDeclaration; ConditionExpression = conditionExpression; }