Class: Dor::WorkflowDs
- Inherits:
-
ActiveFedora::OmDatastream
- Object
- ActiveFedora::OmDatastream
- Dor::WorkflowDs
- Defined in:
- lib/dor/datastreams/workflow_ds.rb
Overview
TODO: class docs
Class Method Summary collapse
-
.default_attributes ⇒ Object
Called by rubydora.
Instance Method Summary collapse
-
#build_location ⇒ Object
Called before saving, but after a pid has been assigned.
-
#content(refresh = false) ⇒ Object
service.
-
#current_priority ⇒ Integer
Finds the first workflow that is expedited, then returns the value of its priority.
- #get_workflow(wf, repo = 'dor') ⇒ Object (also: #[])
- #ng_xml ⇒ Object
-
#prefix ⇒ Object
maintain AF < 8 indexing behavior.
- #to_solr(solr_doc = {}, *args) ⇒ Object
- #workflows ⇒ Object
Class Method Details
.default_attributes ⇒ Object
Called by rubydora. This lets us customize the mime-type
30 31 32 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 30 def self.default_attributes super.merge(mimeType: 'application/xml') end |
Instance Method Details
#build_location ⇒ Object
Called before saving, but after a pid has been assigned
23 24 25 26 27 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 23 def build_location return unless new? self.dsLocation = File.join(Dor::Config.workflow.url, "dor/objects/#{pid}/workflows") end |
#content(refresh = false) ⇒ Object
service. This flag will invalidate the cached content and refetch it from the workflow service directly
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 51 def content(refresh = false) @content = nil if refresh @content ||= Dor::Config.workflow.client.get_workflow_xml 'dor', pid, nil rescue Dor::WorkflowException xml = Nokogiri::XML(%(<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<workflows objectId="#{pid}"/>)) digital_object.datastreams.keys.each do |dsid| next unless dsid =~ /WF$/ ds_content = Nokogiri::XML(Dor::Config.workflow.client.get_workflow_xml('dor', pid, dsid)) xml.root.add_child(ds_content.root) end @content ||= xml.to_xml end |
#current_priority ⇒ Integer
Finds the first workflow that is expedited, then returns the value of its priority
72 73 74 75 76 77 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 72 def current_priority cp = workflows.detect(&:expedited?) return 0 if cp.nil? cp.priority.to_i end |
#get_workflow(wf, repo = 'dor') ⇒ Object Also known as: []
34 35 36 37 38 39 40 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 34 def get_workflow(wf, repo = 'dor') xml = Dor::Config.workflow.client.get_workflow_xml(repo, pid, wf) xml = Nokogiri::XML(xml) return nil if xml.xpath('workflow').length == 0 Workflow::Document.new(xml.to_s) end |
#ng_xml ⇒ Object
44 45 46 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 44 def ng_xml @ng_xml ||= Nokogiri::XML::Document.parse(content) end |
#prefix ⇒ Object
maintain AF < 8 indexing behavior
86 87 88 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 86 def prefix '' end |
#to_solr(solr_doc = {}, *args) ⇒ Object
79 80 81 82 83 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 79 def to_solr(solr_doc = {}, *args) # super solr_doc, *args workflows.each { |wf| solr_doc = wf.to_solr(solr_doc, *args) } solr_doc end |