Class: RailsWorkflow::Process

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
Status
Defined in:
app/models/rails_workflow/process.rb

Overview

Process stores service information including links to process template, all operations, parent operation, context etc.

Constant Summary

Constants included from Status

Status::CANCELED, Status::DONE, Status::ERROR, Status::IN_PROGRESS, Status::NOT_STARTED, Status::ROLLBACK, Status::SKIPPED, Status::WAITING

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.count_by_statusesObject



26
27
28
29
30
31
32
33
34
# File 'app/models/rails_workflow/process.rb', line 26

def self.count_by_statuses
  query = RailsWorkflow.config.sql_dialect::COUNT_STATUSES

  statuses = connection.select_all(query).rows

  statuses_array.map do |status|
    statuses.detect { |s| s.first.to_i == status }.try(:last).to_i
  end
end

.statuses_arrayObject



36
37
38
# File 'app/models/rails_workflow/process.rb', line 36

def self.statuses_array
  (NOT_STARTED..ROLLBACK).to_a
end

Instance Method Details

#can_start?Boolean

Returns:

  • (Boolean)


51
52
53
54
# File 'app/models/rails_workflow/process.rb', line 51

def can_start?
  [Status::NOT_STARTED, Status::IN_PROGRESS]
    .include?(status) && !operations.empty?
end

#completeObject



60
61
62
63
# File 'app/models/rails_workflow/process.rb', line 60

def complete
  self.status = Status::DONE
  save
end

#managerObject



22
23
24
# File 'app/models/rails_workflow/process.rb', line 22

def manager
  @manager ||= template.manager_class.new(self)
end

#uncompleted?Boolean

Returns:

  • (Boolean)


40
41
42
43
# File 'app/models/rails_workflow/process.rb', line 40

def uncompleted?
  uncompleted_statuses.include?(status) &&
    uncompleted_operations.size.zero?
end

#uncompleted_operationsObject

Returns set or operation that not yet completed. Operation complete in DONE, SKIPPED, CANCELED, etc many other statuses



47
48
49
# File 'app/models/rails_workflow/process.rb', line 47

def uncompleted_operations
  operations.reject(&:completed?)
end

#unresolved_errorsObject



56
57
58
# File 'app/models/rails_workflow/process.rb', line 56

def unresolved_errors
  workflow_errors.unresolved.where.not(id: id)
end