Module: Pione::RuleEngine

Defined in:
lib/pione/rule-engine.rb,
lib/pione/rule-engine/data-finder.rb,
lib/pione/rule-engine/flow-handler.rb,
lib/pione/rule-engine/root-handler.rb,
lib/pione/rule-engine/basic-handler.rb,
lib/pione/rule-engine/empty-handler.rb,
lib/pione/rule-engine/action-handler.rb,
lib/pione/rule-engine/system-handler.rb,
lib/pione/rule-engine/update-criteria.rb,
lib/pione/rule-engine/engine-exception.rb

Overview

RuleEngine is a namespace for rule engine classes.

Defined Under Namespace

Modules: UpdateCriteria Classes: ActionError, ActionHandler, ActionShellScript, BasicHandler, DataFinder, EmptyHandler, FlowHandler, InvalidOutputError, RootHandler, RuleApplication, RuleExecutionError, SystemHandler, Task, UnknownRule, WorkingDirectory

Constant Summary collapse

HANDLER =

Relation from rule definition to the handler.

{
  Lang::FlowRuleDefinition   => FlowHandler,
  Lang::ActionRuleDefinition => ActionHandler,
  Lang::EmptyRuleDefinition  => EmptyHandler,
  Lang::RootRuleDefinition   => RootHandler
}

Class Method Summary collapse

Class Method Details

.make(param) ⇒ Object

Make a rule handler with target rule's informations.

Parameters:

Options Hash (param):

  • :package_id (String)

    package ID

  • :rule_name (String)

    rule name

  • :inputs (Array)

    input data

  • :param_set (Object)

    parameter set

  • :domain_id (String)

    domain ID

  • :caller_id (String)

    caller ID

  • :request_from (URI)

    URI that the client requested the job from

  • :session_id (String)

    session ID



41
42
43
44
45
46
47
48
49
50
51
52
53
# 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