Technologies
Technologies describe a certain library or framework that is used in the expanded project to implement a concern.
E.g. we could introduce a technology APACHE SOLR
used to implement a search engine.
<dataResource type="elements::Technology">
<technology name="APACHE SOLR">
<subdir>solr</subdir>
<concernType name="SEARCH ENGINE"/>
<description>https://lucene.apache.org/solr/</description>
</technology>
</dataResource>
Both concernType and description are only there as information for the developers. The concernType is a reference to a predefined ConcernType instance (see below). Subdir will define the name of the subdirectory created for generated and external files for this technology.
LayerImplementation
We can combine a Technology and a LayerType into a LayerImplementation. This allows us to add source directories for that technology, as well as add Runtime Dependencies.
E.g. we can add a layerImplementation for Solr
in the data layer:
<dataResource type="elements::LayerImplementation">
<layerImplementation name="Solr Search">
<technology name="APACHE SOLR"/>
<layerType name="DATA_LAYER"/>
<condition>component.getOption('solr.includeSearch').defined</condition>
<layerSources>
<layerSource name="sources">
<sourceType name="SRC"/>
</layerSource>
<layerSource name="resources">
<sourceType name="RESOURCE"/>
</layerSource>
</layerSources>
</layerImplementation>
</dataResource>
- Condition describes when the layerImplementation should be added. This is decided on component level.
- LayerSources defines which sourceTypes can be included for this technology. It will create a subdirectory for ext and gen in the corresponding layer. The name of the subdirectory is decided by the subdir defined in the technology.
- LayerDependencies define which libraries should be added to the build. The names refer to instances of libraries, described below.
ConcernType
New concerns can be added as follows:
<dataResource type="elements::ConcernType">
<concernType name="SEARCH ENGINE">
<description>Implements indexing of data and provides advanced search functionality</description>
</concernType>
</dataResource>
Concern types are purely descriptive and don't add any functional differences.