Skip to content
This repository has been archived by the owner on Mar 5, 2020. It is now read-only.

Architecture

Legion2 edited this page Nov 25, 2018 · 8 revisions

Hardware

The hardware architecture of our system is based on a Master-Slave concept, with one Master and a number of slaves. Our software will be the same on the master and the slaves, just configured differently. On the master there is also a MQTT message broker. The communication between all Nodes is done with MQTT.

Hardware Diagram

Software

Logical architecture Diagram

The Core creates the Service Container and deploys common services, additionally all Services from the Deployment descriptor META-INF/io.github.amyassist.amy.core.di.Services on the classpath are deployed. This Services can come from other jars on the classpath or from classes that was packed into the main jar.

After that the plugins are loaded. This means a Classloader is created to access all classes and resources from the plugin. The Classloader is used to deploy all Services of the plugins to the Service Container.

Then the Core triggers the deploy callback, so Services that implement this callback gets called. Middleware can be configured and from the main Classloader and/or from the plugins Classloader components can be deployed to Container of the Middleware or Containers managed by the Adapter. The Components can use services from the Service Container. It is up to the Adapter how the Components can access Services. One way is to use dependency injection.

Now the application is fully loaded and can be started. Core triggers the start callback.

Components

Component Diagram

Logical architecture Diagram of the JAX-RS integration

Classes

Detailed information about the classes can be found in the JavaDoc.