Class: RailsWorkflow::Process

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
HasContext, 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



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

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



38
39
40
# File 'app/models/rails_workflow/process.rb', line 38

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

Instance Method Details

#can_start?Boolean

Returns:

  • (Boolean)


53
54
55
56
# File 'app/models/rails_workflow/process.rb', line 53

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

#completeObject



62
63
64
65
# File 'app/models/rails_workflow/process.rb', line 62

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

#managerObject



24
25
26
# File 'app/models/rails_workflow/process.rb', line 24

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

#uncompleted?Boolean

Returns:

  • (Boolean)


42
43
44
45
# File 'app/models/rails_workflow/process.rb', line 42

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

#uncompleted_operationsObject

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



49
50
51
# File 'app/models/rails_workflow/process.rb', line 49

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

#unresolved_errorsObject



58
59
60
# File 'app/models/rails_workflow/process.rb', line 58

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