flow_core 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 743fbfab50000cf6b47c17fe0d90d962faad47fb8eeb0cb44df1e777b56fff0d
4
- data.tar.gz: 67d9e0a9f7e7f47d0d958116f4e10d5e885e80ce6b929aa49c49ae844cdc2c18
3
+ metadata.gz: c5e3dd023d304ad83feb5f766e4978391e64a2f4430129545e1e19282a62fe72
4
+ data.tar.gz: 0103c699f2bf9c4b739e9278d9c4d063f9997a0049afb5324afd793103d2c44e
5
5
  SHA512:
6
- metadata.gz: e7b941b64b50e8d083832c3faf1c22f729473fbf1ac7ed1a0ba67f0831bb9d1a7078f95c008f18ae77138358be376124c47c094fb97d6b41ecf18e99f78a0c68
7
- data.tar.gz: 35f944cd17e0b9d07afc0903198ffa9cc43f7d74858fa778112ae4a7c69a0de6a59e21354ab9c4460e2eafb8800f790aa12270dce06ffc85e1bfcafd643e5fca
6
+ metadata.gz: 741e6ce58294ed4cc9ac6992cb54dae77f3bdf9ccd8e2b4a341cca85e70503c50285489cf3a890f8627712c5f4c0c7c52517132ae7d03274103ef653498fe8ae
7
+ data.tar.gz: 39e078ca26644073e09aba704ab509059831ff91af272146593a65052148b509733dd3bbdfe1bcad50b771631973b962aca1c76ca386d2f99da557b68474c637
@@ -27,8 +27,6 @@ module FlowCore
27
27
  scope :errored, -> { where.not(errored_at: nil) }
28
28
  scope :suspended, -> { where.not(suspended_at: nil) }
29
29
 
30
- validate :on_create_validation, on: :create
31
-
32
30
  after_initialize do
33
31
  self.payload ||= {}
34
32
  end
@@ -58,7 +56,6 @@ module FlowCore
58
56
 
59
57
  with_transaction_returning_status do
60
58
  update! stage: :canceled, canceled_at: Time.zone.now
61
- workflow.on_instance_cancel(self)
62
59
 
63
60
  true
64
61
  end
@@ -69,7 +66,6 @@ module FlowCore
69
66
 
70
67
  with_transaction_returning_status do
71
68
  update! stage: :activated, activated_at: Time.zone.now
72
- workflow.on_instance_activate(self)
73
69
 
74
70
  tokens.create! place: workflow.start_place
75
71
 
@@ -87,7 +83,6 @@ module FlowCore
87
83
  task.terminate! reason: "Instance finished"
88
84
  end
89
85
  tokens.where(stage: %i[free locked]).find_each(&:terminate!)
90
- workflow.on_instance_finish(self)
91
86
 
92
87
  true
93
88
  end
@@ -99,7 +94,6 @@ module FlowCore
99
94
  with_transaction_returning_status do
100
95
  tasks.enabled.each { |task| task.terminate! reason: "Instance terminated" }
101
96
  update! stage: :terminated, terminated_at: Time.zone.now, terminate_reason: reason
102
- workflow.on_instance_terminate(self)
103
97
 
104
98
  true
105
99
  end
@@ -120,11 +114,5 @@ module FlowCore
120
114
  def terminate!(reason:)
121
115
  terminate(reason: reason) || raise(FlowCore::InvalidTransition, "Can't terminate Instance##{id}")
122
116
  end
123
-
124
- private
125
-
126
- def on_create_validation
127
- workflow.on_instance_create_validation(self)
128
- end
129
117
  end
130
118
  end
@@ -86,7 +86,6 @@ module FlowCore
86
86
  update! stage: :enabled, enabled_at: Time.zone.now
87
87
 
88
88
  transition.on_task_enable(self)
89
- workflow.on_instance_task_enable(self)
90
89
 
91
90
  true
92
91
  end
@@ -109,7 +108,6 @@ module FlowCore
109
108
  update! stage: :finished, finished_at: Time.zone.now
110
109
 
111
110
  transition.on_task_finish(self)
112
- workflow.on_instance_task_finish(self)
113
111
 
