A workflow is the combination of multiple Glue objects and describes the flow of the data from the source (e.g. a SAP table) all the way down the target (e.g. a Glue table).
Create workflows
Using POST /workflow API is possible to mass generate workflows ready to be executed.
Global parameters
Parameter name | Description | Usage | Type |
---|---|---|---|
SourceObjectName | Array with the list of SAP source objects for which to generate the replication objects | Mandatory | String |
SourceObjectType | The type of SAP object to read from. Currently supporting ADSO and SAP tables | Mandatory | "table/view" | ”ADSO” |
GlueTableSett | Parameters for Glue table generation, mandatory for “standard” and “FIFOAsynch” ExecutionType | Optional | JSON object (see below) |
ext2Sett | Parameters for Extractors 2.0 generation | Mandatory | JSON object (see below) |
asyncExec | Execute generation in a background job (Asynchronous) | Optional | ‘’ or ‘X’ |
skipExisting | Skip generation of existing objects | Optional | ‘’ or ‘X’ |
GlueTableSett: Glue table generation parameter object
Parameter name | Description | Usage | Type |
---|---|---|---|
prefix | Object prefix | Mandatory | String |
suffix | Object suffix | Optional | String |
devclass | Package for object | Mandatory | String |
storID | Storage ID | Mandatory | String |
meaningFields | Meaningful fieldname | Optional | Boolean |
meaningValues | Speaking field values | Optional | Boolean |
glRequest | Add Glue Request field | Optional | Boolean |
glRequestAsKey | Add Glue request as a key | Optional | Boolean |
CSVFolderName | File storage folder name | Obligatory in case of file storages | String, default “<GLUE_TABNAME>” |
CSVDelimiter | File storage – Delimiter type | Obligatory in case of file storages | String |
CSVQuotes | File storage – Put values into quotes | Optional | Boolean |
CSVEscaping | File storage – Use extended escaping | Optional | Boolean |
CSVHeader | File storage – Include table header | Optional | Boolean |
CSVOneFile | File storage – One file extraction | Optional | Boolean |
CSVCompress | File storage – Compress file | Optional | Boolean |
CSVCompressLevel | File storage – Compression level | Optional | Int |
ext2Sett: Glue Extractor 2.0
Parameter name | Description | Usage | Type |
---|---|---|---|
prefix | Object prefix, must start with Z | Mandatory | String |
suffixFetcher | Fetcher suffix | Optional | String, default “_F“ |
suffixConsumer | Consumer suffix | Optional | String, default “_C” |
suffixProcess | Extraction process suffix | Optional | String, default “_P” |
devclass | Package for object | Mandatory | String |
deltaType | Delta type, with generate endpoint only trigger and full are possible, different modes can be enabled using PATCH process endpoint | Mandatory | “FULL“ | “TRIGGER“ |
loadType | The default load type, can be changed at execution time | Mandatory | “F“ | ”D” | ”I” | ”L” |
keyFieldsFilter | Add key fields as a selection parameter | Optional | Boolean |
noActivation | Do not activate objects | Optional | Boolean |
useDeduplication | Use deduplication | Optional | Boolean |
All input parameters are case insensitive.
Example of REST API call:
POST | http://servername:portnumber/dvd/glue/api/v3_1/workflows?sap-client=800 |
---|
JSON body:
{ "SourceObjectType": "table/view", "SourceObjectName": [ "SFLIGHT" ], "GlueTableSett": { "prefix": "Z_", "devclass": "ZPACKAGE", "storID":"AWS_S3", "glRequest": "", "glRequestAsKey": "" }, "ext2Sett": { "prefix": "Z_", "devclass": "ZPACKAGE", "suffixFetcher": "_F", "suffixConsumer": "_C", "suffixProcess": "_P", "deltaType": "FULL", "loadType": "F" } }
Example of the REST API output:
{ "message": [ { "msgtype": "S", "text": "Generating Glue table 1 for Table/View SFLIGHT..." }, { "msgtype": "S", "text": "Glue table Z_SFLIGHT generated successfully." }, { "msgtype": "S", "text": "Generating Extractor2.0 1 for Glue table Z_SFLIGHT..." }, { "msgtype": "S", "text": "Extractor2.0 object Z_SFLIGHT_F generated successfully." }, { "msgtype": "S", "text": "Extractor2.0 object Z_SFLIGHT_C generated successfully." }, { "msgtype": "S", "text": "Extractor2.0 object Z_SFLIGHT_P generated successfully." } ] }
If the job is scheduled in the background (async generation), the HTTP response code will be set to 200 with information about the generated SAP job
“200 Generation scheduled under Job name - ZDVD_GLUE_OBJ_GEN_MCHOMA”
Functionality is implemented in the SAP class /DVD/GL_EXT2_API_GENERATE.
Error handling
Every error message is raised via code 400. The reason for the error is also provided; however further investigation might be needed on the SAP side.
Delete workflows
Resource DELETE /workflows serve as a mass deletion function for Glue objects.
It supports the following input parameters:
Global parameters
Parameter name | Description | Usage | Type |
---|---|---|---|
ObjectName | Array with the list of GLUE objects for deletion (Glue Tables and Extractor 2.0 objects) | Mandatory | String |
All input parameters are case insensitive.
Example of REST API call:
DELETE | http://servername:portnumber/dvd/glue/api/v3_1/workflows?sap-client=800 |
---|
JSON body:
{ "objectName": [ "ZMCH_SFLIGHT_F", "ZMCH_SFLIGHT", "ZMCH_SFLIGHT_FIFO_C", "ZMCH_SFLIGHT_1_P", "ZMCH_SFLIGHT_FIFO_F", "ZMCH_SFLIGHT_C", "ZMCH_SFLIGHT_2_P", "ZMCH_SFLIGHT_F" ] }
Example of the REST API output:
{ "message": [ { "msgtype": "S", "text": "Fetcher ZMCH_SFLIGHT_F deleted successfuly." }, { "msgtype": "S", "text": "Glue table ZMCH_SFLIGHT deleted successfuly." }, { "msgtype": "S", "text": "Consumer ZMCH_SFLIGHT_FIFO_C deleted successfuly." }, { "msgtype": "S", "text": "Process ZMCH_SFLIGHT_1_P deleted successfuly." }, { "msgtype": "S", "text": "Fetcher ZMCH_SFLIGHT_FIFO_F deleted successfuly." }, { "msgtype": "S", "text": "Consumer ZMCH_SFLIGHT_C deleted successfuly." }, { "msgtype": "E", "text": "ZMCH_SFLIGHT_2_P object was not deleted or it doesnt exist." }, { "msgtype": "E", "text": "ZMCH_SFLIGHT_F object was not deleted or it doesnt exist." } ] }
Functionality is implemented in the SAP class /DVD/GL_EXT2_API_DELETE_OBJ.
Error handling
Every error message is raised via code 400. The reason for the error is also provided; however, further investigation might be needed on the SAP side.