Class: Dor::WorkflowDs
- Inherits:
-
ActiveFedora::OmDatastream
- Object
- ActiveFedora::OmDatastream
- Dor::WorkflowDs
- Includes:
- SolrDocHelper
- Defined in:
- lib/dor/datastreams/workflow_ds.rb
Instance Method Summary collapse
- #[](wf) ⇒ Object
- #content ⇒ Object
-
#current_priority ⇒ Integer
Finds the first workflow that is expedited, then returns the value of its priority.
- #ensure_xml_loaded ⇒ Object
- #get_workflow(wf, repo = 'dor') ⇒ Object
- #graph(dir = nil) ⇒ Object
-
#initialize(*args) ⇒ WorkflowDs
constructor
A new instance of WorkflowDs.
- #ng_xml ⇒ Object
- #to_solr(solr_doc = Hash.new, *args) ⇒ Object
- #workflows ⇒ Object
Methods included from SolrDocHelper
Constructor Details
#initialize(*args) ⇒ WorkflowDs
Returns a new instance of WorkflowDs.
20 21 22 23 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 20 def initialize *args self.field_mapper = UtcDateFieldMapper.new super end |
Instance Method Details
#[](wf) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 35 def [](wf) xml=Dor::WorkflowService.get_workflow_xml('dor', self.pid, wf) xml=Nokogiri::XML(xml) if xml.xpath('workflow').length == 0 nil else Workflow::Document.new(xml.to_s) end end |
#content ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 54 def content begin @content ||= Dor::WorkflowService.get_workflow_xml 'dor', self.pid, nil rescue RestClient::ResourceNotFound xml = Nokogiri::XML(%{<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<workflows objectId="#{self.pid}"/>}) self.digital_object.datastreams.keys.each do |dsid| if dsid =~ /WF$/ ds_content = Nokogiri::XML(Dor::WorkflowService.get_workflow_xml 'dor', self.pid, dsid) xml.root.add_child(ds_content.root) end end @content ||= xml.to_xml end end |
#current_priority ⇒ Integer
Finds the first workflow that is expedited, then returns the value of its priority
90 91 92 93 94 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 90 def current_priority cp = workflows.detect {|wf| wf.expedited? } return 0 if(cp.nil?) cp.priority.to_i end |
#ensure_xml_loaded ⇒ Object
45 46 47 48 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 45 def ensure_xml_loaded ng_xml self.xml_loaded = true end |
#get_workflow(wf, repo = 'dor') ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 25 def get_workflow (wf,repo='dor') xml=Dor::WorkflowService.get_workflow_xml(repo, self.pid, wf) xml=Nokogiri::XML(xml) if xml.xpath('workflow').length == 0 nil else Workflow::Document.new(xml.to_s) end end |
#graph(dir = nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 73 def graph(dir=nil) result = GraphViz.digraph(self.pid) sg = result.add_graph('rank') { |g| g[:rank => 'same'] } workflows.each do |wf| wf_name = wf.workflowId.first unless wf.nil? g = wf.graph(result) sg.add_node(g.root.id) unless g.nil? end end result['rankdir'] = dir || 'TB' result end |
#ng_xml ⇒ Object
50 51 52 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 50 def ng_xml @ng_xml ||= Nokogiri::XML::Document.parse(content) end |
#to_solr(solr_doc = Hash.new, *args) ⇒ Object
96 97 98 99 100 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 96 def to_solr(solr_doc=Hash.new, *args) # super solr_doc, *args self.workflows.each { |wf| wf.to_solr(solr_doc, *args) } solr_doc end |