RS-FEM architecture
Overview
Feature management
microservice is a data repository in GeoJSON format.
Feature Management
responsibilities:
- Extract data references thanks to [IFeatureFactoryPlugins],
- Create, patch or delete data references,
- Re-notify stakeholders of existing data references,
- Delegate the storage of files (if any) to
Storage Management
.
To edit this repository, a data producer has to send requests.
At the moment, 2 API are available :
- Messaging API (AMQP) allows to publish creation, reference, patch, deletion and notification requests on specific exchanges.
- HTTP REST API allows to submit creation requests (as
POST
HTTP requests), update requests (asPATCH
HTTP requests) or deletion requests (asDELETE
HTTP requests).
Under the hood, those responsibilities are divided between two modules: featureprovider
and feature
. featureprovider
is only responsible for handling data references extraction requests, that is extraction of information needed from physical files to create a data reference that is then handled by the feature
module.
API are documented in detail below.
Request payload
Regardless of the API used, payload of each API is expected in GeoJSON format.
The basic structure is as follows :
- A required
id
, - A required
type
with valueFeature
, - An optional geometry in GeoJSON format,
- An optional set of
properties
.
{
"id": "FeatureId",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
125.6,
10.1
]
},
"properties": {
"name": "Dinagat Islands"
}
}
For the purposes of this microservice, GeoJSON structure is extended with following properties :
- An
urn
(uniform resource name as unique identifier) generated by the microservice when creating a new reference and expected only when updating a reference. - A required
model
representing the name of the model defining the expectedproperties
field structure (and previously configured). - A required
entityType
defining the reference business type. - An optional
files
property with a fixed structure that allows to store or reference physical data (service delegated to another microservice calledStorage Management
).
{
"id": "FeatureId",
"urn": "UniqueFeatureId",
"model": "RelatedModelName",
"entityType": "DATA",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
125.6,
10.1
]
},
"properties": {
"name": "Dinagat Islands"
},
"files": [
{
"locations": [
{
"storage": "DISK",
"url": "file://home/user/regards/file.zip"
}
],
"attributes": {
"dataType": "RAWDATA",
"mimeType": "application/zip",
"filename": "file.zip",
"filesize": "8013",
"algorithm": "MD5",
"checksum": "4e188bd8a6288164c25c3728ce394927"
}
}
]
}
Payload detailed properties
Feature
Path | Type | Description | Optional |
---|---|---|---|
id | String | Id from provider | |
urn | String | Unique feature identifer based on provider identifier with TEST:REQUEST:2342 |
Urn is only expected in update and deletion requests!
Files
Path | Type | Description | Optional |
---|---|---|---|
locations[].storage | String | Storage | true |
locations[].url | String | Url location | |
attributes.dataType | String | RAWDATA, QUICKLOOK_SD, QUICKLOOK_MD, QUICKLOOK_HD, DOCUMENT, THUMBNAIL, DESCRIPTION | |
attributes.mimeType | String | MIME type | |
attributes.filename | String | Filename | |
attributes.filesize | Number | File size | true |
attributes.algorithm | String | Checksum algorithm | true |
attributes.checksum | String | Checksum | true |
Algorithm & cheksum are required if data have to be stored by Storage Management
.
Request metadata
As the payload, regardless of the API used, metadata is often associated with a request.
Metadata detailed properties
Path | Type | Description | Optional |
---|---|---|---|
metadata.override | Boolean | Indicate wether the previous version should be deleted | true |
metadata.session | String | Arbitrary session name to classify data for human operators | |
metadata.sessionOwner | String | Arbitrary session owner to classify data for human operators | |
metadata.storages | Array | Target storages if there are files to store (may be empty!) | true |
metadata.storages[].pluginBusinessId | String | Storage plugin identifier (previously configured in Storage Management | |
metadata.storages[].targetTypes | Array | List of data object types accepted by this storage location | true |
metadata.storages[].storePath | String | Directory in which to store the file | true |
metadata.priority | String | HIGH, NORMAL, LOW |
override should only be specified with Extraction or Creation requests.