Class: ZenRuby::ZenDecisionResult

Inherits:
Struct
  • Object
show all
Defined in:
lib/zen-engine-ruby.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#detailsObject

Returns the value of attribute details

Returns:

  • (Object)

    the current value of details



242
243
244
# File 'lib/zen-engine-ruby.rb', line 242

def details
  @details
end

#errorObject

Returns the value of attribute error

Returns:

  • (Object)

    the current value of error



242
243
244
# File 'lib/zen-engine-ruby.rb', line 242

def error
  @error
end

#error_codeObject

Returns the value of attribute error_code

Returns:

  • (Object)

    the current value of error_code



242
243
244
# File 'lib/zen-engine-ruby.rb', line 242

def error_code
  @error_code
end

#resultObject

Returns the value of attribute result

Returns:

  • (Object)

    the current value of result



242
243
244
# File 'lib/zen-engine-ruby.rb', line 242

def result
  @result
end

Class Method Details

.from_raw_result(raw_result) ⇒ Object



260
261
262
263
264
265
266
# File 'lib/zen-engine-ruby.rb', line 260

def self.from_raw_result(raw_result)
  if raw_result[:error] == 0
    ZenDecisionResult.new(raw_result[:result], false, 0, nil)
  else
    ZenDecisionResult.new(nil, true, raw_result[:error], raw_result[:details].null? ? nil : raw_result[:details].read_string)
  end
end

Instance Method Details

#evaluate(context, trace: false, max_depth: 10) ⇒ Object



243
244
245
246
247
248
249
250
251
252
253
254
# File 'lib/zen-engine-ruby.rb', line 243

def evaluate(context, trace: false, max_depth: 10)
  if error
    raise "Error evaluating decision for #{key}: #{error_code} #{details}"
  end

  evaluation_options = ZenEngineEvaluationOptions.new
  evaluation_options[:trace] = trace
  evaluation_options[:max_depth] = max_depth

  raw_result = ZenRuby.zen_decision_evaluate(result, context.to_json, evaluation_options)
  ZenRuby::Result.from_raw_result(raw_result)
end

#evaluate!Object



256
257
258
# File 'lib/zen-engine-ruby.rb', line 256

def evaluate!(...)
  ZenRuby.unwrap_result!(evaluate(...))
end