Describing a component
To fully support custom components in the AICA System, it is crucial to have a consistent means of describing individual components and the interfaces they provide. A machine-readable component description should contain all necessary information to procedurally generate documentation, frontend visualisations and backend services for any new component.
Components have various interfaces that need to be described:
- signals to send and receive data in the form of inputs and outputs
- parameters with specific types and names that define their behaviour
- services to trigger specific behaviors on request
- predicates that produce special "true / false" messages to indicate specific component states
Aside from interfaces, a component description should also include information on the type of component (regular or lifecycle), the general component behavior or purpose, and other metadata such as name and registration details.
The elements of a component description are written as a standardized JSON file for each component. The expected structure of the component description is defined by the Component Description JSON schema
JSON schemas for public AICA structures and syntax can be found in the schemas
directory of
the API repository on AICA GitHub.