class Pione::Agent::JobManager
Attributes
package[R]
instance method
Public Class Methods
new(tuple_space, env, package, param_set, stream)
click to toggle source
Calls superclass method
# File lib/pione/agent/job-manager.rb, line 13 def initialize(tuple_space, env, package, param_set, stream) unless env.entrance_rule name = env.entrance_rule_name raise JobError.new("Entrance rule `%s` not found in the package." % name) end super(tuple_space) @tuple_space = tuple_space @env = env @package = package @param_set = param_set @stream = stream @package_id = @env.current_package_id end
Public Instance Methods
transit_to_init()
click to toggle source
transitions
# File lib/pione/agent/job-manager.rb, line 43 def transit_to_init # split parameter set as package toplvel's and main's toplevel_variable_names = @env.variable_table.select_names_by(@env, @env.current_package_id) toplevel_param_set = @param_set.filter(toplevel_variable_names) main_param_set = @param_set.delete_all(toplevel_variable_names) # merge the toplevel parameter set @env.merge_param_set(toplevel_param_set, force: true) # setup root rule root_definition = @env.make_root_rule(main_param_set) @rule_condition = root_definition.rule_condition_context.eval(@env) # share my environment write(TupleSpace::EnvTuple.new(@env.dumpable)) # need to be dumpable # collect tuple space attributes @request_from = @tuple_space.attribute("request_from") @session_id = @tuple_space.attribute("session_id") @client_ui = @tuple_space.attribute("client_ui") end
transit_to_run()
click to toggle source
# File lib/pione/agent/job-manager.rb, line 69 def transit_to_run finder = RuleEngine::DataFinder.new(@tuple_space, 'root') list = finder.to_enum(:find, :input, @rule_condition.inputs, @env).to_a if list.empty? user_message "error: no inputs" terminate else # call root rule of the current package list.each do |env, inputs| engine_param = { :tuple_space => @tuple_space, :env => @env, :package_id => @env.current_package_id, :rule_name => "Root", :inputs => inputs, :param_set => Lang::ParameterSet.new, :domain_id => 'root', :caller_id => nil, :request_from => @request_from, :session_id => @session_id, :client_ui => @client_ui } RuleEngine.make(engine_param).handle || terminate end end # terminate if the agent is not stream mode terminate unless @stream return end
transit_to_sleep()
click to toggle source
# File lib/pione/agent/job-manager.rb, line 65 def transit_to_sleep take(TupleSpace::CommandTuple.new("start-root-rule", nil)) end