114
112
  true
115
113
  end
@@ -123,7 +121,6 @@ module FlowCore
123
121
  with_transaction_returning_status do
124
122
  update! stage: :terminated, terminated_at: Time.zone.now, terminate_reason: reason
125
123
  transition.on_task_terminate(self)
126
- workflow.on_instance_task_terminate(self)
127
124
 
128
125
  true
129
126
  end
@@ -133,7 +130,6 @@ module FlowCore
133
130
  update! errored_at: Time.zone.now, error_reason: error.message
134
131
  instance.update! errored_at: Time.zone.now
135
132
  transition.on_task_errored(self, error)
136
- workflow.on_instance_task_errored(self, error)
137
133
 
138
134
  true
139
135
  end
@@ -145,7 +141,6 @@ module FlowCore
145
141
  update! errored_at: nil, rescued_at: Time.zone.now
146
142
  instance.update! errored_at: nil, rescued_at: Time.zone.now
147
143
  transition.on_task_rescue(self)
148
- workflow.on_instance_task_rescue(self)
149
144
 
150
145
  true
151
146
  end
@@ -155,7 +150,6 @@ module FlowCore
155
150
  with_transaction_returning_status do
156
151
  update! suspended_at: Time.zone.now
157
152
  transition.on_task_suspend(self)
158
- workflow.on_instance_task_suspend(self)
159
153
 
160
154
  true
161
155
  end
@@ -165,7 +159,6 @@ module FlowCore
165
159
  with_transaction_returning_status do
166
160
  update! suspended_at: nil, resumed_at: Time.zone.now
167
161
  transition.on_task_resume(self)
168
- workflow.on_instance_task_resume(self)
169
162
 
170
163
  true
171
164
  end
@@ -21,14 +21,16 @@ module FlowCore
21
21
 
22
22
  class_attribute :force_workflow_verified_on_create_instance, default: false
23
23
 
24
- include FlowCore::WorkflowCallbacks
25
-
26
24
  def build_instance(attributes = {})
27
25
  if force_workflow_verified_on_create_instance && invalid?
28
26
  raise FlowCore::UnverifiedWorkflow, "Workflow##{id} didn't do soundness check yet."
29
27
  end
30
28
 
31
- instances.build attributes.with_indifferent_access.except(FlowCore::Instance::FORBIDDEN_ATTRIBUTES)
29
+ instance = instances.new type: instance_class
30
+ on_build_instance(instance)
31
+ instance.assign_attributes attributes.except(FlowCore::Instance::FORBIDDEN_ATTRIBUTES)
32
+
33
+ instance
32
34
  end
33
35
 
34
36
  def create_instance(attributes = {})
@@ -212,5 +214,11 @@ module FlowCore
212
214
 
213
215
  graph
214
216
  end
217
+
218
+ def on_build_instance(_instance); end
219
+
220
+ def instance_class
221
+ FlowCore::Instance
222
+ end
215
223
  end
216
224
  end
@@ -15,7 +15,7 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
15
15
  end
16
16
 
17
17
  create_table :flow_core_places do |t|
18
- t.references :workflow, null: false, foreign_key: { to_table: :flow_core_workflows }
18
+ t.references :workflow, null: false, foreign_key: false
19
19
 
20
20
  t.string :name
21
21
  t.string :tag
@@ -26,7 +26,7 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
26
26
  end
27
27
 
28
28
  create_table :flow_core_transitions do |t|
29
- t.references :workflow, null: false, foreign_key: { to_table: :flow_core_workflows }
29
+ t.references :workflow, null: false, foreign_key: false
30
30
 
31
31
  t.string :name
32
32
  t.string :tag
@@ -37,9 +37,9 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
37
37
  end
38
38
 
39
39
  create_table :flow_core_arcs do |t|
40
- t.references :workflow, null: false, foreign_key: { to_table: :flow_core_workflows }
41
- t.references :transition, null: false, foreign_key: { to_table: :flow_core_transitions }
42
- t.references :place, null: false, foreign_key: { to_table: :flow_core_places }
40
+ t.references :workflow, null: false, foreign_key: false
41
+ t.references :transition, null: false, foreign_key: false
42
+ t.references :place, null: false, foreign_key: false
43
43
 
