Module: DMN
- Defined in:
- lib/dmn.rb,
lib/dmn/rule.rb,
lib/dmn/input.rb,
lib/dmn/output.rb,
lib/dmn/version.rb,
lib/dmn/decision.rb,
lib/dmn/variable.rb,
lib/dmn/definitions.rb,
lib/dmn/configuration.rb,
lib/dmn/decision_table.rb,
lib/dmn/information_requirement.rb
Defined Under Namespace
Classes: Configuration, Decision, DecisionTable, Definitions, EvaluationError, InformationRequirement, Input, Output, Rule, SyntaxError, Variable
Constant Summary
collapse
- VERSION =
"0.2.0"
Class Method Summary
collapse
Class Method Details
.config ⇒ Object
59
60
61
|
# File 'lib/dmn.rb', line 59
def self.config
@config ||= Configuration.new
end
|
63
64
65
|
# File 'lib/dmn.rb', line 63
def self.configure
yield(config)
end
|
.decide(decision_id, definitions: nil, definitions_json: nil, definitions_xml: nil, variables: {}) ⇒ Object
42
43
44
45
46
47
48
49
|
# File 'lib/dmn.rb', line 42
def self.decide(decision_id, definitions: nil, definitions_json: nil, definitions_xml: nil, variables: {})
if definitions_xml.present?
definitions = DMN::Definitions.from_xml(definitions_xml)
elsif definitions_json.present?
definitions = DMN::Definitions.from_json(definitions_json)
end
definitions.evaluate(decision_id, variables: variables)
end
|
.definitions_from_json(json) ⇒ Object
55
56
57
|
# File 'lib/dmn.rb', line 55
def self.definitions_from_json(json)
DMN::Definitions.from_json(json)
end
|
.definitions_from_xml(xml) ⇒ Object
51
52
53
|
# File 'lib/dmn.rb', line 51
def self.definitions_from_xml(xml)
DMN::Definitions.from_xml(xml)
end
|
.evaluate(expression_text, variables: {}) ⇒ Object
30
31
32
33
34
|
# File 'lib/dmn.rb', line 30
def self.evaluate(expression_text, variables: {})
literal_expression = FEEL::LiteralExpression.new(text: expression_text)
raise SyntaxError, "Expression is not valid" unless literal_expression.valid?
literal_expression.evaluate(variables)
end
|
.test(input, unary_tests_text, variables: {}) ⇒ Object
36
37
38
39
40
|
# File 'lib/dmn.rb', line 36
def self.test(input, unary_tests_text, variables: {})
unary_tests = FEEL::UnaryTests.new(text: unary_tests_text)
raise SyntaxError, "Unary tests are not valid" unless unary_tests.valid?
unary_tests.test(input, variables)
end
|