Class: RailsWorkflow::Process
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- RailsWorkflow::Process
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_statuses ⇒ Object
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_array ⇒ Object
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
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
|
#complete ⇒ Object
62
63
64
65
|
# File 'app/models/rails_workflow/process.rb', line 62
def complete
self.status = Status::DONE
save
end
|
#manager ⇒ Object
24
25
26
|
# File 'app/models/rails_workflow/process.rb', line 24
def manager
@manager ||= template.manager_class.new(self)
end
|
#uncompleted? ⇒ 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_operations ⇒ Object
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_errors ⇒ Object
58
59
60
|
# File 'app/models/rails_workflow/process.rb', line 58
def unresolved_errors
workflow_errors.unresolved.where.not(id: id)
end
|