Class: DecisionAgent::Dmn::Importer

Inherits:
Object
  • Object
show all
Defined in:
lib/decision_agent/dmn/importer.rb

Overview

Imports DMN XML files into DecisionAgent

Instance Method Summary collapse

Constructor Details

#initialize(version_manager: nil) ⇒ Importer

Returns a new instance of Importer.



12
13
14
# File 'lib/decision_agent/dmn/importer.rb', line 12

def initialize(version_manager: nil)
  @version_manager = version_manager || Versioning::VersionManager.new
end

Instance Method Details

#import(file_path, ruleset_name: nil, created_by: "system") ⇒ Hash

Import DMN file

Parameters:

  • file_path (String)

    Path to DMN XML file

  • ruleset_name (String, nil) (defaults to: nil)

    Optional custom ruleset name

  • created_by (String) (defaults to: "system")

    User who imported

Returns:

  • (Hash)

    Import result with model and version info



21
22
23
24
# File 'lib/decision_agent/dmn/importer.rb', line 21

def import(file_path, ruleset_name: nil, created_by: "system")
  xml_content = File.read(file_path)
  import_from_xml(xml_content, ruleset_name: ruleset_name, created_by: created_by)
end

#import_from_xml(xml_content, ruleset_name: nil, created_by: "system") ⇒ Object

Import from XML string



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/decision_agent/dmn/importer.rb', line 27

def import_from_xml(xml_content, ruleset_name: nil, created_by: "system")
  # Parse DMN XML
  parser = Parser.new(xml_content)
  model = parser.parse

  # Validate model
  validator = Validator.new(model)
  validator.validate!

  # Convert to JSON rules
  results = convert_model_to_rules(model)

  # Store in versioning system
  versions = store_in_versioning(results, ruleset_name, created_by)

  {
    model: model,
    rules: results,
    versions: versions,
    decisions_imported: results.size
  }
end