dor-workflow-service 1.3.3 → 1.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.
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ gemspec
5
5
 
6
6
  if RUBY_VERSION < '1.9'
7
7
  gem 'activesupport', "< 4.0"
8
+ gem 'nokogiri', "< 1.6"
8
9
  end
9
10
 
10
11
  group :development do
@@ -91,17 +91,28 @@ module Dor
91
91
  # Get workflow names into an array for given PID
92
92
  # This method only works when this gem is used in a project that is configured to connect to DOR
93
93
  #
94
- # @param [string] pid of druid
95
- #
96
- # @return [array] list of worklows
97
- # e.g.
98
- # Dor::WorkflowService.get_workflows('druid:sr100hp0609')
99
- # => ["accessionWF", "assemblyWF", "disseminationWF"]
94
+ # @param [String] pid of druid
95
+ # @return [Array<String>] list of worklows
96
+ # @example Dor::WorkflowService.get_workflows('druid:sr100hp0609')
97
+ # => ["accessionWF", "assemblyWF", "disseminationWF"]
100
98
  def get_workflows(pid)
101
99
  xml_doc=Nokogiri::XML(get_workflow_xml('dor',pid,''))
102
100
  return xml_doc.xpath('//workflow').collect {|workflow| workflow['id']}
103
101
  end
104
102
 
103
+ # Get active workflow names into an array for given PID
104
+ # This method only works when this gem is used in a project that is configured to connect to DOR
105
+ #
106
+ # @param [String] repo repository of the object
107
+ # @param [String] pid id of object
108
+ # @return [Array<String>] list of active worklows. Returns an empty Array if none are found
109
+ # @example Dor::WorkflowService.get_workflows('dor', 'druid:sr100hp0609')
110
+ # => ["accessionWF", "assemblyWF", "disseminationWF"]
111
+ def get_active_workflows(repo, pid)
112
+ doc = Nokogiri::XML(get_workflow_xml(repo,pid,''))
113
+ doc.xpath( %(//workflow[not(process/@archived)]/@id ) ).map {|n| n.value}
114
+ end
115
+
105
116
  # Updates the status of one step in a workflow to error.
106
117
  # Returns true on success. Caller must handle any exceptions
107
118
  #
@@ -248,6 +259,13 @@ module Dor
248
259
  return Nokogiri::XML(lifecycle_xml)
249
260
  end
250
261
 
262
+ def archive_active_workflow(repo, druid)
263
+ workflows = get_active_workflows(repo, druid)
264
+ workflows.each do |wf|
265
+ archive_workflow(repo, druid, wf,)
266
+ end
267
+ end
268
+
251
269
  def archive_workflow(repo, druid, wf_name, version_num=nil)
252
270
  raise "Please call Dor::WorkflowService.configure(workflow_service_url, :dor_services_url => DOR_SERVIES_URL) once before archiving workflow" if(@@dor_services_url.nil?)
253
271
 
@@ -1,7 +1,7 @@
1
1
  module Dor
2
2
  module Workflow
3
3
  module Service
4
- VERSION = "1.3.3"
4
+ VERSION = "1.4.0"
5
5
  end
6
6
  end
7
7
  end
@@ -242,4 +242,23 @@ describe Dor::WorkflowService do
242
242
  end
243
243
  end
244
244
 
245
+ describe ".get_active_workflows" do
246
+ it "it returns an array of active workflows only" do
247
+ xml = <<-XML
248
+ <workflows objectId="druid:mw971zk1113">
249
+ <workflow repository="dor" objectId="druid:mw971zk1113" id="accessionWF">
250
+ <process priority="0" lifecycle="submitted" elapsed="0.0" attempts="1" datetime="2013-02-18T15:08:10-0800" status="completed" name="start-accession"/>
251
+ </workflow>
252
+ <workflow repository="dor" objectId="druid:mw971zk1113" id="assemblyWF">
253
+ <process version="1" priority="0" elapsed="0.0" archived="true" attempts="1" datetime="2013-02-18T14:40:25-0800" status="completed" name="start-assembly"/>
254
+ <process version="1" priority="0" elapsed="0.509" archived="true" attempts="1" datetime="2013-02-18T14:42:24-0800" status="completed" name="jp2-create"/>
255
+ </workflow>
256
+ </workflows>
257
+ XML
258
+
259
+ Dor::WorkflowService.stub(:get_workflow_xml) { xml }
260
+ expect(Dor::WorkflowService.get_active_workflows('dor', 'druid:mw971zk1113')).to eq(['accessionWF'])
261
+ end
262
+ end
263
+
245
264
  end
metadata CHANGED
@@ -1,139 +1,158 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-workflow-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.4.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Willy Mene
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-10-15 00:00:00.000000000 Z
12
+ date: 2013-11-16 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: nokogiri
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rest-client
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: confstruct
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - '>='
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '0'
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - '>='
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '0'
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rake
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - '>='
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: '0'
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - '>='
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: rspec
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: yard
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
- - - '>='
115
+ - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
- - - '>='
123
+ - - ! '>='
109
124
  - !ruby/object:Gem::Version
110
125
  version: '0'
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: redcarpet
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
- - - '>='
131
+ - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '0'
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
- - - '>='
139
+ - - ! '>='
123
140
  - !ruby/object:Gem::Version
124
141
  version: '0'
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: equivalent-xml
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
- - - '>='
147
+ - - ! '>='
130
148
  - !ruby/object:Gem::Version
131
149
  version: '0'
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
- - - '>='
155
+ - - ! '>='
137
156
  - !ruby/object:Gem::Version
138
157
  version: '0'
139
158
  description: Enables Ruby manipulation of the DOR Workflow Service via its REST API
@@ -159,26 +178,27 @@ files:
159
178
  - spec/workflow_service_spec.rb
160
179
  homepage: https://consul.stanford.edu/display/DOR/DOR+services#DORservices-initializeworkflow
161
180
  licenses: []
162
- metadata: {}
163
181
  post_install_message:
164
182
  rdoc_options: []
165
183
  require_paths:
166
184
  - lib
167
185
  required_ruby_version: !ruby/object:Gem::Requirement
186
+ none: false
168
187
  requirements:
169
- - - '>='
188
+ - - ! '>='
170
189
  - !ruby/object:Gem::Version
171
190
  version: '0'
172
191
  required_rubygems_version: !ruby/object:Gem::Requirement
192
+ none: false
173
193
  requirements:
174
- - - '>='
194
+ - - ! '>='
175
195
  - !ruby/object:Gem::Version
176
196
  version: '0'
177
197
  requirements: []
178
198
  rubyforge_project:
179
- rubygems_version: 2.0.3
199
+ rubygems_version: 1.8.25
180
200
  signing_key:
181
- specification_version: 4
201
+ specification_version: 3
182
202
  summary: Provides convenience methods to work with the DOR Workflow Service
183
203
  test_files:
184
204
  - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 1d6fc3e584fe89a00011d92d20c3808bdbb7a9fe
4
- data.tar.gz: 1f9c905de65222b5b1bcf85faa9a0caeb4b03054
5
- SHA512:
6
- metadata.gz: a93219741feb1dfed55872d75a97c6822debb2781b3b7aedf90daeb03bd28155baca5ec823d223fde63f5ce76aa0684505df5c35f90d750b815a0380b682897e
7
- data.tar.gz: 2165204dc1a3b3c14dc9fa8c555e7959a6bcbc134d752bdae29023828fdd97c8fce9ce384b1facdc4c0b4716cd6824271151d2a4e2d774f286c415371a13143f