public async Task <IActionResult> Index([FromBody] SensorDto dto, [FromServices] IRuleExecutor executor) { dto.CreationTime = DateTime.UtcNow; var result = await executor.Execute(dto); return(Ok(result)); }
public WorkflowStageObject(IRuleExecutor ruleExecutor, List <WorkflowStageObject <TWorkflowRequest> > workflowStageObjects, string uniqStageId, string workflowStageDescription) { _workflowStageDescription = workflowStageDescription; _workflowStageObjects = workflowStageObjects; _uniqStageId = uniqStageId; _ruleExecutor = ruleExecutor; WorkflowStageRules = new List <WorkflowRule <TWorkflowRequest, BaseRule <TWorkflowRequest> > >(); }
public RuleChecker(Rule rule) { _rule = rule; if (string.IsNullOrEmpty(rule.TypeName)) { _executor = new RegexRuleExecutor(); } else { Type t = Type.GetType(rule.TypeName); _executor = (IRuleExecutor)Activator.CreateInstance(t); } }
public static IRuleExecutor GetRuleExecutor(Rule rule) { if (containers.ContainsKey(rule.RuleExpressionType.ToString())) { return(containers[rule.RuleExpressionType.ToString()]); } IRuleExecutor ruleExecutor = null; switch (rule.RuleExpressionType) { default: ruleExecutor = new LambdaRuleExecutor(); break; /// 定义的其他类型 case RuleExpressionType.CompareNotContains: case RuleExpressionType.CompareContains: case RuleExpressionType.CompareEquals: case RuleExpressionType.CompareNotEquals: case RuleExpressionType.ValueNullOrEmpty: case RuleExpressionType.ValueExists: case RuleExpressionType.CompareGreater: case RuleExpressionType.CompareSmaller: if (containers.Any()) { var excutor = containers.First(exe => exe.Value.GetType() == typeof(CompareRuleExecutor)); if (excutor.Value != null) { return(excutor.Value); } } ruleExecutor = new CompareRuleExecutor(); break; } if (containers.ContainsKey(rule.RuleExpressionType.ToString())) { return(containers[rule.RuleExpressionType.ToString()]); } containers.Add(rule.RuleExpressionType.ToString(), ruleExecutor); return(ruleExecutor); }
public WorkflowRule(IRuleExecutor <TWorkflowStageRule> ruleExecutor, Func <BaseRule <TWorkflowRequest>, bool> ruleFunc) { RuleExecutor = ruleExecutor; RuleFunc = ruleFunc; }
public IsRequestDocumentHasStageByStageCodeAndDocumentCodesRule(IRuleExecutor ruleExecutor) { _ruleExecutor = ruleExecutor; }
public IsRequestDocumentHasStageByStageCodeAndDocumentCodeAndLaterCurrentStageRule(IRuleExecutor ruleExecutor) { _ruleExecutor = ruleExecutor; }
public override DiscountEngineResult Execute(CustomerInfo input, DiscountPolicyFacts fact, IRuleExecutor executor) { var firstTimeCustomerDiscount = executor.Execute(_firstTimeCustomerPolicy, input, fact); var frequentCustomerDiscount = executor.Execute(_frequentCustomerPolicy, input, fact); var bulkPurchaseDiscount = executor.Execute(_bulkPurchasePolicy, input, fact); return(new DiscountEngineResult { IsBulkPuchaseDiscountApplied = bulkPurchaseDiscount != default, IsFirstTimeDiscountApplied = firstTimeCustomerDiscount != default, IsFrequentPurchaseDiscountApplied = frequentCustomerDiscount != default, DiscountApplied = input.MaxAdjustmentsAllowed * (firstTimeCustomerDiscount + frequentCustomerDiscount + bulkPurchaseDiscount) });
public RuleContext(Rule rule, IDictionary <string, object> input) { this.rule = rule; this.input = input; this.executor = GetRuleExecutor(rule); }
public RuleContext(IRuleExecutor ruleExecutor) { this.executor = ruleExecutor; }
public abstract TResult Execute(TInput input, TFact fact, IRuleExecutor executor);
IRuleEngineResult IRuleEngine.Execute(IRuleEngineInput input, IRuleEngineFacts fact, IRuleExecutor executor) => Execute((TInput)input, (TFact)fact, executor);
public IsAnyDocumentHasOutgoingNumberAndSendDateByCodesRule(IRuleExecutor ruleExecutor) { _ruleExecutor = ruleExecutor; }