job-workflow 0.4.0 → 0.6.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/.rubocop.yml +1 -2
- data/CHANGELOG.md +30 -0
- data/README.md +1 -1
- data/app/controllers/job_workflow/monitoring/application_controller.rb +11 -0
- data/app/controllers/job_workflow/monitoring/executions_controller.rb +28 -0
- data/app/controllers/job_workflow/monitoring/workflows_controller.rb +11 -0
- data/app/views/job_workflow/monitoring/executions/index.html.erb +57 -0
- data/app/views/job_workflow/monitoring/executions/show.html.erb +200 -0
- data/app/views/job_workflow/monitoring/workflows/index.html.erb +39 -0
- data/app/views/layouts/job_workflow/monitoring/application.html.erb +117 -0
- data/config/routes.rb +8 -0
- data/guides/API_REFERENCE.md +79 -6
- data/guides/DEPENDENCY_WAIT.md +9 -5
- data/guides/MONITORING_UI.md +74 -0
- data/guides/PARALLEL_PROCESSING.md +33 -21
- data/guides/PRODUCTION_DEPLOYMENT.md +1 -1
- data/guides/README.md +6 -1
- data/guides/THROTTLING.md +24 -0
- data/guides/WORKFLOW_STATUS_QUERY.md +7 -1
- data/lib/job_workflow/context.rb +68 -6
- data/lib/job_workflow/dsl.rb +1 -5
- data/lib/job_workflow/instrumentation/opentelemetry_subscriber.rb +1 -1
- data/lib/job_workflow/instrumentation.rb +14 -14
- data/lib/job_workflow/job_status.rb +16 -1
- data/lib/job_workflow/monitoring/dag_layout.rb +186 -0
- data/lib/job_workflow/monitoring/engine.rb +15 -0
- data/lib/job_workflow/monitoring/execution_page.rb +16 -0
- data/lib/job_workflow/monitoring/execution_registry.rb +50 -0
- data/lib/job_workflow/monitoring/execution_view_model.rb +262 -0
- data/lib/job_workflow/monitoring/parameter_filter.rb +37 -0
- data/lib/job_workflow/monitoring/workflow_definition.rb +24 -0
- data/lib/job_workflow/monitoring/workflow_registry.rb +24 -0
- data/lib/job_workflow/monitoring.rb +120 -0
- data/lib/job_workflow/queue_adapters/abstract.rb +7 -2
- data/lib/job_workflow/queue_adapters/null_adapter.rb +12 -1
- data/lib/job_workflow/queue_adapters/solid_queue_adapter.rb +42 -12
- data/lib/job_workflow/railtie.rb +12 -0
- data/lib/job_workflow/runner.rb +38 -15
- data/lib/job_workflow/sub_task_job.rb +93 -0
- data/lib/job_workflow/task.rb +7 -0
- data/lib/job_workflow/task_enqueue.rb +19 -12
- data/lib/job_workflow/version.rb +1 -1
- data/lib/job_workflow/workflow_status.rb +20 -1
- data/lib/job_workflow.rb +5 -1
- data/sig/generated/job_workflow/context.rbs +31 -7
- data/sig/generated/job_workflow/instrumentation/opentelemetry_subscriber.rbs +0 -1
- data/sig/generated/job_workflow/instrumentation.rbs +28 -28
- data/sig/generated/job_workflow/job_status.rbs +5 -2
- data/sig/generated/job_workflow/monitoring/dag_layout.rbs +80 -0
- data/sig/generated/job_workflow/monitoring/engine.rbs +8 -0
- data/sig/generated/job_workflow/monitoring/execution_page.rbs +14 -0
- data/sig/generated/job_workflow/monitoring/execution_registry.rbs +21 -0
- data/sig/generated/job_workflow/monitoring/execution_view_model.rbs +111 -0
- data/sig/generated/job_workflow/monitoring/parameter_filter.rbs +16 -0
- data/sig/generated/job_workflow/monitoring/workflow_definition.rbs +18 -0
- data/sig/generated/job_workflow/monitoring/workflow_registry.rbs +13 -0
- data/sig/generated/job_workflow/monitoring.rbs +38 -0
- data/sig/generated/job_workflow/queue_adapters/abstract.rbs +7 -4
- data/sig/generated/job_workflow/queue_adapters/null_adapter.rbs +5 -2
- data/sig/generated/job_workflow/queue_adapters/solid_queue_adapter.rbs +18 -6
- data/sig/generated/job_workflow/railtie.rbs +6 -0
- data/sig/generated/job_workflow/runner.rbs +8 -5
- data/sig/generated/job_workflow/sub_task_job.rbs +40 -0
- data/sig/generated/job_workflow/task.rbs +5 -0
- data/sig/generated/job_workflow/task_enqueue.rbs +5 -8
- data/sig/generated/job_workflow/workflow_status.rbs +6 -0
- data/sig-private/job-workflow.rbs +11 -0
- data/sig-private/rails.rbs +5 -0
- metadata +34 -1
|
@@ -13,7 +13,7 @@ module JobWorkflow
|
|
|
13
13
|
|
|
14
14
|
private
|
|
15
15
|
|
|
16
|
-
attr_reader job:
|
|
16
|
+
attr_reader job: _JobInterface
|
|
17
17
|
|
|
18
18
|
# : () -> Workflow
|
|
19
19
|
def workflow: () -> Workflow
|
|
@@ -30,11 +30,14 @@ module JobWorkflow
|
|
|
30
30
|
# : (Task) -> bool
|
|
31
31
|
def skip_task?: (Task) -> bool
|
|
32
32
|
|
|
33
|
-
# : (Task,
|
|
34
|
-
def run_task: (Task,
|
|
33
|
+
# : (Task, step: ActiveJob::Continuation::Step) -> void
|
|
34
|
+
def run_task: (Task, step: ActiveJob::Continuation::Step) -> void
|
|
35
35
|
|
|
36
|
-
# : (Task,
|
|
37
|
-
def
|
|
36
|
+
# : (Task, untyped) -> [Integer?, untyped]
|
|
37
|
+
def decode_task_cursor: (Task, untyped) -> [ Integer?, untyped ]
|
|
38
|
+
|
|
39
|
+
# : (Task, Context, step: ActiveJob::Continuation::Step, ?cursor: untyped) -> void
|
|
40
|
+
def run_each_task: (Task, Context, step: ActiveJob::Continuation::Step, ?cursor: untyped) -> void
|
|
38
41
|
|
|
39
42
|
# : (Task, Context) { () -> void } -> void
|
|
40
43
|
def run_hooks: (Task, Context) { () -> void } -> void
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Generated from lib/job_workflow/sub_task_job.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module JobWorkflow
|
|
4
|
+
class SubTaskJob < ActiveJob::Base
|
|
5
|
+
include ActiveJob::Continuable
|
|
6
|
+
|
|
7
|
+
# : (context: Context) -> SubTaskJob
|
|
8
|
+
def self.from_parent_context: (context: Context) -> SubTaskJob
|
|
9
|
+
|
|
10
|
+
# : (Context) -> void
|
|
11
|
+
private def self.validate_sub_task_context!: (Context) -> void
|
|
12
|
+
|
|
13
|
+
# : (Hash[untyped, untyped]) -> void
|
|
14
|
+
def perform: (Hash[untyped, untyped]) -> void
|
|
15
|
+
|
|
16
|
+
# : () -> Output
|
|
17
|
+
def output: () -> Output
|
|
18
|
+
|
|
19
|
+
attr_accessor _context: Context?
|
|
20
|
+
|
|
21
|
+
# : () -> Hash[String, untyped]
|
|
22
|
+
def serialize: () -> Hash[String, untyped]
|
|
23
|
+
|
|
24
|
+
# : (Hash[String, untyped]) -> void
|
|
25
|
+
def deserialize: (Hash[String, untyped]) -> void
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
attr_accessor serialized_job_workflow_context: Hash[String, untyped]?
|
|
30
|
+
|
|
31
|
+
# : (Hash[Symbol, untyped]) -> Context
|
|
32
|
+
def build_context: (Hash[Symbol, untyped]) -> Context
|
|
33
|
+
|
|
34
|
+
# : (job_class_name: String) -> Workflow
|
|
35
|
+
def resolve_workflow: (job_class_name: String) -> Workflow
|
|
36
|
+
|
|
37
|
+
# : (Hash[Symbol, untyped]) -> Hash[String, untyped]
|
|
38
|
+
def extract_context_data: (Hash[Symbol, untyped]) -> Hash[String, untyped]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module JobWorkflow
|
|
4
4
|
class Task
|
|
5
|
+
DEFAULT_EACH: untyped
|
|
6
|
+
|
|
5
7
|
attr_reader job_name: String
|
|
6
8
|
|
|
7
9
|
attr_reader block: ^(untyped) -> void
|
|
@@ -50,6 +52,9 @@ module JobWorkflow
|
|
|
50
52
|
# : () -> String
|
|
51
53
|
def throttle_prefix_key: () -> String
|
|
52
54
|
|
|
55
|
+
# : () -> bool
|
|
56
|
+
def each?: () -> bool
|
|
57
|
+
|
|
53
58
|
private
|
|
54
59
|
|
|
55
60
|
attr_reader name: Symbol
|
|
@@ -6,22 +6,19 @@ module JobWorkflow
|
|
|
6
6
|
|
|
7
7
|
attr_reader queue: String?
|
|
8
8
|
|
|
9
|
-
attr_reader concurrency: Integer?
|
|
10
|
-
|
|
11
9
|
# : (true | false | ^(Context) -> bool | Hash[Symbol, untyped] | nil) -> TaskEnqueue
|
|
12
10
|
def self.from_primitive_value: (true | false | ^(Context) -> bool | Hash[Symbol, untyped] | nil) -> TaskEnqueue
|
|
13
11
|
|
|
12
|
+
# : (Hash[Symbol, untyped]) -> void
|
|
13
|
+
private def self.validate_hash_keys!: (Hash[Symbol, untyped]) -> void
|
|
14
|
+
|
|
14
15
|
# : (
|
|
15
16
|
# ?condition: true | false | ^(Context) -> bool,
|
|
16
|
-
# ?queue: String
|
|
17
|
-
# ?concurrency: Integer?
|
|
17
|
+
# ?queue: String?
|
|
18
18
|
# ) -> void
|
|
19
|
-
def initialize: (?condition: true | false | ^(Context) -> bool, ?queue: String
|
|
19
|
+
def initialize: (?condition: true | false | ^(Context) -> bool, ?queue: String?) -> void
|
|
20
20
|
|
|
21
21
|
# : (Context) -> bool
|
|
22
22
|
def should_enqueue?: (Context) -> bool
|
|
23
|
-
|
|
24
|
-
# : () -> bool
|
|
25
|
-
def should_limits_concurrency?: () -> bool
|
|
26
23
|
end
|
|
27
24
|
end
|
|
@@ -22,6 +22,12 @@ module JobWorkflow
|
|
|
22
22
|
# : (Hash[String, untyped]) -> WorkflowStatus
|
|
23
23
|
def self.from_job_data: (Hash[String, untyped]) -> WorkflowStatus
|
|
24
24
|
|
|
25
|
+
# : (Hash[String, untyped], Workflow) -> Context
|
|
26
|
+
private def self.context_from_job_data: (Hash[String, untyped], Workflow) -> Context
|
|
27
|
+
|
|
28
|
+
# : (Hash[String, untyped]) -> Hash[String, untyped]?
|
|
29
|
+
private def self.workflow_arguments_data: (Hash[String, untyped]) -> Hash[String, untyped]?
|
|
30
|
+
|
|
25
31
|
# : (context: Context, job_class_name: String, status: status_type) -> void
|
|
26
32
|
def initialize: (context: Context, job_class_name: String, status: status_type) -> void
|
|
27
33
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module JobWorkflow
|
|
2
|
+
interface _JobInterface
|
|
3
|
+
def job_id: () -> String
|
|
4
|
+
def queue_name: () -> String
|
|
5
|
+
def serialize: () -> Hash[String, untyped]
|
|
6
|
+
def _context: () -> JobWorkflow::Context?
|
|
7
|
+
def _context=: (JobWorkflow::Context) -> JobWorkflow::Context
|
|
8
|
+
def step: (Symbol, ?start: ActiveJob::Continuation::_Succ, ?isolated: bool) -> void
|
|
9
|
+
| (Symbol, ?start: ActiveJob::Continuation::_Succ, ?isolated: bool) { (ActiveJob::Continuation::Step) -> void } -> void
|
|
10
|
+
end
|
|
11
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: job-workflow
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- shoma07
|
|
@@ -38,6 +38,14 @@ files:
|
|
|
38
38
|
- README.md
|
|
39
39
|
- Rakefile
|
|
40
40
|
- Steepfile
|
|
41
|
+
- app/controllers/job_workflow/monitoring/application_controller.rb
|
|
42
|
+
- app/controllers/job_workflow/monitoring/executions_controller.rb
|
|
43
|
+
- app/controllers/job_workflow/monitoring/workflows_controller.rb
|
|
44
|
+
- app/views/job_workflow/monitoring/executions/index.html.erb
|
|
45
|
+
- app/views/job_workflow/monitoring/executions/show.html.erb
|
|
46
|
+
- app/views/job_workflow/monitoring/workflows/index.html.erb
|
|
47
|
+
- app/views/layouts/job_workflow/monitoring/application.html.erb
|
|
48
|
+
- config/routes.rb
|
|
41
49
|
- guides/API_REFERENCE.md
|
|
42
50
|
- guides/BEST_PRACTICES.md
|
|
43
51
|
- guides/CACHE_STORE_INTEGRATION.md
|
|
@@ -49,6 +57,7 @@ files:
|
|
|
49
57
|
- guides/GETTING_STARTED.md
|
|
50
58
|
- guides/INSTRUMENTATION.md
|
|
51
59
|
- guides/LIFECYCLE_HOOKS.md
|
|
60
|
+
- guides/MONITORING_UI.md
|
|
52
61
|
- guides/OPENTELEMETRY_INTEGRATION.md
|
|
53
62
|
- guides/PARALLEL_PROCESSING.md
|
|
54
63
|
- guides/PRODUCTION_DEPLOYMENT.md
|
|
@@ -83,6 +92,15 @@ files:
|
|
|
83
92
|
- lib/job_workflow/instrumentation/opentelemetry_subscriber.rb
|
|
84
93
|
- lib/job_workflow/job_status.rb
|
|
85
94
|
- lib/job_workflow/logger.rb
|
|
95
|
+
- lib/job_workflow/monitoring.rb
|
|
96
|
+
- lib/job_workflow/monitoring/dag_layout.rb
|
|
97
|
+
- lib/job_workflow/monitoring/engine.rb
|
|
98
|
+
- lib/job_workflow/monitoring/execution_page.rb
|
|
99
|
+
- lib/job_workflow/monitoring/execution_registry.rb
|
|
100
|
+
- lib/job_workflow/monitoring/execution_view_model.rb
|
|
101
|
+
- lib/job_workflow/monitoring/parameter_filter.rb
|
|
102
|
+
- lib/job_workflow/monitoring/workflow_definition.rb
|
|
103
|
+
- lib/job_workflow/monitoring/workflow_registry.rb
|
|
86
104
|
- lib/job_workflow/output.rb
|
|
87
105
|
- lib/job_workflow/output_def.rb
|
|
88
106
|
- lib/job_workflow/queue.rb
|
|
@@ -90,9 +108,11 @@ files:
|
|
|
90
108
|
- lib/job_workflow/queue_adapters/abstract.rb
|
|
91
109
|
- lib/job_workflow/queue_adapters/null_adapter.rb
|
|
92
110
|
- lib/job_workflow/queue_adapters/solid_queue_adapter.rb
|
|
111
|
+
- lib/job_workflow/railtie.rb
|
|
93
112
|
- lib/job_workflow/runner.rb
|
|
94
113
|
- lib/job_workflow/schedule.rb
|
|
95
114
|
- lib/job_workflow/semaphore.rb
|
|
115
|
+
- lib/job_workflow/sub_task_job.rb
|
|
96
116
|
- lib/job_workflow/task.rb
|
|
97
117
|
- lib/job_workflow/task_callable.rb
|
|
98
118
|
- lib/job_workflow/task_context.rb
|
|
@@ -111,7 +131,9 @@ files:
|
|
|
111
131
|
- sig-private/activejob.rbs
|
|
112
132
|
- sig-private/activesupport.rbs
|
|
113
133
|
- sig-private/aws.rbs
|
|
134
|
+
- sig-private/job-workflow.rbs
|
|
114
135
|
- sig-private/opentelemetry.rbs
|
|
136
|
+
- sig-private/rails.rbs
|
|
115
137
|
- sig-private/solid_queue.rbs
|
|
116
138
|
- sig/generated/job-workflow.rbs
|
|
117
139
|
- sig/generated/job_workflow.rbs
|
|
@@ -134,6 +156,15 @@ files:
|
|
|
134
156
|
- sig/generated/job_workflow/instrumentation/opentelemetry_subscriber.rbs
|
|
135
157
|
- sig/generated/job_workflow/job_status.rbs
|
|
136
158
|
- sig/generated/job_workflow/logger.rbs
|
|
159
|
+
- sig/generated/job_workflow/monitoring.rbs
|
|
160
|
+
- sig/generated/job_workflow/monitoring/dag_layout.rbs
|
|
161
|
+
- sig/generated/job_workflow/monitoring/engine.rbs
|
|
162
|
+
- sig/generated/job_workflow/monitoring/execution_page.rbs
|
|
163
|
+
- sig/generated/job_workflow/monitoring/execution_registry.rbs
|
|
164
|
+
- sig/generated/job_workflow/monitoring/execution_view_model.rbs
|
|
165
|
+
- sig/generated/job_workflow/monitoring/parameter_filter.rbs
|
|
166
|
+
- sig/generated/job_workflow/monitoring/workflow_definition.rbs
|
|
167
|
+
- sig/generated/job_workflow/monitoring/workflow_registry.rbs
|
|
137
168
|
- sig/generated/job_workflow/output.rbs
|
|
138
169
|
- sig/generated/job_workflow/output_def.rbs
|
|
139
170
|
- sig/generated/job_workflow/queue.rbs
|
|
@@ -141,9 +172,11 @@ files:
|
|
|
141
172
|
- sig/generated/job_workflow/queue_adapters/abstract.rbs
|
|
142
173
|
- sig/generated/job_workflow/queue_adapters/null_adapter.rbs
|
|
143
174
|
- sig/generated/job_workflow/queue_adapters/solid_queue_adapter.rbs
|
|
175
|
+
- sig/generated/job_workflow/railtie.rbs
|
|
144
176
|
- sig/generated/job_workflow/runner.rbs
|
|
145
177
|
- sig/generated/job_workflow/schedule.rbs
|
|
146
178
|
- sig/generated/job_workflow/semaphore.rbs
|
|
179
|
+
- sig/generated/job_workflow/sub_task_job.rbs
|
|
147
180
|
- sig/generated/job_workflow/task.rbs
|
|
148
181
|
- sig/generated/job_workflow/task_callable.rbs
|
|
149
182
|
- sig/generated/job_workflow/task_context.rbs
|