module Pione::RuleEngine

RuleEngine is a namespace for rule engine classes.

Constants

HANDLER

Relation from rule definition to the handler.

Public Class Methods

make(param) click to toggle source

Make a rule handler with target rule’s informations.

@param [Hash.new] param @option param [String] :package_id

package ID

@option param [String] :rule_name

rule name

@option param [Array] :inputs

input data

@option param [Object] :param_set

parameter set

@option param [String] :domain_id

domain ID

@option param [String] :caller_id

caller ID

@option param [URI] :request_from

URI that the client requested the job from

@option param [String] :session_id

session ID
# File lib/pione/rule-engine.rb, line 41
def self.make(param)
  # check requisite parameters
  requisites = [:tuple_space, :env, :package_id, :rule_name, :inputs, :param_set, :domain_id, :caller_id]
  requisites.each do |requisite|
    unless param.has_key?(requisite)
      raise ArgumentError.new("parameter '%s' is requisite for rule engine." % requisite)
    end
  end

  # make a rule handler
  rule_definition = param[:env].rule_get(Lang::RuleExpr.new(param[:rule_name], param[:package_id]))
  HANDLER[rule_definition.class].new(param.merge(rule_definition: rule_definition))
end