Deployment View

Fig. 13 and Fig. 14 show the structure of the raml2agl repository. Note that src/template/ directory holds all the templates that feed the Jinja2 Environment to generate the components also shown in the corresponding diagram.

@startuml

  folder "RAML2AGL Root Directory" {

    folder "src" {
      artifact "raml2agl.py" as raml2agl
      artifact "ramlParser.py" as raml_parser

      folder "templates" {

      }
    }
  }

  component "RAML Parser" as c_raml_parser
  component "raml2agl Main" as c_raml2agl

  raml_parser .down.> c_raml_parser : <<manifest>>
  raml2agl .down.> c_raml2agl : <<manifest>>

@enduml

Fig. 13 Deployment Diagram of RAML2AGL Root

@startuml

  folder "RAML2AGL Root Directory" {

    folder "src" {

      folder "templates" {
        folder "types/app" {
          artifact "WebSocketApi.cpp" as ws_c
          artifact "WebSocketApi.h" as ws_h
        }

        folder "app" {
          artifact "class_header.h (APP)" as app_class_h
          artifact "class_source.c (APP)" as app_class_c
        }

        folder "service" {
          artifact "class_header.h (Service)" as service_class_h
          artifact "class_source.c (Service)" as service_class_c
          artifact "agl_service.c" as agl_service
          artifact "macros.c"
        }
      }
    }
  }

  component "APP Class" as c_app_class
  component "Service Class" as c_service_class
  component "WebSocketApi" as c_ws
  component "AGL Service" as c_agl_service


  app_class_h .down.> c_app_class : <<manifest>>
  app_class_c .down.> c_app_class : <<manifest>>

  service_class_h .down.> c_service_class : <<manifest>>
  service_class_c .down.> c_service_class : <<manifest>>

  ws_h .down.> c_ws : <<manifest>>
  ws_c .down.> c_ws : <<manifest>>


  agl_service .down.> c_agl_service : <<manifest>>


@enduml

Fig. 14 Deployment Diagram of RAML2AGL Root (With Templates)

Moreover, the Application and Service source files are separately compiled and deployed at different abstraction layers within the AGL architecture. Fig. 15

@startuml

  node "Development Platform" {
    node "AGL" {
      rectangle "App/HMI" as app_layer {
        component "APP Class" as c_app_class
        component "WebSocketApi" as c_ws
      }

      rectangle "Services" as services_layer {
        component "Service Class" as c_service_class
        component "AGL Service" as c_agl_service
      }

       app_layer -(0-  services_layer


    }
  }

@enduml

Fig. 15 Deployment Diagram of RAML2AGL Root (Runtime)