rails_workflow 0.3.9 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +2 -0
- data/app/concerns/rails_workflow/operation_status.rb +2 -0
- data/app/concerns/rails_workflow/operation_templates/assignments.rb +3 -1
- data/app/concerns/rails_workflow/operation_templates/dependencies.rb +18 -18
- data/app/concerns/rails_workflow/operations/assignments.rb +7 -5
- data/app/concerns/rails_workflow/operations/dependencies.rb +2 -0
- data/app/concerns/rails_workflow/status.rb +11 -15
- data/app/concerns/rails_workflow/user/assignment.rb +2 -0
- data/app/concerns/rails_workflow/uuid.rb +2 -0
- data/app/controllers/rails_workflow/application_controller.rb +2 -0
- data/app/controllers/rails_workflow/errors_controller.rb +2 -0
- data/app/controllers/rails_workflow/operation_templates_controller.rb +3 -1
- data/app/controllers/rails_workflow/operations_controller.rb +3 -1
- data/app/controllers/rails_workflow/process_templates_controller.rb +10 -8
- data/app/controllers/rails_workflow/processes_controller.rb +10 -8
- data/app/decorators/rails_workflow/context_decorator.rb +2 -0
- data/app/decorators/rails_workflow/decorator.rb +2 -0
- data/app/decorators/rails_workflow/operation_decorator.rb +2 -0
- data/app/decorators/rails_workflow/operation_helper_decorator.rb +2 -0
- data/app/decorators/rails_workflow/operation_template_decorator.rb +2 -0
- data/app/decorators/rails_workflow/paginating_decorator.rb +2 -0
- data/app/decorators/rails_workflow/process_decorator.rb +2 -0
- data/app/decorators/rails_workflow/process_template_decorator.rb +2 -0
- data/app/decorators/rails_workflow/status_decorator.rb +2 -0
- data/app/helpers/rails_workflow/application_helper.rb +2 -0
- data/app/jobs/rails_workflow/operation_execution_job.rb +11 -1
- data/app/models/rails_workflow/context.rb +3 -1
- data/app/models/rails_workflow/error.rb +23 -50
- data/app/models/rails_workflow/operation.rb +39 -3
- data/app/models/rails_workflow/operation_template.rb +2 -2
- data/app/models/rails_workflow/process.rb +34 -5
- data/app/models/rails_workflow/process_template.rb +12 -8
- data/app/models/rails_workflow/user_by_group_operation.rb +2 -0
- data/app/models/rails_workflow/user_by_role_operation.rb +2 -0
- data/app/models/rails_workflow/user_operation.rb +2 -0
- data/app/serializers/rails_workflow/operation_template_serializer.rb +2 -0
- data/app/serializers/rails_workflow/process_template_serializer.rb +2 -0
- data/app/services/rails_workflow/default_importer_preprocessor.rb +2 -0
- data/app/services/rails_workflow/process_importer.rb +2 -0
- data/app/views/rails_workflow/processes/index.html.slim +5 -5
- data/config/initializers/rails_workflow.rb +3 -3
- data/config/routes.rb +4 -2
- data/db/migrate/20150630174700_create_workflow_processes.rb +86 -84
- data/lib/generators/rails_workflow/install/install_generator.rb +2 -0
- data/lib/generators/rails_workflow/install/templates/create_workflow_processes.rb +86 -84
- data/lib/rails_workflow/config.rb +65 -24
- data/lib/rails_workflow/db/mysql.rb +3 -1
- data/lib/rails_workflow/db/pg.rb +3 -1
- data/lib/rails_workflow/dependency_resolver.rb +74 -0
- data/lib/rails_workflow/engine.rb +3 -1
- data/lib/rails_workflow/error_builder.rb +57 -0
- data/lib/rails_workflow/error_resolver.rb +72 -0
- data/lib/rails_workflow/operation_builder.rb +95 -0
- data/lib/rails_workflow/operation_runner.rb +113 -0
- data/lib/rails_workflow/process_builder.rb +57 -0
- data/lib/rails_workflow/process_manager.rb +66 -0
- data/lib/rails_workflow/process_runner.rb +72 -0
- data/lib/rails_workflow/version.rb +3 -1
- data/lib/rails_workflow.rb +2 -0
- data/lib/tasks/rails_workflow_tasks.rake +1 -0
- data/spec/concerns/status_spec.rb +25 -0
- data/spec/controllers/rails_workflow/operation_templates_controller_spec.rb +2 -0
- data/spec/controllers/rails_workflow/operations_controller_spec.rb +2 -0
- data/spec/controllers/rails_workflow/process_templates_controller_spec.rb +2 -0
- data/spec/controllers/rails_workflow/processes_controller_spec.rb +3 -1
- data/spec/dummy/Rakefile +2 -0
- data/spec/dummy/app/controllers/application_controller.rb +2 -0
- data/spec/dummy/app/controllers/leads_controller.rb +2 -0
- data/spec/dummy/app/controllers/sales_contacts_controller.rb +2 -0
- data/spec/dummy/app/decorators/lead_decorator.rb +2 -0
- data/spec/dummy/app/decorators/sales_contact_decorator.rb +2 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/leads_helper.rb +2 -0
- data/spec/dummy/app/helpers/sales_contacts_helper.rb +2 -0
- data/spec/dummy/app/models/bad_operation.rb +2 -0
- data/spec/dummy/app/models/bad_operation_template.rb +2 -0
- data/spec/dummy/app/models/lead.rb +2 -0
- data/spec/dummy/app/models/sales_contact.rb +2 -0
- data/spec/dummy/app/models/user.rb +2 -0
- data/spec/dummy/bin/bundle +2 -0
- data/spec/dummy/bin/rails +2 -0
- data/spec/dummy/bin/rake +2 -0
- data/spec/dummy/config/application.rb +2 -0
- data/spec/dummy/config/boot.rb +2 -0
- data/spec/dummy/config/database.yml.semaphore +2 -2
- data/spec/dummy/config/environment.rb +2 -0
- data/spec/dummy/config/environments/development.rb +2 -0
- data/spec/dummy/config/environments/production.rb +2 -0
- data/spec/dummy/config/environments/test.rb +2 -0
- data/spec/dummy/config/initializers/assets.rb +2 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +1 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +2 -0
- data/spec/dummy/config/initializers/devise.rb +2 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +2 -0
- data/spec/dummy/config/initializers/inflections.rb +1 -0
- data/spec/dummy/config/initializers/mime_types.rb +1 -0
- data/spec/dummy/config/initializers/session_store.rb +2 -0
- data/spec/dummy/config/initializers/workflow.rb +2 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +2 -0
- data/spec/dummy/config/routes.rb +2 -0
- data/spec/dummy/config.ru +2 -0
- data/spec/dummy/db/migrate/20150127171613_devise_create_users.rb +2 -0
- data/spec/dummy/db/migrate/20150130042852_create_sales_contacts.rb +2 -0
- data/spec/dummy/db/migrate/20150130043008_create_leads.rb +2 -0
- data/spec/dummy/log/development.log +110 -0
- data/spec/dummy/log/test.log +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7O/7O5OddMZvWFGpj71BCdc0vA55rhj4YPoL0XjBV4_OYk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cy/CyixQwp8QvorgpRadtYf6_zY35nZZp0JmrhkDN16XPM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FW/FWR5Q7EP17cTcY35R1MscF6MX2HYiH5I2ZII89YLYxc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HQ/HQuQO1k4kOyLSDXJEc8p-XR2agdkPF7mIFyh2noiNrU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N4/N4e3G5QNTts2OVqkL0kxoP1xnAdDWnumpnH1m6WAsuY.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rs/RsIG_ias53xeb4WHWRodcMcDmVyz1QvLQNy4gV2iBSo.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WI/WI2XYMfwCaPWcjvvouKVltl9oKqKZL-BHePPLhC-rzw.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yc/YcbQRZWzddLfawePxNTEXcFFiS7asAyrujZzciT99l0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ai/aihcJWCIJGiHDpamul8bzy4jMsxnhewX6XWtkdsQ9dc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fR/fRVQN4mU7z3MVJD9u1LMq8idpOH8o2tFh_YouMYGAM8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gU/gUFNMb7SgxFyz5ZZcGfp-VYRVIw711HUeiWonMzYrcU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h86FNb4MxO5dq40P8KcCgGwZ_uqd8nn_O2fMWGDApW8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q7/q7cZDJXZFXTklMF8JAQSMr-MBxOKc7q1vZAPPR5RBf4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s9/s98GbJDqEe4PG3moRH6h-ukIZmQz9Frq4LO_Z9vCBLM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xX/xXCd205lXu7u_BuyBL0kfZwkBGJLvocHDItBfU6tMm4.cache +2 -0
- data/spec/factories/context.rb +2 -0
- data/spec/factories/operation_templates.rb +2 -0
- data/spec/factories/operations.rb +3 -1
- data/spec/factories/process_templates.rb +2 -0
- data/spec/factories/processes.rb +3 -1
- data/spec/factories/user.rb +2 -0
- data/spec/factories/workflow_errors.rb +2 -0
- data/spec/features/operations_spec.rb +2 -0
- data/spec/features/process_template_spec.rb +2 -0
- data/spec/lib/error_builder_spec.rb +137 -0
- data/spec/lib/error_resolver_spec.rb +182 -0
- data/spec/lib/operation_builder_spec.rb +69 -0
- data/spec/lib/process_builder_spec.rb +19 -0
- data/spec/{core/rails_workflow → lib}/process_manager_spec.rb +17 -27
- data/spec/models/rails_workflow/context_spec.rb +6 -3
- data/spec/models/rails_workflow/error_spec.rb +20 -147
- data/spec/models/rails_workflow/operation_spec.rb +64 -97
- data/spec/models/rails_workflow/operation_template_spec.rb +24 -11
- data/spec/models/rails_workflow/process_spec.rb +5 -2
- data/spec/models/rails_workflow/process_template_spec.rb +2 -36
- data/spec/rails_helper.rb +2 -0
- data/spec/serializers/process_template_serializer_spec.rb +2 -0
- data/spec/services/process_importer_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/controller_macros.rb +2 -0
- data/spec/support/pages/operations.rb +2 -0
- data/spec/support/rails_workflow/custom_operation.rb +2 -0
- data/spec/support/rails_workflow/custom_operation_template.rb +2 -0
- data/spec/{core → support}/rails_workflow/prepare_template.rb +3 -1
- data/spec/support/workflow_helper.rb +2 -0
- metadata +54 -28
- data/app/concerns/rails_workflow/operation_templates/default_builder.rb +0 -56
- data/app/concerns/rails_workflow/operations/default_runner.rb +0 -121
- data/app/concerns/rails_workflow/process_templates/default_builder.rb +0 -52
- data/app/concerns/rails_workflow/processes/default_runner.rb +0 -64
- data/app/concerns/rails_workflow/processes/dependency_resolver.rb +0 -54
- data/app/concerns/rails_workflow/reset_cache.rb +0 -13
- data/app/jobs/rails_workflow/operation_error_job.rb +0 -40
- data/app/managers/rails_workflow/process_manager.rb +0 -40
@@ -1,15 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsWorkflow
|
2
4
|
# Operation is a key building block for a Rails Workflow.
|
3
5
|
# This model is used to save operation meta data, describe relation
|
4
6
|
# with operation context etc.
|
5
7
|
class Operation < ActiveRecord::Base
|
6
8
|
include OperationStatus
|
7
|
-
|
8
|
-
include Operations::DefaultRunner
|
9
9
|
include Operations::Dependencies
|
10
10
|
include Operations::Assignments
|
11
11
|
|
12
12
|
belongs_to :process, class_name: 'RailsWorkflow::Process'
|
13
|
+
alias parent process
|
13
14
|
belongs_to :template, class_name: 'RailsWorkflow::OperationTemplate'
|
14
15
|
belongs_to :child_process, class_name: 'RailsWorkflow::Process'
|
15
16
|
has_one :context, class_name: 'RailsWorkflow::Context', as: :parent
|
@@ -18,9 +19,10 @@ module RailsWorkflow
|
|
18
19
|
delegate :data, to: :context
|
19
20
|
delegate :role, to: :template
|
20
21
|
delegate :group, to: :template
|
22
|
+
delegate :start, :complete, :skip, :cancel, to: :runner
|
21
23
|
|
22
24
|
scope :with_child_process, -> { where.not(child_process: nil) }
|
23
|
-
scope :
|
25
|
+
scope :uncompleted, -> { where(status: user_ready_statuses) }
|
24
26
|
|
25
27
|
def instruction
|
26
28
|
template.instruction
|
@@ -44,10 +46,44 @@ module RailsWorkflow
|
|
44
46
|
assignment && assignment == user
|
45
47
|
end
|
46
48
|
|
49
|
+
def execute
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
# This method allows you to add requirements for operation to start.
|
54
|
+
# For example some operation can't start because of some process
|
55
|
+
# or overall system conditions.
|
56
|
+
# By default any operation can start :)
|
57
|
+
def can_start?
|
58
|
+
status.in? [Status::NOT_STARTED, Status::IN_PROGRESS]
|
59
|
+
end
|
60
|
+
|
61
|
+
def completed?
|
62
|
+
completed_statuses.include? status
|
63
|
+
end
|
64
|
+
|
65
|
+
def completable?
|
66
|
+
child_process_done?
|
67
|
+
end
|
68
|
+
|
47
69
|
def can_be_continued_by?(user, current_operation)
|
48
70
|
waiting? &&
|
49
71
|
assigned_to?(user) &&
|
50
72
|
(current_operation.nil? || current_operation != self)
|
51
73
|
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def child_process_done?
|
78
|
+
child_process.nil? || child_process.status == Status::DONE
|
79
|
+
end
|
80
|
+
|
81
|
+
def config
|
82
|
+
RailsWorkflow.config
|
83
|
+
end
|
84
|
+
|
85
|
+
def runner
|
86
|
+
@runner ||= config.operation_runner.new(self)
|
87
|
+
end
|
52
88
|
end
|
53
89
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsWorkflow
|
2
4
|
class OperationTemplate < ActiveRecord::Base
|
3
5
|
include OperationStatus
|
4
6
|
include RailsWorkflow::Uuid
|
5
7
|
include OperationTemplates::Dependencies
|
6
8
|
include OperationTemplates::Assignments
|
7
|
-
include OperationTemplates::DefaultBuilder
|
8
|
-
include ResetCache
|
9
9
|
|
10
10
|
belongs_to :process_template, class_name: 'RailsWorkflow::ProcessTemplate'
|
11
11
|
belongs_to :child_process, class_name: 'RailsWorkflow::ProcessTemplate'
|
@@ -1,19 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsWorkflow
|
4
|
+
# Process stores service information including links to process template,
|
5
|
+
# all operations, parent operation, context etc.
|
2
6
|
class Process < ActiveRecord::Base
|
3
7
|
include Status
|
4
|
-
include Processes::DependencyResolver
|
5
|
-
include Processes::DefaultRunner
|
6
8
|
|
7
9
|
belongs_to :template, class_name: 'RailsWorkflow::ProcessTemplate'
|
8
10
|
has_many :operations, class_name: 'RailsWorkflow::Operation'
|
9
11
|
has_one :parent_operation,
|
10
|
-
|
11
|
-
|
12
|
+
class_name: 'RailsWorkflow::Operation',
|
13
|
+
foreign_key: :child_process_id
|
14
|
+
|
15
|
+
alias parent parent_operation
|
12
16
|
has_one :context, class_name: 'RailsWorkflow::Context', as: :parent
|
13
17
|
has_many :workflow_errors, class_name: 'RailsWorkflow::Error', as: :parent
|
14
18
|
|
15
19
|
delegate :data, to: :context
|
16
|
-
scope :by_status, ->
|
20
|
+
scope :by_status, ->(status) { where(status: status) }
|
17
21
|
|
18
22
|
def manager
|
19
23
|
@manager ||= template.manager_class.new(self)
|
@@ -32,5 +36,30 @@ module RailsWorkflow
|
|
32
36
|
def self.statuses_array
|
33
37
|
(NOT_STARTED..ROLLBACK).to_a
|
34
38
|
end
|
39
|
+
|
40
|
+
def uncompleted?
|
41
|
+
uncompleted_statuses.include?(status) &&
|
42
|
+
uncompleted_operations.size.zero?
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns set or operation that not yet completed.
|
46
|
+
# Operation complete in DONE, SKIPPED, CANCELED, etc many other statuses
|
47
|
+
def uncompleted_operations
|
48
|
+
operations.reject(&:completed?)
|
49
|
+
end
|
50
|
+
|
51
|
+
def can_start?
|
52
|
+
[Status::NOT_STARTED, Status::IN_PROGRESS]
|
53
|
+
.include?(status) && !operations.empty?
|
54
|
+
end
|
55
|
+
|
56
|
+
def unresolved_errors
|
57
|
+
workflow_errors.unresolved.where.not(id: id)
|
58
|
+
end
|
59
|
+
|
60
|
+
def complete
|
61
|
+
self.status = Status::DONE
|
62
|
+
save
|
63
|
+
end
|
35
64
|
end
|
36
65
|
end
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RailsWorkflow
|
2
4
|
class ProcessTemplate < ActiveRecord::Base
|
3
|
-
include ProcessTemplates::DefaultBuilder
|
4
5
|
include RailsWorkflow::Uuid
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
has_many :operations,
|
7
|
+
-> { order(id: :asc) },
|
8
|
+
class_name: 'OperationTemplate'
|
8
9
|
|
9
10
|
def other_processes
|
10
11
|
ProcessTemplate.where.not(id: id)
|
@@ -13,15 +14,17 @@ module RailsWorkflow
|
|
13
14
|
# we try to read process class from template
|
14
15
|
# and set default Workflow::Process if blank process_class on template
|
15
16
|
def process_class
|
16
|
-
get_class_for :process_class,
|
17
|
+
get_class_for :process_class,
|
18
|
+
RailsWorkflow.config.process_class
|
17
19
|
end
|
18
20
|
|
19
21
|
def manager_class
|
20
|
-
get_class_for
|
22
|
+
get_class_for(:manager_class,
|
23
|
+
RailsWorkflow.config.manager_class)
|
21
24
|
end
|
22
25
|
|
23
26
|
def independent_operations
|
24
|
-
operations.
|
27
|
+
operations.independent_only.to_a
|
25
28
|
end
|
26
29
|
|
27
30
|
# here we calculate template operations that depends on
|
@@ -29,7 +32,8 @@ module RailsWorkflow
|
|
29
32
|
def dependent_operations(operation)
|
30
33
|
operations.select do |top|
|
31
34
|
top.dependencies.select do |dp|
|
32
|
-
dp['id'] == operation.template.id &&
|
35
|
+
dp['id'] == operation.template.id &&
|
36
|
+
dp['statuses'].include?(operation.status)
|
33
37
|
end.present?
|
34
38
|
end
|
35
39
|
end
|
@@ -14,19 +14,19 @@ ol.breadcrumb.alert-warning
|
|
14
14
|
span.badge< = @statistic[:all]
|
15
15
|
= link_to processes_path(filter: {status: "in_progress"}), class: "btn btn-primary" do
|
16
16
|
| In progress
|
17
|
-
span.badge< = @statistic[:statuses][RailsWorkflow::
|
17
|
+
span.badge< = @statistic[:statuses][RailsWorkflow::Status::IN_PROGRESS]
|
18
18
|
= link_to processes_path(filter: {status: "done"}), class: "btn btn-success" do
|
19
19
|
| Done
|
20
|
-
span.badge< = @statistic[:statuses][RailsWorkflow::
|
20
|
+
span.badge< = @statistic[:statuses][RailsWorkflow::Status::DONE]
|
21
21
|
= link_to processes_path(filter: {status: "waiting"}), class: "btn btn-info" do
|
22
22
|
| Waiting
|
23
|
-
span.badge< = @statistic[:statuses][RailsWorkflow::
|
23
|
+
span.badge< = @statistic[:statuses][RailsWorkflow::Status::WAITING]
|
24
24
|
= link_to processes_path(filter: {status: "not_started"}), class: "btn btn-warning" do
|
25
25
|
| Not Started
|
26
|
-
span.badge< = @statistic[:statuses][RailsWorkflow::
|
26
|
+
span.badge< = @statistic[:statuses][RailsWorkflow::Status::NOT_STARTED]
|
27
27
|
= link_to processes_path(filter: {status: "error"}), class: "btn btn-danger" do
|
28
28
|
| Error
|
29
|
-
span.badge< = @statistic[:statuses][RailsWorkflow::
|
29
|
+
span.badge< = @statistic[:statuses][RailsWorkflow::Status::ERROR]
|
30
30
|
|
31
31
|
table.table.table-striped.table-hover
|
32
32
|
thead
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class ActionController::Base
|
2
4
|
def set_current_operation
|
3
5
|
session[:current_operation_id] = @operation.id
|
@@ -20,14 +22,12 @@ class ActionController::Base
|
|
20
22
|
else
|
21
23
|
|
22
24
|
@current_workflow_operation = begin
|
23
|
-
|
24
|
-
if RailsWorkflow::Operation.exists?(id: operation_id, status: RailsWorkflow::Operation::WAITING)
|
25
|
+
if RailsWorkflow::Operation.exists?(id: operation_id, status: RailsWorkflow::Status::WAITING)
|
25
26
|
operation = RailsWorkflow::Operation.find(operation_id)
|
26
27
|
RailsWorkflow::OperationHelperDecorator.decorate(operation)
|
27
28
|
else
|
28
29
|
clear_current_operation
|
29
30
|
end
|
30
|
-
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RailsWorkflow::Engine.routes.draw do
|
2
|
-
resources :operations, only: [
|
4
|
+
resources :operations, only: %i[index show] do
|
3
5
|
collection do
|
4
6
|
get :complete
|
5
7
|
get :skip
|
@@ -20,7 +22,7 @@ RailsWorkflow::Engine.routes.draw do
|
|
20
22
|
put :retry
|
21
23
|
end
|
22
24
|
end
|
23
|
-
resources :operations, except: [
|
25
|
+
resources :operations, except: %i[create update destroy] do
|
24
26
|
resources :errors, only: [:retry] do
|
25
27
|
member do
|
26
28
|
put :retry
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class CreateWorkflowProcesses < ActiveRecord::Migration
|
2
4
|
def change
|
3
5
|
create_tables
|
@@ -8,12 +10,12 @@ class CreateWorkflowProcesses < ActiveRecord::Migration
|
|
8
10
|
|
9
11
|
def create_tables
|
10
12
|
[
|
11
|
-
[
|
12
|
-
[
|
13
|
-
[
|
14
|
-
[
|
15
|
-
[
|
16
|
-
[
|
13
|
+
%i[workflow_processes rails_workflow_processes],
|
14
|
+
%i[workflow_operations rails_workflow_operations],
|
15
|
+
%i[workflow_process_templates rails_workflow_process_templates],
|
16
|
+
%i[workflow_operation_templates rails_workflow_operation_templates],
|
17
|
+
%i[workflow_contexts rails_workflow_contexts],
|
18
|
+
%i[workflow_errors rails_workflow_errors]
|
17
19
|
].map do |names|
|
18
20
|
rename_table names[0], names[1] if table_exists? names[0]
|
19
21
|
|
@@ -23,13 +25,13 @@ class CreateWorkflowProcesses < ActiveRecord::Migration
|
|
23
25
|
|
24
26
|
def create_indexes
|
25
27
|
[
|
26
|
-
[:rails_workflow_contexts, [
|
27
|
-
[:rails_workflow_errors, [
|
28
|
-
[
|
29
|
-
[
|
30
|
-
[
|
31
|
-
[
|
32
|
-
[
|
28
|
+
[:rails_workflow_contexts, %i[parent_id parent_type]],
|
29
|
+
[:rails_workflow_errors, %i[parent_id parent_type]],
|
30
|
+
%i[rails_workflow_operation_templates process_template_id],
|
31
|
+
%i[rails_workflow_operation_templates uuid],
|
32
|
+
%i[rails_workflow_process_templates uuid],
|
33
|
+
%i[rails_workflow_operations process_id],
|
34
|
+
%i[rails_workflow_operations template_id]
|
33
35
|
].each do |idx|
|
34
36
|
add_index idx[0], idx[1] unless index_exists? idx[0], idx[1]
|
35
37
|
end
|
@@ -38,93 +40,93 @@ class CreateWorkflowProcesses < ActiveRecord::Migration
|
|
38
40
|
def create_columns
|
39
41
|
{
|
40
42
|
rails_workflow_contexts: [
|
41
|
-
[
|
42
|
-
[
|
43
|
-
[
|
44
|
-
[
|
45
|
-
[
|
43
|
+
%i[integer parent_id],
|
44
|
+
%i[string parent_type],
|
45
|
+
%i[text body],
|
46
|
+
%i[datetime created_at],
|
47
|
+
%i[datetime updated_at]
|
46
48
|
],
|
47
49
|
|
48
50
|
rails_workflow_errors: [
|
49
|
-
[
|
50
|
-
[
|
51
|
-
[
|
52
|
-
[
|
53
|
-
[
|
54
|
-
[
|
55
|
-
[
|
51
|
+
%i[string message],
|
52
|
+
%i[text stack_trace],
|
53
|
+
%i[integer parent_id],
|
54
|
+
%i[string parent_type],
|
55
|
+
%i[datetime created_at],
|
56
|
+
%i[datetime updated_at],
|
57
|
+
%i[boolean resolved]
|
56
58
|
],
|
57
59
|
|
58
60
|
rails_workflow_operation_templates: [
|
59
|
-
[
|
60
|
-
[
|
61
|
+
%i[string title],
|
62
|
+
%i[string version],
|
61
63
|
# [:uuid, :uuid],
|
62
|
-
[
|
63
|
-
[
|
64
|
-
[
|
65
|
-
[
|
66
|
-
[
|
67
|
-
[
|
68
|
-
[
|
69
|
-
[
|
70
|
-
[
|
71
|
-
[
|
72
|
-
[
|
73
|
-
[
|
74
|
-
[
|
75
|
-
[
|
76
|
-
[
|
77
|
-
[
|
78
|
-
[
|
79
|
-
[
|
80
|
-
[
|
64
|
+
%i[string uuid],
|
65
|
+
%i[string tag],
|
66
|
+
%i[text source],
|
67
|
+
%i[text dependencies],
|
68
|
+
%i[string operation_class],
|
69
|
+
%i[integer process_template_id],
|
70
|
+
%i[datetime created_at],
|
71
|
+
%i[datetime updated_at],
|
72
|
+
%i[boolean async],
|
73
|
+
%i[integer child_process_id],
|
74
|
+
%i[integer assignment_id],
|
75
|
+
%i[string assignment_type],
|
76
|
+
%i[string kind],
|
77
|
+
%i[string role],
|
78
|
+
%i[string group],
|
79
|
+
%i[text instruction],
|
80
|
+
%i[boolean is_background],
|
81
|
+
%i[string type],
|
82
|
+
%i[string partial_name]
|
81
83
|
],
|
82
84
|
|
83
85
|
rails_workflow_operations: [
|
84
|
-
[
|
85
|
-
[
|
86
|
-
[
|
87
|
-
[
|
88
|
-
[
|
89
|
-
[
|
90
|
-
[
|
91
|
-
[
|
92
|
-
[
|
93
|
-
[
|
94
|
-
[
|
95
|
-
[
|
96
|
-
[
|
97
|
-
[
|
98
|
-
[
|
99
|
-
[
|
100
|
-
[
|
101
|
-
[
|
86
|
+
%i[integer status],
|
87
|
+
%i[boolean async],
|
88
|
+
%i[string version],
|
89
|
+
%i[string tag],
|
90
|
+
%i[string title],
|
91
|
+
%i[datetime created_at],
|
92
|
+
%i[datetime updated_at],
|
93
|
+
%i[integer process_id],
|
94
|
+
%i[integer template_id],
|
95
|
+
%i[text dependencies],
|
96
|
+
%i[integer child_process_id],
|
97
|
+
%i[integer assignment_id],
|
98
|
+
%i[string assignment_type],
|
99
|
+
%i[datetime assigned_at],
|
100
|
+
%i[string type],
|
101
|
+
%i[boolean is_active],
|
102
|
+
%i[datetime completed_at],
|
103
|
+
%i[boolean is_background]
|
102
104
|
],
|
103
105
|
|
104
106
|
rails_workflow_process_templates: [
|
105
|
-
[
|
106
|
-
[
|
107
|
-
[
|
108
|
-
[
|
109
|
-
[
|
110
|
-
[
|
111
|
-
[
|
112
|
-
[
|
113
|
-
[
|
114
|
-
[
|
115
|
-
[
|
107
|
+
%i[string title],
|
108
|
+
%i[text source],
|
109
|
+
%i[string uuid],
|
110
|
+
%i[string version],
|
111
|
+
%i[string tag],
|
112
|
+
%i[string manager_class],
|
113
|
+
%i[string process_class],
|
114
|
+
%i[datetime created_at],
|
115
|
+
%i[datetime updated_at],
|
116
|
+
%i[string type],
|
117
|
+
%i[string partial_name]
|
116
118
|
],
|
117
119
|
|
118
120
|
rails_workflow_processes: [
|
119
|
-
[
|
120
|
-
[
|
121
|
-
[
|
122
|
-
[
|
123
|
-
[
|
124
|
-
[
|
125
|
-
[
|
126
|
-
[
|
127
|
-
[
|
121
|
+
%i[integer status],
|
122
|
+
%i[string version],
|
123
|
+
%i[string tag],
|
124
|
+
%i[boolean async],
|
125
|
+
%i[string title],
|
126
|
+
%i[datetime created_at],
|
127
|
+
%i[datetime updated_at],
|
128
|
+
%i[integer template_id],
|
129
|
+
%i[string type]
|
128
130
|
]
|
129
131
|
}.each do |table, columns|
|
130
132
|
columns.map do |column|
|