The Data Handling flow handles all kind of data requests. These can be asset queries, asset data or asset file requests from the cenArio web client. Data transformation and calculation is also possible.

Asset Data Handling

The asset data request flow via the GraphQL APIs:

  1. cenArio sends a URL with a GraphQL request to cenTaur.
  2. The Cloud Gateway forwards all GraphQL requests to the GraphQL Gateway.
  3. The GraphQL Gateway forwards the GraphQL request to the appropriate GraphQL endpoint. Currently, the GraphQL Asset API is the only endpoint.
  4. The GraphQL Asset API determines the requested GraphQL schema. 
  5. Each field of the GraphQL schema has a so-called resolver assigned. This resolver is responsible to deliver the data for the assigned field. The resolvers are called by the GraphQL Asset API.
  6. The GraphQL Asset API collects the replies from the resolvers and returns the data. It only delivers the requested data that are defined in the GraphQL Schema. This guarantees a fast response and high performance.

The GraphQL API uses the following services in the resolvers to handle the request:

  • Query Service: Executes complex asset queries and returns a set of asset IDs. Currently, the Query Service translates these queries and sends them to the censhare Server via the Legacy Bridge.
  • Direct call: A resolver can directly send requests to the censhare Server via the Legacy Bridge. For example, a resolver asks for asset properties for a given asset ID.
  • Asset Management: Responsible for all CRUD operations (Create, Read, Update, Delete) related to assets and asset relations. Currently, the Asset Management forwards the request to the censhare Server via the Legacy Bridge.
  • Business Logic functions: Besides microservices, functionality in cenTaur can also be implemented by Business Logic functions, so-called Lambda functions. A resolver can call such a Lambda function for a given task. For example, there is a Lambda function to calculate option lists.

File Data Handling

The flow for downloading an asset file:

  1. cenario sends an URL request for an asset file. For example, the master file.
  2. The Cloud Gateway forwards the GraphQL request to the GraphQL Gateway.
  3. The GraphQL Gateway forwards the request to the GraphQL Asset API.
  4. The GraphQL Asset API asks the File Microservice for the file URL in the Amazon S3 compatible File System.
  5. The File Microservice uses the asset ID to ask the censhare Server for the path of the master file in the file system. This path is stored in the asset data.
  6. The File Service converts that path into a presigned URL that can be used to download the file directly from the File System.
  7. cenArio uses this presigned URL to access the File System directly. If the File System is MinIO, the download request is routed through the Cloud Gateway first. Files on Amazon S3 are requested directly.

The flow for uploading a file:

  1. cenArio requests a URL to upload a file to cenTaur.
  2. The Cloud Gateway forwards the GraphQL request to the GraphQL Gateway.
  3. The GraphQL Gateway forwards the request to the GraphQL Asset API.
  4. The GraphQL Asset API asks the File Microservice for an URL where to store the file in the Amazon S3 compatible File System.
  5. The File Microservice returns an URL to cenArio.
  6. cenArio uses this URL to upload the file to the File System.

Using a Hot Folder:

  1. An external system uploads a file to a Hot Folder in the file system. This is typically an FTP Server.
  2. The File Microservice detects that a file is uploaded into a Hot Folder.
  3. The File Microservice creates a message and publishes it in the Message Hub to a topic.
  4. Other microservices, business logic functions, or business flows that listen to that topic, can react on it. For example, an asset is created from the uploaded file.