Module: Libis::Workflow::Status

Included in:
Base::WorkItem
Defined in:
lib/libis/workflow/status.rb

Instance Method Summary collapse

Instance Method Details

#check_status(state, task = nil) ⇒ Boolean

Check status of the object.

Parameters:

  • state (Symbol)

    status to look for

  • task (String) (defaults to: nil)

    name of task whose status to check

Returns:

  • (Boolean)

    true if the object status matches



74
75
76
# File 'lib/libis/workflow/status.rb', line 74

def check_status(state, task = nil)
  self.status(task) == state
end

#compare_status(state, task = nil) ⇒ Integer

Compare status with current status of the object.

Parameters:

  • state (Symbol)

Returns:

  • (Integer)

    1, 0 or -1 depending on which status is higher in rank



82
83
84
# File 'lib/libis/workflow/status.rb', line 82

def compare_status(state, task = nil)
  STATUS[self.status(task)] <=> STATUS[state]
end

#set_status(task, status) ⇒ Object

Changes the status of the object. The status changed is logged in the status_log with the current timestamp.

Parameters:

  • task (String)

    namepath of the task

  • status (Symbol)

    status to set



31
32
33
34
35
36
37
38
39
40
# File 'lib/libis/workflow/status.rb', line 31

def set_status(task, status)
  task = task.namepath if task.is_a?(Libis::Workflow::Task)
  log_entry = self.status_entry(task)
  if log_entry.nil? || STATUS[status_symbol(log_entry['status'])] > STATUS[status_symbol(status)]
    log_entry = self.add_status_log('task' => task, 'status' => status, 'created' => DateTime.now)
  end
  log_entry['status'] = status
  log_entry['updated'] = DateTime.now
  self.save!
end

#status(task = nil) ⇒ Symbol

Get last known status symbol for a given task

Parameters:

  • task (String) (defaults to: nil)

    task name to check item status for

Returns:

  • (Symbol)

    the status code



46
47
48
49
# File 'lib/libis/workflow/status.rb', line 46

def status(task = nil)
  entry = self.status_entry(task)
  status_symbol(entry['status']) rescue :NOT_STARTED
end

#status_label(task = nil) ⇒ String

Gets the last known status label of the object.

Parameters:

  • task (String) (defaults to: nil)

    name of task to get the status for

Returns:

  • (String)

    status label ( = task name + status )



64
65
66
67
# File 'lib/libis/workflow/status.rb', line 64

def status_label(task = nil)
  entry = self.status_entry(task)
  "#{entry['task'] rescue nil}#{entry['status'].capitalize rescue nil}"
end

#status_progress(task, progress = nil, max = nil) ⇒ Object

Update the progress of the working task

Parameters:

  • task (String)

    namepath of the task

  • progress (Integer) (defaults to: nil)

    progress indicator (as <progress> of <max> or as % if <max> not set). Default: 0

  • max (Integer) (defaults to: nil)

    max count.



90
91
92
93
94
95
96
97
# File 'lib/libis/workflow/status.rb', line 90

def status_progress(task, progress = nil, max = nil)
  log_entry = self.status_entry(task)
  log_entry ||= self.add_status_log('task' => task, 'status' => :STARTED, 'created' => DateTime.now)
  log_entry['progress'] = progress ? progress : (log_entry['progress'] || 0) + 1
  log_entry['max'] = max if max
  log_entry['updated'] = DateTime.now
  self.save!
end

#status_text(task = nil) ⇒ Symbol

Get last known status text for a given task

Parameters:

  • task (String) (defaults to: nil)

    task name to check item status for

Returns:

  • (Symbol)

    the status code



55
56
57
58
# File 'lib/libis/workflow/status.rb', line 55

def status_text(task = nil)
  entry = self.status_entry(task)
  status_string(entry['status']) rescue STATUS_TEXT.first
end