API Documentation
This is automatically-generated documentation of the API extracted from the structured comments in the code base.
Documentation Quality
We are aware that the current generated documentation might be confusing or overwhelming for the new developers since it still lacks structure and no entry points are clearly visible.
At the moment (August 2020), we are working on an introductory document to give you an overview of the code structure and how individual parts fit together.
Entry Point
Current entry point to the program is: AasxPackageExplorer.App. This class parses the command-line arguments and instantiates the AasxPackageExplorer.MainWindow.
The graphical user interface (GUI) is implemented in the namespace AasxPackageExplorer.
Data Model
The data model of the AASX lives in the AdminShellNS namespace. Any changes and extensions to the data model should go there.
Since the data model is still evolving (August 2020), we put the code responsible for managing the legacy data models (e.g., AASX V1.0) to the namespace AasxCompatibilityModels.
The pre-defined concepts (such as VDI 2770) reside in the namespace AasxPredefinedConcepts.
Package Signatures
Package signatures (e.g., using X.509 standard) are handled in the namespace AasxSignature.
Clients
AASX Package Explorer uses various clients to communicate with the external
sources. The clients are compartmentalized in the individual *Client
namespaces (e.g., AasxMqttClient and
AasxOpenIdClient).
Imports and Exports
Imports and exports from different data formats are handled in *ImExport
namespaces such as AasxAmlImExport and
AasxUANodesetImExport.
Plug-ins
AASX Package Explorer uses plug-ins to reduce the size of the different binary releases. For example, a plug-in web browser (AasxPluginWebBrowser) is pretty heavy in size (about 60 Mb), but many users do not actually need it. Hence they can download a much skinnier release without the browser (only about 2 Mb).
The namespace AasxIntegrationBase provides all the functionality needed to integrate the plug-ins.
AasxToolkit Program
Apart from the main AASX Package Explorer, we include an additional program, AasxToolkit, to generate and manipulate AASX packages from the command line. This program is also a good entry point if you want to see how you can perform operations on AASX in code (rather than using a GUI tool).
What is a REST Server Doing Here?
It might seem confusing that we include a REST server in the application ( AasxRestConsoleServer and AasxRestServerLibrary). The rationale behind this inclusion is to make the demonstrations and local tests simple & easy.
However, from the software engineering point of view, this code does not really belong to the Package Explorer and should be refactored out of it. We are currently (August 2020) working on packaging AASX Server in such a way that AASX Package Explorer can use it directly as a dependency (e.g., as a NuGet package). As soon as we packaged the AASX Server, we will remove these server-related bits from this code base.