Module: WFlow::Process::ClassMethods

Defined in:
lib/w_flow/process.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#wflow_nodesObject (readonly)

Returns the value of attribute wflow_nodes.



22
23
24
# File 'lib/w_flow/process.rb', line 22

def wflow_nodes
  @wflow_nodes
end

Class Method Details

.extended(klass) ⇒ Object



24
25
26
# File 'lib/w_flow/process.rb', line 24

def self.extended(klass)
  klass.instance_variable_set('@wflow_nodes', [])
end

Instance Method Details

#data_accessor(*keys) ⇒ Object



32
33
34
35
# File 'lib/w_flow/process.rb', line 32

def data_accessor(*keys)
  data_writer(*keys)
  data_reader(*keys)
end

#data_reader(*keys) ⇒ Object



43
44
45
46
47
# File 'lib/w_flow/process.rb', line 43

def data_reader(*keys)
  keys.each do |key|
    define_method(key) { flow.data.send(key.to_s) }
  end
end

#data_writer(*keys) ⇒ Object



37
38
39
40
41
# File 'lib/w_flow/process.rb', line 37

def data_writer(*keys)
  keys.each do |key|
    define_method("#{key}=") { |val| flow.data.send("#{key}=", val) }
  end
end

#execute(*tasks, &block) ⇒ Object



49
50
51
52
53
# File 'lib/w_flow/process.rb', line 49

def execute(*tasks, &block)
  options = tasks.last.is_a?(Hash) ? tasks.pop : {}
  tasks << block if block_given?
  wflow_nodes << Node.build(tasks, options)
end

#inherited(klass) ⇒ Object



28
29
30
# File 'lib/w_flow/process.rb', line 28

def inherited(klass)
  klass.instance_variable_set('@wflow_nodes', wflow_nodes.dup)
end

#run(params = {}) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/w_flow/process.rb', line 55

def run(params = {})
  unless params.nil? || params.is_a?(Hash)
    raise InvalidArgument, INVALID_RUN_PARAMS
  end

  flow = Flow.new(params)

  ProcessWorker.new(self).run_as_main(flow)

  FlowReport.new(flow)
rescue ::StandardError => e
  raise unless Configuration.supress_errors?

  set_failure_and_log(message: e.message, backtrace: e.backtrace)

  FlowReport.new(flow)
end