44
44
  t.integer :direction, null: false, default: 0, comment: "0-in, 1-out"
45
45
  t.boolean :fallback_arc, null: false, default: false
@@ -48,7 +48,7 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
48
48
  end
49
49
 
50
50
  create_table :flow_core_instances do |t|
51
- t.references :workflow, null: false, foreign_key: { to_table: :flow_core_workflows }
51
+ t.references :workflow, null: false, foreign_key: false
52
52
 
53
53
  t.string :tag, index: { unique: true }
54
54
 
@@ -62,12 +62,14 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
62
62
 
63
63
  t.text :payload
64
64
 
65
+ t.string :type
66
+
65
67
  t.timestamps
66
68
  end
67
69
 
68
70
  create_table :flow_core_transition_callbacks do |t|
69
- t.references :workflow, foreign_key: { to_table: :flow_core_workflows }
70
- t.references :transition, foreign_key: { to_table: :flow_core_transitions }
71
+ t.references :workflow, foreign_key: false
72
+ t.references :transition, foreign_key: false
71
73
 
72
74
  t.string :configuration
73
75
  t.string :type
@@ -76,8 +78,8 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
76
78
  end
77
79
 
78
80
  create_table :flow_core_transition_triggers do |t|
79
- t.references :workflow, foreign_key: { to_table: :flow_core_workflows }
80
- t.references :transition, foreign_key: { to_table: :flow_core_transitions }
81
+ t.references :workflow, foreign_key: false
82
+ t.references :transition, foreign_key: false
81
83
 
82
84
  t.text :configuration
83
85
  t.string :type
@@ -86,8 +88,8 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
86
88
  end
87
89
 
88
90
  create_table :flow_core_arc_guards do |t|
89
- t.references :workflow, foreign_key: { to_table: :flow_core_workflows }
90
- t.references :arc, foreign_key: { to_table: :flow_core_arcs }
91
+ t.references :workflow, foreign_key: false
92
+ t.references :arc, foreign_key: false
91
93
 
92
94
  t.text :configuration
93
95
  t.string :type
@@ -96,17 +98,17 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
96
98
  end
97
99
 
98
100
  create_table :flow_core_tokens do |t|
99
- t.references :workflow, null: false, foreign_key: { to_table: :flow_core_workflows }
100
- t.references :instance, null: false, foreign_key: { to_table: :flow_core_instances }
101
- t.references :place, null: false, foreign_key: { to_table: :flow_core_places }
101
+ t.references :workflow, null: false, foreign_key: false
102
+ t.references :instance, null: false, foreign_key: false
103
+ t.references :place, null: false, foreign_key: false
102
104
 
103
105
  t.integer :stage, default: 0, comment: "0-free, 1-locked, 11-consumed, 12-terminated"
104
106
  t.datetime :locked_at
105
107
  t.datetime :consumed_at
106
108
  t.datetime :terminated_at
107
109
 
108
- t.references :created_by_task, foreign_key: { to_table: :flow_core_tasks }
109
- t.references :consumed_by_task, foreign_key: { to_table: :flow_core_tasks }
110
+ t.references :created_by_task, foreign_key: false
111
+ t.references :consumed_by_task, foreign_key: false
110
112
 
111
113
  t.boolean :task_created, null: false, default: false
112
114
 
@@ -114,13 +116,13 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
114
116
  end
115
117
 
116
118
  create_table :flow_core_tasks do |t|
117
- t.references :workflow, null: false, foreign_key: { to_table: :flow_core_workflows }
118
- t.references :instance, null: false, foreign_key: { to_table: :flow_core_instances }
119
- t.references :transition, null: false, foreign_key: { to_table: :flow_core_transitions }
119
+ t.references :workflow, null: false, foreign_key: false
120
+ t.references :instance, null: false, foreign_key: false
121
+ t.references :transition, null: false, foreign_key: false
120
122
 
121
123
  t.string :tag, index: { unique: true }
122
124
 
123
- t.references :created_by_token, foreign_key: { to_table: :flow_core_tokens }
125
+ t.references :created_by_token, foreign_key: false
124
126
 
