Gropius Export¶
Gropius is an open-source cross-component issue management system for component-based architectures. In order to enable managing cross-component dependencies, users can model component-based software architectures in a Gropius project, e.g. via the API. For more details on Gropius visit the GitHub Page.
For configuration options of the export please check out the configurations page.
Data Model¶
The data model of Gropius consists of components which can be specified with templates as well as relations between those components, also configurable via templates. A component must have a component and a repository-URL in order to be added to a project, which resembles an architecture.
CLARA components are mapped to Gropius-components like this:
CLARA Metamodel | Gropius Metamodel |
---|---|
InternalComponent | Component |
InternalComponent.Name | Component.Name |
InternalComponent.IpAddress | Component.Description |
InternalComponent.Version | Component.ComponentVersion |
InternalComponent.Namespace | MISSING |
InternalComponent.Endpoints | MISSING (Note, that Gropius is capable of modeling interfaces, yet due to a lack of time this is not performed in the current work.) |
MISSING | Component.RepositoryURL (Example URL) |
InternalComponent.Type | Component.ComponentTemplate |
Type.Database | Database Temp. |
Type.Microservice | Microservice Temp. |
Type.Messaging | Messaging Temp. |
null | Base Component Temp. |
InternalComponent.Libraries | Components |
Library.Version | Component.ComponentVersion |
Library.Name | Component.Name |
Library.Name | Component.Description |
MISSING | Component.ComponentTemplate (Library Temp.) |
InternalComponent.Library | Relation |
InternalComponent.Version | Relation.Start |
Library.Version | Relation.End |
MISSING | Relation.RelationTemplate (Includes Temp.) |
ExternalComponent | Component |
ExternalComponent.Name | Component.Name |
ExternalComponent.Domain | Component.Description |
ExternalComponent.Type | Component.ComponentTemplate (Misc Temp.) |
ExternalComponent.Version | Component.ComponentVersion |
Communication | Relation |
Communication.Source.Version | Relation.Start |
Communication.Target.Version | Relation.End |
MISSING | Relation.RelationTemplate (Calls Temp.) |
The Gropius GraphQL API is utilized by CLARA in order to export the recovered architectures into a Gropius project.
Export Flow¶
The export works sketched like this based on the respective configuration:
- for all components recovered by CLARA:
- delete or update component
- create or update component version
- add component version to project
- add relations for all components
For all CRUD operations there are predefined GraphQL queries which are transformed into Kotlin Models using this GraphQl gradle plugin and executed using this GraphQL Kotlin Spring client. The GraphQL queries are located in the clara-graphql directory.