libis-workflow 2.0.29 → 2.0.30

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
  SHA1:
3
- metadata.gz: d2d49ea18050014ac64b6c23b97dded2f5595641
4
- data.tar.gz: 6da973b5eee84b3eb25598200bb76f757c94fc7f
3
+ metadata.gz: 4df3c5f29975a0cd1cf20d24ba44a943bc5bc34c
4
+ data.tar.gz: 7933d28eb59d222c33dad47ad57f09a0104ff51d
5
5
  SHA512:
6
- metadata.gz: 25dc30ef7485f9d7636547048dce41c3cdd81a940d955b9391c0cdbbcbbdef03b80fe808ecbc5d9462bf57cd5ff8e7b150a8674a5b228b101ef17db80d2833ec
7
- data.tar.gz: c819b43d37ef7ee39c1043719fb2d4b6f2ab11d52f5b311a62a1733b05aeee6da0817ceabd67d729f79a84cc16757c6a5c98f61c1cd77e86cc36d5e50f9a4136
6
+ metadata.gz: 5e27bd1cb5b0d2ca8b1798bc619bb0062dcba00f5e087056a3b31afcacfb97914358ab9e4bdbf23f81a0d0196d1e76e7ef3742d7200b6a0698e36f31f063e444
7
+ data.tar.gz: 393f6adcb0f7702c6f2114de0d3ede2373fad13af3f85cc56fa86bea6b76e0e7a09fcc2f73e7fb84eac56156ac2e7ceddf6c6aec0f76476ded26202f7fbe8237
@@ -2,11 +2,13 @@ module Libis
2
2
  module Workflow
3
3
  module Status
4
4
 
5
+ protected
6
+
5
7
  STATUS = {
6
8
  NOT_STARTED: 0,
7
9
  STARTED: 1,
8
- DONE: 2,
9
- ASYNC_WAIT: 3,
10
+ ASYNC_WAIT: 2,
11
+ DONE: 3,
10
12
  ASYNC_HALT: 4,
11
13
  FAILED: 5
12
14
  }
@@ -14,12 +16,14 @@ module Libis
14
16
  STATUS_TEXT = [
15
17
  'not started',
16
18
  'started',
17
- 'done',
18
19
  'waiting for running async process',
20
+ 'done',
19
21
  'waiting for halted async process',
20
22
  'failed'
21
23
  ]
22
24
 
25
+ public
26
+
23
27
  # Changes the status of the object. The status changed is logged in the status_log with the current timestamp.
24
28
  #
25
29
  # @param [String] task namepath of the task
@@ -27,7 +31,7 @@ module Libis
27
31
  def set_status(task, status)
28
32
  task = task.namepath if task.is_a?(Libis::Workflow::Task)
29
33
  log_entry = self.status_entry(task)
30
- if log_entry.nil? || status == :STARTED
34
+ if log_entry.nil? || STATUS[status_symbol(log_entry['status'])] > STATUS[status_symbol(status)]
31
35
  log_entry = self.add_status_log('task' => task, 'status' => status, 'created' => DateTime.now)
32
36
  end
33
37
  log_entry['status'] = status
@@ -74,7 +78,7 @@ module Libis
74
78
  # Compare status with current status of the object.
75
79
  #
76
80
  # @param [Symbol] state
77
- # @return [Integer] 1, 0 or -1 depnding on which
81
+ # @return [Integer] 1, 0 or -1 depending on which status is higher in rank
78
82
  def compare_status(state, task = nil)
79
83
  STATUS[self.status(task)] <=> STATUS[state]
80
84
  end
@@ -83,7 +87,7 @@ module Libis
83
87
  # @param [String] task namepath of the task
84
88
  # @param [Integer] progress progress indicator (as <progress> of <max> or as % if <max> not set). Default: 0
85
89
  # @param [Integer] max max count.
86
- def status_progress(task, progress, max = nil)
90
+ def status_progress(task, progress = nil, max = nil)
87
91
  log_entry = self.status_entry(task)
88
92
  log_entry ||= self.add_status_log('task' => task, 'status' => :STARTED, 'created' => DateTime.now)
89
93
  log_entry['progress'] = progress ? progress : (log_entry['progress'] || 0) + 1
