Class: Sxn::Rules::RulesEngine::ExecutionResult

Inherits:
Object
  • Object
show all
Defined in:
lib/sxn/rules/rules_engine.rb

Overview

Execution result for rule application

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeExecutionResult

Returns a new instance of ExecutionResult.



41
42
43
44
45
46
47
48
49
# File 'lib/sxn/rules/rules_engine.rb', line 41

def initialize
  @applied_rules = []
  @failed_rules = []
  @skipped_rules = []
  @total_duration = 0
  @errors = []
  @start_time = nil
  @end_time = nil
end

Instance Attribute Details

#applied_rulesObject (readonly)

Returns the value of attribute applied_rules.



35
36
37
# File 'lib/sxn/rules/rules_engine.rb', line 35

def applied_rules
  @applied_rules
end

#errorsObject (readonly)

Returns the value of attribute errors.



35
36
37
# File 'lib/sxn/rules/rules_engine.rb', line 35

def errors
  @errors
end

#failed_rulesObject (readonly)

Returns the value of attribute failed_rules.



35
36
37
# File 'lib/sxn/rules/rules_engine.rb', line 35

def failed_rules
  @failed_rules
end

#total_durationObject (readonly)

Returns the value of attribute total_duration.



35
36
37
# File 'lib/sxn/rules/rules_engine.rb', line 35

def total_duration
  @total_duration
end

Instance Method Details

#add_applied_rule(rule) ⇒ Object



60
61
62
# File 'lib/sxn/rules/rules_engine.rb', line 60

def add_applied_rule(rule)
  @applied_rules << rule
end

#add_engine_error(error) ⇒ Object



73
74
75
# File 'lib/sxn/rules/rules_engine.rb', line 73

def add_engine_error(error)
  @errors << { rule: "engine", error: error }
end

#add_failed_rule(rule, error) ⇒ Object



64
65
66
67
# File 'lib/sxn/rules/rules_engine.rb', line 64

def add_failed_rule(rule, error)
  @failed_rules << rule
  @errors << { rule: rule.name, error: error }
end

#add_skipped_rule(rule, reason) ⇒ Object



69
70
71
# File 'lib/sxn/rules/rules_engine.rb', line 69

def add_skipped_rule(rule, reason)
  @skipped_rules << { rule: rule, reason: reason }
end

#finish!Object



55
56
57
58
# File 'lib/sxn/rules/rules_engine.rb', line 55

def finish!
  @end_time = Time.now
  @total_duration = @end_time - @start_time if @start_time
end

#skipped_rulesObject



37
38
39
# File 'lib/sxn/rules/rules_engine.rb', line 37

def skipped_rules
  @skipped_rules.map { |s| s[:rule] }
end

#start!Object



51
52
53
# File 'lib/sxn/rules/rules_engine.rb', line 51

def start!
  @start_time = Time.now
end

#success?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/sxn/rules/rules_engine.rb', line 77

def success?
  @failed_rules.empty? && @errors.empty?
end

#to_hObject



85
86
87
88
89
90
91
92
93
94
95
# File 'lib/sxn/rules/rules_engine.rb', line 85

def to_h
  {
    success: success?,
    total_rules: total_rules,
    applied_rules: @applied_rules.map(&:name),
    failed_rules: @failed_rules.map(&:name),
    skipped_rules: @skipped_rules.map { |sr| sr[:rule].name },
    total_duration: @total_duration,
    errors: @errors.map { |e| { rule: e[:rule], message: e[:error].message } }
  }
end

#total_rulesObject



81
82
83
# File 'lib/sxn/rules/rules_engine.rb', line 81

def total_rules
  @applied_rules.size + @failed_rules.size + @skipped_rules.size
end