diff options
author | Christoph Helma <helma@in-silico.ch> | 2012-07-06 16:44:12 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2012-07-06 16:44:12 +0200 |
commit | d8e72c6ff7ce2b147b6a11d233b80bbc8f1760d9 (patch) | |
tree | 3de7a8c4b15d25ef26313951f1575159139cb931 /lib/task.rb | |
parent | acc59960aa714f31cda12fd07510e48ed04727ee (diff) |
feature and task tests pass
Diffstat (limited to 'lib/task.rb')
-rw-r--r-- | lib/task.rb | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/lib/task.rb b/lib/task.rb index d45b0d2..f3f7f6b 100644 --- a/lib/task.rb +++ b/lib/task.rb @@ -8,13 +8,11 @@ module OpenTox def self.create service_uri, subjectid=nil, params={} - uri = RDF::URI.new File.join(service_uri,SecureRandom.uuid) + uri = File.join(service_uri,SecureRandom.uuid) task = Task.new uri, subjectid - task.rdf << RDF::Statement.new(uri, RDF.type, RDF::OT.Task) - task.rdf << RDF::Statement.new(uri, RDF::DC.date, RDF::Literal.new(DateTime.now)) - task.rdf << RDF::Statement.new(uri, RDF::OT.hasStatus, RDF::Literal.new("Running")) - params.each {|k,v| task.rdf << RDF::Statement.new(uri, k, v)} - task.save + task[RDF::OT.hasStatus] = "Running" + params.each { |k,v| task[k] = v } + task.put pid = fork do begin result_uri = yield @@ -53,24 +51,23 @@ module OpenTox end def description - pull - self.[](RDF::DC.description).uniq.first + self.[](RDF::DC.description) end def creator - pull - self.[](RDF::DC.creator).uniq.first + self.[](RDF::DC.creator) end def cancel kill - RestClientWrapper.put(File.join(@uri,'Cancelled'),{}) + self.[]=(RDF::OT.hasStatus, "Cancelled") + put end def completed(uri) - #puts uri - #not_found_error "Result URI \"#{uri}\" does not exist." unless URI.accessible? uri, @subjectid - RestClientWrapper.put(File.join(@uri,'Completed'),{:resultURI => uri}) + self.[]=(RDF::OT.resultURI, uri) + self.[]=(RDF::OT.hasStatus, "Completed") + put end # waits for a task, unless time exceeds or state is no longer running @@ -85,6 +82,7 @@ module OpenTox dur = [[(Time.new - start_time)/20.0,0.3].max,300.0].min time_out_error "max wait time exceeded ("+DEFAULT_TASK_MAX_DURATION.to_s+"sec), task: '"+@uri.to_s+"'" if (Time.new > due_to_time) end + get end end @@ -109,6 +107,7 @@ module OpenTox [:hasStatus, :resultURI].each do |method| define_method method do + get response = self.[](RDF::OT[method]) response = self.[](RDF::OT1[method]) unless response # API 1.1 compatibility response |