125
127
  t.integer :stage, default: 0, comment: "0-created, 1-enabled, 11-finished, 12-terminated"
126
128
  t.datetime :enabled_at
@@ -144,5 +146,53 @@ class CreateWorkflowTables < ActiveRecord::Migration[6.0]
144
146
 
145
147
  t.timestamps
146
148
  end
149
+
150
+ change_table :flow_core_places do |t|
151
+ t.foreign_key :flow_core_workflows, column: :workflow_id
152
+ end
153
+
154
+ change_table :flow_core_transitions do |t|
155
+ t.foreign_key :flow_core_workflows, column: :workflow_id
156
+ end
157
+
158
+ change_table :flow_core_arcs do |t|
159
+ t.foreign_key :flow_core_workflows, column: :workflow_id
160
+ t.foreign_key :flow_core_transitions, column: :transition_id
161
+ t.foreign_key :flow_core_places, column: :place_id
162
+ end
163
+
164
+ change_table :flow_core_instances do |t|
165
+ t.foreign_key :flow_core_workflows, column: :workflow_id
166
+ end
167
+
168
+ change_table :flow_core_transition_callbacks do |t|
169
+ t.foreign_key :flow_core_workflows, column: :workflow_id
170
+ t.foreign_key :flow_core_transitions, column: :transition_id
171
+ end
172
+
173
+ change_table :flow_core_transition_triggers do |t|
174
+ t.foreign_key :flow_core_workflows, column: :workflow_id
175
+ t.foreign_key :flow_core_transitions, column: :transition_id
176
+ end
177
+
178
+ change_table :flow_core_arc_guards do |t|
179
+ t.foreign_key :flow_core_workflows, column: :workflow_id
180
+ t.foreign_key :flow_core_arcs, column: :arc_id
181
+ end
182
+
183
+ change_table :flow_core_tokens do |t|
184
+ t.foreign_key :flow_core_workflows, column: :workflow_id
185
+ t.foreign_key :flow_core_instances, column: :instance_id
186
+ t.foreign_key :flow_core_places, column: :place_id
187
+ t.foreign_key :flow_core_tasks, column: :created_by_task_id
188
+ t.foreign_key :flow_core_tasks, column: :consumed_by_task_id
189
+ end
190
+
191
+ change_table :flow_core_tasks do |t|
192
+ t.foreign_key :flow_core_workflows, column: :workflow_id
193
+ t.foreign_key :flow_core_instances, column: :instance_id
194
+ t.foreign_key :flow_core_transitions, column: :transition_id
195
+ t.foreign_key :flow_core_tokens, column: :created_by_token_id
196
+ end
147
197
  end
148
198
  end
@@ -10,7 +10,8 @@ class CreatePipelineTables < ActiveRecord::Migration[6.0]
10
10
  end
11
11
 
12
12
  create_table :flow_core_steps do |t|
13
- t.references :pipeline, null: false, foreign_key: { to_table: :flow_core_pipelines }
13
+ t.references :pipeline, null: false, foreign_key: false
14
+ t.references :branch, foreign_key: false
14
15
 
15
16
  t.string :ancestry, index: true
16
17
  t.integer :position, null: false
@@ -19,14 +20,14 @@ class CreatePipelineTables < ActiveRecord::Migration[6.0]
19
20
  t.string :type
20
21
  t.boolean :verified, null: false, default: false
21
22
 
22
- t.references :redirect_to_step, foreign_key: { to_table: :flow_core_steps }
23
+ t.references :redirect_to_step, foreign_key: false
23
24
 
24
25
  t.timestamps
25
26
  end
26
27
 
27
28
  create_table :flow_core_branches do |t|
28
- t.references :pipeline, null: false, foreign_key: { to_table: :flow_core_pipelines }
29
- t.references :step, null: false, foreign_key: { to_table: :flow_core_steps }
29
+ t.references :pipeline, null: false, foreign_key: false
30
+ t.references :step, null: false, foreign_key: false
30
31
 
31
32
  t.string :name
32
33
  t.boolean :fallback_branch, null: false, default: false
@@ -35,7 +36,14 @@ class CreatePipelineTables < ActiveRecord::Migration[6.0]
35
36
  end
