libis-workflow-mongoid 2.0.beta.12 → 2.0.beta.13
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/.travis.yml +18 -8
- data/lib/libis/workflow/mongoid/base.rb +2 -2
- data/lib/libis/workflow/mongoid/dynamic.rb +32 -0
- data/lib/libis/workflow/mongoid/run.rb +14 -9
- data/lib/libis/workflow/mongoid/version.rb +1 -1
- data/lib/libis/workflow/mongoid/work_item.rb +0 -8
- data/lib/libis/workflow/mongoid/work_item_base.rb +39 -22
- data/lib/libis/workflow/mongoid/worker.rb +6 -6
- data/libis-workflow-mongoid.gemspec +30 -28
- data/spec/tasks/camelize_name.rb +1 -0
- data/spec/tasks/collect_files.rb +3 -1
- data/spec/workflow_spec.rb +31 -15
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48543f046e7d13eb9d5e5af4a6de97224754065d
|
4
|
+
data.tar.gz: 1f3bbcafe393565b1cfca3218fa3cb55fc27370c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe180a58e46b9de4b980a97d568ad44c4103bfb5c9a6c3c2d6178364e576475f745aef568107a46766f3edca9cfb1923167d4981bed62cb989691e5b8bf3eb97
|
7
|
+
data.tar.gz: 153a1197055568023304c2a03613c7e834194238e7b2e680256485562e370180b022a7d7a0471f127b2fe8d0604b6447fb8b9d6624176aa290f311f2f225b5d8
|
data/.travis.yml
CHANGED
@@ -2,9 +2,10 @@ language: ruby
|
|
2
2
|
sudo: false
|
3
3
|
bundler_args: --without development
|
4
4
|
cache: bundler
|
5
|
+
|
5
6
|
rvm:
|
6
|
-
- 2.1.
|
7
|
-
- 2.2.
|
7
|
+
- 2.1.7
|
8
|
+
- 2.2.3
|
8
9
|
- ruby-head
|
9
10
|
- jruby-9.0.1.0
|
10
11
|
jdk:
|
@@ -13,13 +14,13 @@ jdk:
|
|
13
14
|
- oraclejdk8
|
14
15
|
matrix:
|
15
16
|
exclude:
|
16
|
-
- rvm: 2.1.
|
17
|
+
- rvm: 2.1.7
|
17
18
|
jdk: oraclejdk7
|
18
|
-
- rvm: 2.1.
|
19
|
+
- rvm: 2.1.7
|
19
20
|
jdk: oraclejdk8
|
20
|
-
- rvm: 2.2.
|
21
|
+
- rvm: 2.2.3
|
21
22
|
jdk: oraclejdk7
|
22
|
-
- rvm: 2.2.
|
23
|
+
- rvm: 2.2.3
|
23
24
|
jdk: oraclejdk8
|
24
25
|
- rvm: ruby-head
|
25
26
|
jdk: oraclejdk7
|
@@ -30,6 +31,15 @@ matrix:
|
|
30
31
|
branches:
|
31
32
|
only:
|
32
33
|
- master
|
33
|
-
|
34
|
-
|
34
|
+
env:
|
35
|
+
global:
|
36
|
+
- MONGODB_VERSION=3.2.0
|
37
|
+
- JRUBY_OPTS="-Xcli.debug=true --debug"
|
38
|
+
before_install:
|
39
|
+
- wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-$MONGODB_VERSION.tgz
|
40
|
+
- tar xfz mongodb-linux-x86_64-$MONGODB_VERSION.tgz
|
41
|
+
- export PATH=`pwd`/mongodb-linux-x86_64-$MONGODB_VERSION/bin:$PATH
|
42
|
+
- mkdir -p data/db
|
43
|
+
- mongod --dbpath=data/db &> /dev/null &
|
44
|
+
- sleep 3
|
35
45
|
before_script: ./.travis/db_prepare.sh
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'mongoid'
|
3
3
|
require 'mongoid/document'
|
4
|
-
require 'mongoid_indifferent_access'
|
4
|
+
# require 'mongoid_indifferent_access'
|
5
5
|
require_relative 'sequence'
|
6
6
|
|
7
7
|
require 'active_support/core_ext/object/deep_dup'
|
@@ -16,7 +16,7 @@ module Libis
|
|
16
16
|
klass.class_eval do
|
17
17
|
include ::Mongoid::Document
|
18
18
|
include ::Mongoid::Timestamps::Created::Short
|
19
|
-
include ::Mongoid::Extensions::Hash::IndifferentAccess
|
19
|
+
# include ::Mongoid::Extensions::Hash::IndifferentAccess
|
20
20
|
include ::Libis::Workflow::Mongoid::Sequence
|
21
21
|
field :_id, type: Integer, overwrite: true
|
22
22
|
sequence :_id
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'mongoid'
|
2
|
+
require 'mongoid/document'
|
3
|
+
|
4
|
+
module Libis
|
5
|
+
module Workflow
|
6
|
+
module Mongoid
|
7
|
+
module Dynamic
|
8
|
+
def self.included(klass)
|
9
|
+
klass.class_eval do
|
10
|
+
include ::Mongoid::Document
|
11
|
+
include ::Mongoid::Attributes::Dynamic
|
12
|
+
include ::Libis::Workflow::Mongoid::Sequence
|
13
|
+
field :_id, type: Integer, overwrite: true
|
14
|
+
sequence :_id
|
15
|
+
index _id: 1
|
16
|
+
|
17
|
+
def has_key?(key)
|
18
|
+
self.attributes.has_key?(key.to_s) || self.attributes.has_key?(key.to_sym)
|
19
|
+
end
|
20
|
+
|
21
|
+
def each(&block)
|
22
|
+
self.attributes.reject { |k,_| k == '_id' }.each(&block)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -42,24 +42,29 @@ module Libis
|
|
42
42
|
def run
|
43
43
|
self.tasks = []
|
44
44
|
self.items = []
|
45
|
+
# noinspection RubySuperCallWithoutSuperclassInspection
|
45
46
|
super
|
46
47
|
end
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
task.run self
|
56
|
-
end
|
49
|
+
# Add a child work item
|
50
|
+
#
|
51
|
+
# @param [Libis::Workflow::Mongoid::WorkItem] item to be added to the child list :items
|
52
|
+
def add_item(item)
|
53
|
+
# noinspection RubyResolve
|
54
|
+
item.run = self
|
55
|
+
super
|
57
56
|
end
|
58
57
|
|
58
|
+
alias_method :<<, :add_item
|
59
|
+
|
59
60
|
def parent
|
60
61
|
nil
|
61
62
|
end
|
62
63
|
|
64
|
+
def parent=(_)
|
65
|
+
nil
|
66
|
+
end
|
67
|
+
|
63
68
|
end
|
64
69
|
|
65
70
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Libis
|
4
4
|
module Workflow
|
5
5
|
module Mongoid
|
6
|
-
VERSION = '2.0.beta.
|
6
|
+
VERSION = '2.0.beta.13' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'libis-workflow'
|
3
|
+
require_relative 'dynamic'
|
3
4
|
|
4
5
|
module Libis
|
5
6
|
module Workflow
|
@@ -7,15 +8,31 @@ module Libis
|
|
7
8
|
|
8
9
|
module WorkItemBase
|
9
10
|
|
11
|
+
class Options
|
12
|
+
include Libis::Workflow::Mongoid::Dynamic
|
13
|
+
embedded_in :work_item, class_name: Libis::Workflow::Mongoid::WorkItemBase.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
class Properties
|
17
|
+
include Libis::Workflow::Mongoid::Dynamic
|
18
|
+
embedded_in :work_item, class_name: Libis::Workflow::Mongoid::WorkItemBase.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
class Summary
|
22
|
+
include Libis::Workflow::Mongoid::Dynamic
|
23
|
+
embedded_in :work_item, class_name: Libis::Workflow::Mongoid::WorkItemBase.to_s
|
24
|
+
end
|
25
|
+
|
10
26
|
def self.included(klass)
|
11
27
|
klass.class_eval do
|
12
|
-
include
|
28
|
+
include Libis::Workflow::Base::WorkItem
|
13
29
|
include Libis::Workflow::Mongoid::Base
|
14
30
|
|
15
|
-
|
16
|
-
|
31
|
+
embeds_one :options, class_name: Libis::Workflow::Mongoid::WorkItemBase::Options.to_s
|
32
|
+
embeds_one :properties, class_name: Libis::Workflow::Mongoid::WorkItemBase::Properties.to_s
|
33
|
+
embeds_one :summary, class_name: Libis::Workflow::Mongoid::WorkItemBase::Summary.to_s
|
17
34
|
|
18
|
-
has_many :logs, as: :logger, class_name:
|
35
|
+
has_many :logs, as: :logger, class_name: Libis::Workflow::Mongoid::LogEntry.to_s,
|
19
36
|
dependent: :destroy, autosave: true, order: :_id.asc do
|
20
37
|
def log_history
|
21
38
|
where(:status.exists => false)
|
@@ -36,23 +53,30 @@ module Libis
|
|
36
53
|
document.logs.each { |log| log.destroy! }
|
37
54
|
end
|
38
55
|
|
39
|
-
|
56
|
+
set_callback(:initialize, :after) do |document|
|
57
|
+
document.options = {}
|
58
|
+
document.properties = {}
|
59
|
+
document.summary = {}
|
60
|
+
end
|
61
|
+
|
40
62
|
end
|
41
63
|
|
42
64
|
end
|
43
65
|
|
44
|
-
def
|
45
|
-
self.items.
|
66
|
+
def each
|
67
|
+
self.items.each { |item| yield item }
|
46
68
|
end
|
47
69
|
|
48
|
-
def
|
49
|
-
|
50
|
-
self.items << item
|
51
|
-
self.save!
|
52
|
-
self
|
70
|
+
def get_items
|
71
|
+
self.items.to_a
|
53
72
|
end
|
54
73
|
|
55
|
-
|
74
|
+
def item_count
|
75
|
+
self.items.count
|
76
|
+
end
|
77
|
+
|
78
|
+
alias_method :count, :item_count
|
79
|
+
alias_method :size, :item_count
|
56
80
|
|
57
81
|
def log_history
|
58
82
|
# noinspection RubyResolve
|
@@ -71,16 +95,9 @@ module Libis
|
|
71
95
|
self.logs.build(msg)
|
72
96
|
end
|
73
97
|
|
74
|
-
def add_status_log(
|
98
|
+
def add_status_log(info)
|
75
99
|
# noinspection RubyResolve
|
76
|
-
self.logs.build(
|
77
|
-
task: (tasklist.join('/') rescue nil),
|
78
|
-
status: message
|
79
|
-
)
|
80
|
-
end
|
81
|
-
|
82
|
-
def status_label(status_entry)
|
83
|
-
"#{status_entry[:task].split('/').last rescue nil}#{status_entry[:status] rescue nil}"
|
100
|
+
self.logs.build(info)
|
84
101
|
end
|
85
102
|
|
86
103
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'libis/workflow/worker'
|
4
|
+
require 'sidekiq'
|
4
5
|
|
5
6
|
module Libis
|
6
7
|
module Workflow
|
@@ -8,12 +9,11 @@ module Libis
|
|
8
9
|
|
9
10
|
class Worker < Libis::Workflow::Worker
|
10
11
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
workflow
|
12
|
+
def get_job(job_config)
|
13
|
+
job_name = job_config.delete(:name)
|
14
|
+
job = ::Libis::Workflow::Mongoid::Job.find(name: job_name).first
|
15
|
+
raise RuntimeError.new "Workflow #{job_name} not found" unless job.is_a? ::Libis::Workflow::Mongoid::Job
|
16
|
+
job
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
@@ -5,33 +5,35 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
|
6
6
|
require 'libis/workflow/mongoid/version'
|
7
7
|
|
8
|
-
Gem::Specification.new do |
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = 'libis-workflow-mongoid'
|
10
|
+
spec.version = ::Libis::Workflow::Mongoid::VERSION
|
11
|
+
spec.date = Date.today.to_s
|
12
|
+
|
13
|
+
spec.summary = %q{Mongoid persistence for the LIBIS Workflow framework.}
|
14
|
+
spec.description = %q{Class implementations that use Mongoid storage for the LIBIS Workflow framework.}
|
15
|
+
|
16
|
+
spec.author = 'Kris Dekeyser'
|
17
|
+
spec.email = 'kris.dekeyser@libis.be'
|
18
|
+
spec.homepage = 'https://github.com/libis/workflow-mongoid'
|
19
|
+
spec.license = 'MIT'
|
20
|
+
|
21
|
+
spec.platform = Gem::Platform::JAVA if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
22
|
+
|
23
|
+
spec.files = `git ls-files -z`.split("\0")
|
24
|
+
spec.executables = spec.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
25
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
|
+
|
27
|
+
spec.require_paths = ['lib']
|
28
|
+
|
29
|
+
spec.add_runtime_dependency 'libis-workflow', '~> 2.0.beta'
|
30
|
+
|
31
|
+
spec.add_runtime_dependency 'mongoid', '~> 5.0'
|
32
|
+
spec.add_runtime_dependency 'sidekiq'
|
33
|
+
|
34
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
35
|
+
spec.add_development_dependency 'rake'
|
36
|
+
spec.add_development_dependency 'rspec'
|
37
|
+
spec.add_development_dependency 'coveralls'
|
36
38
|
|
37
39
|
end
|
data/spec/tasks/camelize_name.rb
CHANGED
data/spec/tasks/collect_files.rb
CHANGED
data/spec/workflow_spec.rb
CHANGED
@@ -89,10 +89,25 @@ describe 'TestWorkflow' do
|
|
89
89
|
it 'should camelize the workitem name' do
|
90
90
|
|
91
91
|
expect(run.options['CollectFiles'][:location]).to eq dirname
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
92
|
+
|
93
|
+
def print_item(item, indent = 0)
|
94
|
+
puts "#{' ' * indent * 2} - #{item.name}"
|
95
|
+
item.get_items.each do |i|
|
96
|
+
print_item(i, indent + 1)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
print_item(run)
|
100
|
+
|
101
|
+
expect(run.count).to eq 1
|
102
|
+
expect(run.first.class).to eq TestDirItem
|
103
|
+
expect(run.first.count).to eq 4
|
104
|
+
expect(run.first.first.class).to eq TestFileItem
|
105
|
+
|
106
|
+
# the following tests do not work on Travis. Tried for days to find out why, but I give up.
|
107
|
+
# expect(run.get_items.count).to eq 1
|
108
|
+
# expect(run.get_items.first.class).to eq TestDirItem
|
109
|
+
# expect(run.get_items.first.count).to eq 4
|
110
|
+
# expect(run.get_items.first.get_items.first.class).to eq TestFileItem
|
96
111
|
|
97
112
|
run.items.first.each_with_index do |x, i|
|
98
113
|
expect(x.name).to eq %w'TestDirItem.rb TestFileItem.rb TestItem.rb TestRun.rb'[i]
|
@@ -101,14 +116,13 @@ describe 'TestWorkflow' do
|
|
101
116
|
|
102
117
|
it 'should return expected debug output' do
|
103
118
|
|
104
|
-
expect(run.summary[:DEBUG]).to eq
|
105
|
-
expect(run.log_history.count).to eq
|
106
|
-
expect(run.status_log.count).to eq
|
119
|
+
expect(run.summary[:DEBUG]).to eq 23
|
120
|
+
expect(run.log_history.count).to eq 8
|
121
|
+
expect(run.status_log.count).to eq 8
|
107
122
|
item = run.items.first
|
108
|
-
expect(item.log_history.count).to eq
|
109
|
-
expect(item.status_log.count).to eq
|
110
|
-
expect(item.summary[:DEBUG]).to eq
|
111
|
-
|
123
|
+
expect(item.log_history.count).to eq 15
|
124
|
+
expect(item.status_log.count).to eq 6
|
125
|
+
expect(item.summary[:DEBUG]).to eq 15
|
112
126
|
|
113
127
|
sample_out = <<STR
|
114
128
|
DEBUG -- CollectFiles - TestRun : Processing subitem (1/1): items
|
@@ -118,20 +132,22 @@ DEBUG -- CollectFiles - items : Processing subitem (3/4): test_item.rb
|
|
118
132
|
DEBUG -- CollectFiles - items : Processing subitem (4/4): test_run.rb
|
119
133
|
DEBUG -- CollectFiles - items : 4 of 4 subitems passed
|
120
134
|
DEBUG -- CollectFiles - TestRun : 1 of 1 subitems passed
|
121
|
-
DEBUG -- ProcessFiles - TestRun :
|
122
|
-
DEBUG -- ProcessFiles -
|
135
|
+
DEBUG -- ProcessFiles - TestRun : Running subtask (1/2): ChecksumTester
|
136
|
+
DEBUG -- ProcessFiles/ChecksumTester - TestRun : Processing subitem (1/1): items
|
123
137
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (1/4): test_dir_item.rb
|
124
138
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (2/4): test_file_item.rb
|
125
139
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (3/4): test_item.rb
|
126
140
|
DEBUG -- ProcessFiles/ChecksumTester - items : Processing subitem (4/4): test_run.rb
|
127
141
|
DEBUG -- ProcessFiles/ChecksumTester - items : 4 of 4 subitems passed
|
128
|
-
DEBUG -- ProcessFiles -
|
142
|
+
DEBUG -- ProcessFiles/ChecksumTester - TestRun : 1 of 1 subitems passed
|
143
|
+
DEBUG -- ProcessFiles - TestRun : Running subtask (2/2): CamelizeName
|
144
|
+
DEBUG -- ProcessFiles/CamelizeName - TestRun : Processing subitem (1/1): items
|
129
145
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (1/4): test_dir_item.rb
|
130
146
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (2/4): test_file_item.rb
|
131
147
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (3/4): test_item.rb
|
132
148
|
DEBUG -- ProcessFiles/CamelizeName - Items : Processing subitem (4/4): test_run.rb
|
133
149
|
DEBUG -- ProcessFiles/CamelizeName - Items : 4 of 4 subitems passed
|
134
|
-
DEBUG -- ProcessFiles - TestRun : 1 of 1 subitems passed
|
150
|
+
DEBUG -- ProcessFiles/CamelizeName - TestRun : 1 of 1 subitems passed
|
135
151
|
STR
|
136
152
|
sample_out = sample_out.lines.to_a
|
137
153
|
output = logoutput.string.lines
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-workflow-mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.beta.
|
4
|
+
version: 2.0.beta.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libis-workflow
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mongoid-indifferent-access
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: sidekiq
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,6 +127,7 @@ files:
|
|
141
127
|
- lib/libis/workflow/mongoid.rb
|
142
128
|
- lib/libis/workflow/mongoid/base.rb
|
143
129
|
- lib/libis/workflow/mongoid/config.rb
|
130
|
+
- lib/libis/workflow/mongoid/dynamic.rb
|
144
131
|
- lib/libis/workflow/mongoid/job.rb
|
145
132
|
- lib/libis/workflow/mongoid/log_entry.rb
|
146
133
|
- lib/libis/workflow/mongoid/run.rb
|