/// <summary> /// Method to call when this rule needs to be evaluated. /// This will use <see cref="EvaluateFunction(WorkspaceModel, NodeModel)"/> to evaluate the rule. /// </summary> /// <param name="workspaceModel"></param> /// <param name="changedEvent"></param> /// <param name="modifiedNode"></param> internal void Evaluate(WorkspaceModel workspaceModel, string changedEvent, NodeModel modifiedNode = null) { var pair = EvaluateFunction(workspaceModel, changedEvent, modifiedNode); if (pair is null) { return; } var result = new GraphRuleEvaluationResult(this.Id, pair.Item1, this.SeverityCode, pair.Item2); OnRuleEvaluated(result); }
private protected sealed override List <IRuleEvaluationResult> InitializeRule(WorkspaceModel workspaceModel) { var pairs = this.InitFunction(workspaceModel); var results = new List <IRuleEvaluationResult>(); foreach (var pair in pairs) { if (pair.Item1 == RuleEvaluationStatusEnum.Passed) { continue; } var result = new GraphRuleEvaluationResult(this.Id, pair.Item1, this.SeverityCode, pair.Item2); results.Add(result); } return(results); }