Skip to main content
Version: 1.15

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 (as PATCH HTTP requests) or deletion requests (as DELETE HTTP requests).

Feature management architectural concepts

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 :

{
"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 expected properties 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 called Storage 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

PathTypeDescriptionOptional
idStringId from provider
urnStringUnique feature identifer based on provider identifier with TEST:REQUEST:2342
danger

Urn is only expected in update and deletion requests!

Files

PathTypeDescriptionOptional
locations[].storageStringStoragetrue
locations[].urlStringUrl location
attributes.dataTypeStringRAWDATA, QUICKLOOK_SD, QUICKLOOK_MD, QUICKLOOK_HD, DOCUMENT, THUMBNAIL, DESCRIPTION
attributes.mimeTypeStringMIME type
attributes.filenameStringFilename
attributes.filesizeNumberFile sizetrue
attributes.algorithmStringChecksum algorithmtrue
attributes.checksumStringChecksumtrue
danger

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

PathTypeDescriptionOptional
metadata.overrideBooleanIndicate wether the previous version should be deletedtrue
metadata.sessionStringArbitrary session name to classify data for human operators
metadata.sessionOwnerStringArbitrary session owner to classify data for human operators
metadata.storagesArrayTarget storages if there are files to store (may be empty!)true
metadata.storages[].pluginBusinessIdStringStorage plugin identifier (previously configured in Storage Management
metadata.storages[].targetTypesArrayList of data object types accepted by this storage locationtrue
metadata.storages[].storePathStringDirectory in which to store the filetrue
metadata.priorityStringHIGH, NORMAL, LOW
danger

override should only be specified with Extraction or Creation requests.