@@ -189,7 +189,7 @@ module Libis
189
189
  items = subitems(parent_item)
190
190
  return unless items.size > 0
191
191
 
192
- status = Hash.new(0)
192
+ status_count = Hash.new(0)
193
193
  parent_item.status_progress(self.namepath, 0, items.count)
194
194
  items.each_with_index do |item, i|
195
195
  debug 'Processing subitem (%d/%d): %s', parent_item, i+1, items.size, item.to_s
@@ -197,28 +197,28 @@ module Libis
197
197
  item = new_item if new_item.is_a?(Libis::Workflow::WorkItem)
198
198
  parent_item.status_progress(self.namepath, i+1)
199
199
  item_status = item.status(self.namepath)
200
- status[item_status] += 1
200
+ status_count[item_status] += 1
201
201
  break if parameter(:abort_recursion_on_failure) && item_status != :DONE
202
202
  end
203
203
 
204
- debug '%d of %d subitems passed', parent_item, status[:DONE], items.size
205
- substatus_check(status, parent_item, 'item')
204
+ debug '%d of %d subitems passed', parent_item, status_count[:DONE], items.size
205
+ substatus_check(status_count, parent_item, 'item')
206
206
  end
207
207
 
208
- def substatus_check(status, item, task_or_item)
208
+ def substatus_check(status_count, item, task_or_item)
209
209
  item_status = :DONE
210
210
 
211
- if (waiting = status[:ASYNC_WAIT]) > 0
211
+ if (waiting = status_count[:ASYNC_WAIT]) > 0
212
212
  info "waiting for %d sub#{task_or_item}(s) in async process", item, waiting
213
213
  item_status = :ASYNC_WAIT
214
214
  end
215
215
 
216
- if (halted = status[:ASYNC_HALT]) > 0
216
+ if (halted = status_count[:ASYNC_HALT]) > 0
217
217
  warn "%d sub#{task_or_item}(s) halted in async process", item, halted
218
218
  item_status = :ASYNC_HALT
219
219
  end
220
220
 
221
- if (failed = status[:FAILED]) > 0
221
+ if (failed = status_count[:FAILED]) > 0
222
222
  error "%d sub#{task_or_item}(s) failed", item, failed
223
223
  item_status = :FAILED
224
224
  end
@@ -37,7 +37,7 @@ module Libis
37
37
  tasks = subtasks
38
38
  return unless tasks.size > 0
39
39
 
40
- status = Hash.new(0)
40
+ status_count = Hash.new(0)
41
41
  item.status_progress(self.namepath, 0, tasks.count)
42
42
  tasks.each_with_index do |task, i|
43
43
  info 'Running subtask (%d/%d): %s', item, i+1, tasks.size, task.name
@@ -45,11 +45,11 @@ module Libis
45
45
  item = new_item if new_item.is_a?(Libis::Workflow::WorkItem)
46
46
  item.status_progress(self.namepath, i+1)
47
47
  item_status = item.status(task.namepath)
48
- status[item_status] += 1
48
+ status_count[item_status] += 1
49
49
  break if parameter(:abort_on_failure) && item_status != :DONE
50
50
  end
51
51
 
52
- substatus_check(status, item, 'task')
52
+ substatus_check(status_count, item, 'task')
53
53
 
54
54
  info item.status_text(self.namepath).capitalize, item
55
55
  end
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Workflow
3
- VERSION = '2.0.29' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
3
+ VERSION = '2.0.30' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
4
4
  end
5
5
  end
@@ -121,6 +121,7 @@ STR
121
121
  expect(o[/(?<=\] ).*/].strip).to eq sample_out[i].strip
122
122
  end
123
123
 
124
+ # run.status_log.each { |e| puts e }
124
125
  expect(run.status_log.size).to eq 5
125
126
  expect(run.items.first.status_log.size).to eq 3
126
127
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.29
4
+ version: 2.0.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-19 00:00:00.000000000 Z
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -206,4 +206,3 @@ test_files:
206
206
  - spec/tasks/checksum_tester.rb
207
207
  - spec/tasks/collect_files.rb
208
208
  - spec/workflow_spec.rb
209
- has_rdoc: