class Onuro::Event
Attributes
event_strategy[RW]
name[R]
ruleset_stage[R]
Public Class Methods
new(name, ruleset_stage: [], event_strategy: DefaultEventStrategy.new)
click to toggle source
# File lib/onuro/event.rb, line 17 def initialize(name, ruleset_stage: [], event_strategy: DefaultEventStrategy.new) self.name = name self.event_strategy = event_strategy @ruleset_stage = ruleset_stage end
Public Instance Methods
add_rule_stage(rule_stage)
click to toggle source
# File lib/onuro/event.rb, line 27 def add_rule_stage(rule_stage) ruleset_stage << rule_stage end
add_ruleset_stage(ruleset_stage)
click to toggle source
# File lib/onuro/event.rb, line 23 def add_ruleset_stage(ruleset_stage) @ruleset_stage += ruleset_stage end
execute(context = {})
click to toggle source
# File lib/onuro/event.rb, line 31 def execute(context = {}) result = execution_flow(context) execution_result(SUCCESSFUL, result[:processed], result[:failed]) end
name=(name)
click to toggle source
# File lib/onuro/event.rb, line 11 def name=(name) raise InvalidEventNameException if name.empty? @name = name.downcase.to_sym end
Private Instance Methods
execution_flow(context = {})
click to toggle source
# File lib/onuro/event.rb, line 47 def execution_flow(context = {}) result = Hash.new(0) ruleset_stage.each do |rule_stage| proc_exec = event_strategy.before_rule_exec(rule_stage, context) next unless proc_exec result_status = rule_stage.rule.new.execute(context) event_strategy.after_rule_exec(rule_stage, context, result) result[:processed] += 1 if result_status == SUCCESSFUL result[:failed] += 1 if result_status == FAILURE end result end
execution_result(status, processed, failed)
click to toggle source
# File lib/onuro/event.rb, line 38 def execution_result(status, processed, failed) result = Hash.new(0) result[:status] = status result[:event_name] = name result[:processed_rules] = processed result[:failed_rules] = failed result end