36
37
 
37
38
  change_table :flow_core_steps do |t|
38
- t.references :branch, foreign_key: { to_table: :flow_core_branches }
39
+ t.foreign_key :flow_core_pipelines, column: :pipeline_id
40
+ t.foreign_key :flow_core_branches, column: :branch_id
41
+ t.foreign_key :flow_core_steps, column: :redirect_to_step_id
42
+ end
43
+
44
+ change_table :flow_core_branches do |t|
45
+ t.foreign_key :flow_core_pipelines, column: :pipeline_id
46
+ t.foreign_key :flow_core_steps, column: :step_id
39
47
  end
40
48
 
41
49
  change_table :flow_core_transition_triggers do |t|
@@ -16,7 +16,6 @@ require "flow_core/arc_guardable"
16
16
  require "flow_core/transition_triggerable"
17
17
  require "flow_core/transition_callbackable"
18
18
  require "flow_core/task_executable"
19
- require "flow_core/workflow_callbacks"
20
19
 
21
20
  require "flow_core/definition"
22
21
  require "flow_core/violations"
@@ -11,24 +11,15 @@ module FlowCore
11
11
  after_save :notify_workflow_task_finished!, if: :implicit_notify_workflow_task_finished
12
12
  end
13
13
 
14
- # For automatic task
15
- def run!
16
- raise NotImplementedError
17
- end
18
-
19
14
  def finished?
20
15
  raise NotImplementedError
21
16
  end
22
17
 
23
- def implicit_notify_workflow_task_finished
24
- true
25
- end
18
+ private
26
19
 
27
- def auto_finishable?
28
- false
29
- end
30
-
31
- protected
20
+ def implicit_notify_workflow_task_finished
21
+ true
22
+ end
32
23
 
33
24
  def notify_workflow_task_finished!
34
25
  task.finish! if finished?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FlowCore
4
- VERSION = "0.0.5"
4
+ VERSION = "0.0.6"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flow_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - jasl
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-09 00:00:00.000000000 Z
11
+ date: 2020-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts_as_list
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.5'
69
- - !ruby/object:Gem::Dependency
70
- name: sqlite3
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.4'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.4'
83
69
  description: A multi purpose, extendable, Workflow-net-based workflow engine for Rails
84
70
  applications, focusing on workflow definition and scheduling.
85
71
  email:
@@ -132,13 +118,12 @@ files:
132
118
  - lib/flow_core/transition_triggerable.rb
133
119
  - lib/flow_core/version.rb
134
120
  - lib/flow_core/violations.rb
135
- - lib/flow_core/workflow_callbacks.rb
136
121
  - lib/tasks/flow_core_tasks.rake
137
122
  homepage: https://github.com/rails-engine/flow_core
138
123
  licenses:
139
124
  - MIT
140
125
  metadata: {}
141
- post_install_message:
126
+ post_install_message:
142
127
  rdoc_options: []
143
128
  require_paths:
144
129
  - lib
@@ -154,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
139
  version: '0'
155
140
  requirements: []
156
141
  rubygems_version: 3.1.4
157
- signing_key:
142
+ signing_key:
158
143
  specification_version: 4
159
144
  summary: A multi purpose, extendable, Workflow-net-based workflow engine for Rails
160
145
  applications
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FlowCore
4
- module WorkflowCallbacks
5
- extend ActiveSupport::Concern
6
-
7
- def on_instance_create_validation(_instance); end
8
-
9
- def on_instance_cancel(_instance); end
10
-
11
- def on_instance_activate(_instance); end
12
-
13
- def on_instance_finish(_instance); end
14
-
15
- def on_instance_terminate(_instance); end
16
-
17
- def on_instance_task_enable(_task); end
18
-
19
- def on_instance_task_finish(_task); end
20
-
21
- def on_instance_task_terminate(_task); end
22
-
23
- def on_instance_task_errored(_task, _error); end
24
-
25
- def on_instance_task_rescue(_task); end
26
-
27
- def on_instance_task_suspend(_task); end
28
-
29
- def on_instance_task_resume(_task); end
30
- end
31
- end