A dependency-free library that defines the types used to describe platform components.
A platform is make up of services components and, optionally, services can be grouped into aggregates components. Each component has a descriptor: a java class that defines metadata about the component. This metadata is used by Creek to provide its functionality and can be used by other components. For example, the output of one component can be used to define the input of another.
Services should provide an implementation of ServiceDescriptor
to define key metadata needed by other components and the Creek system, including things like
inputs, internals, outputs, docker image name and any
environment variables to set during testing.
Each aggregate should provide an implementation of AggregateDescriptor
to define their public inputs and outputs.
Descriptors define, among other things, the components inputs, internals, outputs:
The inputs of a component define any external resources the component consumes/reads.
All input resources implement the ComponentInput
marker interface.
The internals of a component define any external resources the component uses internally to perform its function.
All internal resources implement the ComponentInternal
marker interface.
The outputs of a component define any external resources the component produces/writes.
All output resources implement the ComponentOutput
marker interface.