class Taskflow::Task

Public Instance Methods

go(sidekiq_logger) click to toggle source
# File lib/taskflow/task.rb, line 18
def go(sidekiq_logger)
    raise NotImplementedError
end
resume() click to toggle source
# File lib/taskflow/task.rb, line 22
def resume
    if self.state == 'paused' && self.result == 'error'
        self.flow.update_attributes! state: 'running'
        Taskflow::Worker.perform_async self.flow.id.to_s,self.id.to_s
    end
end
skip() click to toggle source
# File lib/taskflow/task.rb, line 39
def skip
    self.reload
    if self.state == 'paused'
        self.update_attributes! state: 'skipped'
        Taskflow::Worker.perform_async self.flow.id.to_s,self.id.to_s
    end
end
wakeup(arguments={}) click to toggle source
# File lib/taskflow/task.rb, line 29
def wakeup(arguments={})
    self.reload
    if self.state == 'paused' && self.result == 'suspend'
        self.data = self.data.merge arguments
        self.result = nil
        self.save
        Taskflow::Worker.perform_async self.flow.id.to_s,self.id.to_s
    end
end

Private Instance Methods

method_missing(name,*args) click to toggle source
Calls superclass method
# File lib/taskflow/task.rb, line 67
def method_missing(name,*args)
    if /^(set|append|clear)_(input|output|data)$/ =~ name.to_s
        act,fd = name.to_s.split '_'
        if act == 'set'
            return false unless args.first
            self.update_attributes! "#{fd}"=>args.first
        elsif act == 'append'
            return false unless args.first
            self.update_attributes! "#{fd}"=>self.send("#{fd}").merge(args.first)
        else
            self.update_attributes! "#{fd}"=>{}
        end
    else
        super
    end
end
remove_self_in_stream() click to toggle source
# File lib/taskflow/task.rb, line 49
def remove_self_in_stream
    downstream.delete self if downstream.include? self
    upstream.delete self if upstream.include? self
end
set_default_property() click to toggle source
# File lib/taskflow/task.rb, line 84
def set_default_property
    self.klass ||= self.class.to_s
    self.state ||= 'pending'
    self.input ||= {}
    self.output ||= {}
    self.data ||= {}
end
suspend() click to toggle source
# File lib/taskflow/task.rb, line 54
def suspend
    throw :control,:suspend
end
tflogger() click to toggle source
# File lib/taskflow/task.rb, line 58
def tflogger
    @tflogger ||= (
        _logger = flow.tflogger
        _logger.instance_variable_set '@step_id',self.index
        _logger.instance_variable_set '@writer',self.name
        _logger
    )
end